summaryrefslogtreecommitdiff
path: root/scalarstring.py
diff options
context:
space:
mode:
authorAnthon van der Neut <anthon@mnt.org>2018-08-23 07:11:21 +0200
committerAnthon van der Neut <anthon@mnt.org>2018-08-23 07:11:21 +0200
commit109fcc2deebb23025e17d981de1bd29669b33e9a (patch)
tree9a6f5b7a38ff7b28514a30f72f94223441402d73 /scalarstring.py
parent9673bc2b6008461b3e5bcb21cad925730e92baab (diff)
downloadruamel.yaml-109fcc2deebb23025e17d981de1bd29669b33e9a.tar.gz
fix #158 folded scalars not roundtripping0.15.61
Diffstat (limited to 'scalarstring.py')
-rw-r--r--scalarstring.py25
1 files changed, 20 insertions, 5 deletions
diff --git a/scalarstring.py b/scalarstring.py
index 0bc3c47..a701f11 100644
--- a/scalarstring.py
+++ b/scalarstring.py
@@ -9,9 +9,11 @@ if False: # MYPY
__all__ = [
'ScalarString',
- 'PreservedScalarString',
+ 'LiteralScalarString',
+ 'FoldedScalarString',
'SingleQuotedScalarString',
'DoubleQuotedScalarString',
+ 'PreservedScalarString',
]
@@ -27,7 +29,7 @@ class ScalarString(text_type):
return type(self)((text_type.replace(self, old, new, maxreplace)))
-class PreservedScalarString(ScalarString):
+class LiteralScalarString(ScalarString):
__slots__ = 'comment' # the comment after the | on the first line
style = '|'
@@ -37,6 +39,19 @@ class PreservedScalarString(ScalarString):
return ScalarString.__new__(cls, value)
+PreservedScalarString = LiteralScalarString
+
+
+class FoldedScalarString(ScalarString):
+ __slots__ = ('fold_pos', 'comment') # the comment after the > on the first line
+
+ style = '>'
+
+ def __new__(cls, value):
+ # type: (Text) -> Any
+ return ScalarString.__new__(cls, value)
+
+
class SingleQuotedScalarString(ScalarString):
__slots__ = ()
@@ -59,11 +74,11 @@ class DoubleQuotedScalarString(ScalarString):
def preserve_literal(s):
# type: (Text) -> Text
- return PreservedScalarString(s.replace('\r\n', '\n').replace('\r', '\n'))
+ return LiteralScalarString(s.replace('\r\n', '\n').replace('\r', '\n'))
def walk_tree(base, map=None):
- # type: (Any) -> None
+ # type: (Any, Any) -> None
"""
the routine here walks over a simple yaml tree (recursing in
dict values and list items) and converts strings that
@@ -95,7 +110,7 @@ def walk_tree(base, map=None):
for idx, elem in enumerate(base):
if isinstance(elem, string_types):
for ch in map:
- if ch in elem:
+ if ch in elem: # type: ignore
base[idx] = map[ch](elem)
break
else: