summaryrefslogtreecommitdiffstats
path: root/func/yaml/inline.py
diff options
context:
space:
mode:
Diffstat (limited to 'func/yaml/inline.py')
-rw-r--r--func/yaml/inline.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/func/yaml/inline.py b/func/yaml/inline.py
new file mode 100644
index 0000000..d4f6439
--- /dev/null
+++ b/func/yaml/inline.py
@@ -0,0 +1,44 @@
+"""
+pyyaml legacy
+Copyright (c) 2001 Steve Howell and Friends; All Rights Reserved
+(see open source license information in docs/ directory)
+"""
+
+import re
+import string
+
+class InlineTokenizer:
+ def __init__(self, data):
+ self.data = data
+
+ def punctuation(self):
+ puncts = [ '[', ']', '{', '}' ]
+ for punct in puncts:
+ if self.data[0] == punct:
+ self.data = self.data[1:]
+ return punct
+
+ def up_to_comma(self):
+ match = re.match('(.*?)\s*, (.*)', self.data)
+ if match:
+ self.data = match.groups()[1]
+ return match.groups()[0]
+
+ def up_to_end_brace(self):
+ match = re.match('(.*?)(\s*[\]}].*)', self.data)
+ if match:
+ self.data = match.groups()[1]
+ return match.groups()[0]
+
+ def next(self):
+ self.data = string.strip(self.data)
+ productions = [
+ self.punctuation,
+ self.up_to_comma,
+ self.up_to_end_brace
+ ]
+ for production in productions:
+ token = production()
+ if token:
+ return token
+