diff options
| author | David Majnemer <david.majnemer@gmail.com> | 2014-04-10 07:37:33 +0000 |
|---|---|---|
| committer | David Majnemer <david.majnemer@gmail.com> | 2014-04-10 07:37:33 +0000 |
| commit | 7788033be626836f2543a63ab2150e287418cba5 (patch) | |
| tree | d2920c0b74e8b1ec11bc3dbb41265cfc3a5e545c /llvm/lib/Support | |
| parent | 220c0d1f5ed2abcf00b583acf5782dfcdace0812 (diff) | |
| download | bcm5719-llvm-7788033be626836f2543a63ab2150e287418cba5.tar.gz bcm5719-llvm-7788033be626836f2543a63ab2150e287418cba5.zip | |
YAMLIO: Allow scalars to dictate quotation rules
Introduce ScalarTraits::mustQuote which determines whether or not a
StringRef needs quoting before it is acceptable to output.
llvm-svn: 205955
Diffstat (limited to 'llvm/lib/Support')
| -rw-r--r-- | llvm/lib/Support/YAMLTraits.cpp | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/llvm/lib/Support/YAMLTraits.cpp b/llvm/lib/Support/YAMLTraits.cpp index f46f140abd8..e5f94947ff8 100644 --- a/llvm/lib/Support/YAMLTraits.cpp +++ b/llvm/lib/Support/YAMLTraits.cpp @@ -285,7 +285,7 @@ void Input::endBitSetScalar() { } } -void Input::scalarString(StringRef &S) { +void Input::scalarString(StringRef &S, bool) { if (ScalarHNode *SN = dyn_cast<ScalarHNode>(CurrentNode)) { S = SN->value(); } else { @@ -541,10 +541,7 @@ void Output::endBitSetScalar() { this->outputUpToEndOfLine(" ]"); } -void Output::scalarString(StringRef &S) { - const char ScalarSafeChars[] = "abcdefghijklmnopqrstuvwxyz" - "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-/^., \t"; - +void Output::scalarString(StringRef &S, bool MustQuote) { this->newLineCheck(); if (S.empty()) { // Print '' for the empty string because leaving the field empty is not @@ -552,11 +549,8 @@ void Output::scalarString(StringRef &S) { this->outputUpToEndOfLine("''"); return; } - bool isOctalString = S.front() == '0' && S.size() > 2 && !S.startswith("0x"); - if (S.find_first_not_of(ScalarSafeChars) == StringRef::npos && - !isspace(S.front()) && !isspace(S.back()) && !isOctalString) { - // If the string consists only of safe characters, print it out without - // quotes. + if (!MustQuote) { + // Only quote if we must. this->outputUpToEndOfLine(S); return; } |

