Kirill Simonov avatar Kirill Simonov committed 8f9ca0e

Raise an error for colons in the flow context.

Comments (0)

Files changed (3)

-PyYAML3000 - The next generation YAML parser for Python.
+PyYAML 3000 - The next generation YAML parser and emitter for Python.
 
 To install, type 'python setup.py install'.
 
-For more information, check 'http://pyyaml.org/wiki/PyYAML'.
+For more information, check the PyYAML homepage:
+'http://pyyaml.org/wiki/PyYAML'.
 
 Post your questions and opinions to the YAML-Core mailing list:
 'http://lists.sourceforge.net/lists/listinfo/yaml-core'.
 
-PyYAML3000 is written by Kirill Simonov <xi@resolvent.net>. It is released
+Submit bug reports and feature requests to the PyYAML bug tracker:
+'http://pyyaml.org/newticket?component=pyyaml'.
+
+PyYAML 3000 is written by Kirill Simonov <xi@resolvent.net>. It is released
 under the MIT license. See the file LICENSE for more details.

lib/yaml/scanner.py

                         or (self.flow_level and ch in u',:?[]{}'):
                     break
                 length += 1
+            # It's not clear what we should do with ':' in the flow context.
+            if (self.flow_level and ch == u':'
+                    and self.peek(length+1) not in u'\0 \t\r\n\x28\u2028\u2029,[]{}'):
+                self.forward(length)
+                raise ScannerError("while scanning a plain scalar", start_mark,
+                    "found unexpected ':'", self.get_mark(),
+                    "Please check http://pyyaml.org/wiki/YAMLColonInFlowContext for details.")
             if length == 0:
                 break
             self.allow_simple_key = False

tests/data/colon-in-flow-context.loader-error

+{ foo:bar }
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.