123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- #ifndef SCANSCALAR_H_62B23520_7C8E_11DE_8A39_0800200C9A66
- #define SCANSCALAR_H_62B23520_7C8E_11DE_8A39_0800200C9A66
- #if defined(_MSC_VER) || \
- (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \
- (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4
- #pragma once
- #endif
- #include <string>
- #include "regex_yaml.h"
- #include "stream.h"
- namespace YAML {
- enum CHOMP { STRIP = -1, CLIP, KEEP };
- enum ACTION { NONE, BREAK, THROW };
- enum FOLD { DONT_FOLD, FOLD_BLOCK, FOLD_FLOW };
- struct ScanScalarParams {
- ScanScalarParams()
- : end(nullptr),
- eatEnd(false),
- indent(0),
- detectIndent(false),
- eatLeadingWhitespace(0),
- escape(0),
- fold(DONT_FOLD),
- trimTrailingSpaces(0),
- chomp(CLIP),
- onDocIndicator(NONE),
- onTabInIndentation(NONE),
- leadingSpaces(false) {}
- // input:
- const RegEx* end; // what condition ends this scalar?
- // unowned.
- bool eatEnd; // should we eat that condition when we see it?
- int indent; // what level of indentation should be eaten and ignored?
- bool detectIndent; // should we try to autodetect the indent?
- bool eatLeadingWhitespace; // should we continue eating this delicious
- // indentation after 'indent' spaces?
- char escape; // what character do we escape on (i.e., slash or single quote)
- // (0 for none)
- FOLD fold; // how do we fold line ends?
- bool trimTrailingSpaces; // do we remove all trailing spaces (at the very
- // end)
- CHOMP chomp; // do we strip, clip, or keep trailing newlines (at the very
- // end)
- // Note: strip means kill all, clip means keep at most one, keep means keep
- // all
- ACTION onDocIndicator; // what do we do if we see a document indicator?
- ACTION onTabInIndentation; // what do we do if we see a tab where we should
- // be seeing indentation spaces
- // output:
- bool leadingSpaces;
- };
- std::string ScanScalar(Stream& INPUT, ScanScalarParams& info);
- }
- #endif // SCANSCALAR_H_62B23520_7C8E_11DE_8A39_0800200C9A66
|