Lines Matching refs:self
9 def __init__(self, data):
15 self.data = data+'\0'
16 self.index = 0
17 self.tokens = []
18 self.scanned = False
20 def check_token(self, *choices):
21 if not self.scanned:
22 self.scan()
23 if self.tokens:
27 if isinstance(self.tokens[0], choice):
31 def peek_token(self):
32 if not self.scanned:
33 self.scan()
34 if self.tokens:
35 return self.tokens[0]
37 def get_token(self, choice=None):
38 if not self.scanned:
39 self.scan()
40 token = self.tokens.pop(0)
45 def get_token_value(self):
46 token = self.get_token()
49 def scan(self):
50 self.tokens.append(yaml.StreamStartToken(None, None))
52 self.find_token()
53 ch = self.data[self.index]
55 self.tokens.append(yaml.StreamEndToken(None, None))
58 self.tokens.append(self.scan_directive())
59 elif ch == '-' and self.data[self.index:self.index+3] == '---':
60 self.index += 3
61 self.tokens.append(yaml.DocumentStartToken(None, None))
63 self.index += 1
64 self.tokens.append(yaml.FlowSequenceStartToken(None, None))
66 self.index += 1
67 self.tokens.append(yaml.FlowMappingStartToken(None, None))
69 self.index += 1
70 self.tokens.append(yaml.FlowSequenceEndToken(None, None))
72 self.index += 1
73 self.tokens.append(yaml.FlowMappingEndToken(None, None))
75 self.index += 1
76 self.tokens.append(yaml.KeyToken(None, None))
78 self.index += 1
79 self.tokens.append(yaml.ValueToken(None, None))
81 self.index += 1
82 self.tokens.append(yaml.FlowEntryToken(None, None))
84 self.tokens.append(self.scan_alias())
86 self.tokens.append(self.scan_tag())
88 self.tokens.append(self.scan_scalar())
91 self.scanned = True
95 def scan_directive(self):
96 if self.data[self.index:self.index+len(self.DIRECTIVE)] == self.DIRECTIVE and \
97 self.data[self.index+len(self.DIRECTIVE)] in ' \n\0':
98 self.index += len(self.DIRECTIVE)
103 def scan_alias(self):
104 if self.data[self.index] == '*':
108 self.index += 1
109 start = self.index
110 while self.data[self.index] not in ', \n\0':
111 self.index += 1
112 value = self.data[start:self.index]
115 def scan_tag(self):
116 self.index += 1
117 start = self.index
118 while self.data[self.index] not in ' \n\0':
119 self.index += 1
120 value = self.data[start:self.index]
156 def scan_scalar(self):
157 self.index += 1
159 start = self.index
161 while self.data[self.index] != '"':
162 if self.data[self.index] == '\\':
164 chunks.append(self.data[start:self.index])
165 self.index += 1
166 ch = self.data[self.index]
167 self.index += 1
170 elif ch in self.QUOTE_CODES:
171 length = self.QUOTE_CODES[ch]
172 code = int(self.data[self.index:self.index+length], 16)
174 self.index += length
176 if ch not in self.QUOTE_REPLACES:
178 chunks.append(self.QUOTE_REPLACES[ch])
179 start = self.index
180 elif self.data[self.index] == '\n':
181 chunks.append(self.data[start:self.index])
183 self.index += 1
184 start = self.index
186 elif ignore_spaces and self.data[self.index] == ' ':
187 self.index += 1
188 start = self.index
191 self.index += 1
192 chunks.append(self.data[start:self.index])
193 self.index += 1
196 def find_token(self):
199 while self.data[self.index] in ' \t':
200 self.index += 1
201 if self.data[self.index] == '#':
202 while self.data[self.index] != '\n':
203 self.index += 1
204 if self.data[self.index] == '\n':
205 self.index += 1
211 def __init__(self):
212 self.events = []
213 self.parsed = False
215 def dispose(self):
219 def parse_stream(self):
220 self.get_token(yaml.StreamStartToken)
221 self.events.append(yaml.StreamStartEvent(None, None))
222 while not self.check_token(yaml.StreamEndToken):
223 if self.check_token(yaml.DirectiveToken, yaml.DocumentStartToken):
224 self.parse_document()
226 raise CanonicalError("document is expected, got "+repr(self.tokens[0]))
227 self.get_token(yaml.StreamEndToken)
228 self.events.append(yaml.StreamEndEvent(None, None))
231 def parse_document(self):
233 if self.check_token(yaml.DirectiveToken):
234 self.get_token(yaml.DirectiveToken)
235 self.get_token(yaml.DocumentStartToken)
236 self.events.append(yaml.DocumentStartEvent(None, None))
237 self.parse_node()
238 self.events.append(yaml.DocumentEndEvent(None, None))
241 def parse_node(self):
242 if self.check_token(yaml.AliasToken):
243 self.events.append(yaml.AliasEvent(self.get_token_value(), None, None))
246 if self.check_token(yaml.AnchorToken):
247 anchor = self.get_token_value()
249 if self.check_token(yaml.TagToken):
250 tag = self.get_token_value()
251 if self.check_token(yaml.ScalarToken):
252 self.events.append(yaml.ScalarEvent(anchor, tag, (False, False), self.get_token_value(), None, None))
253 elif self.check_token(yaml.FlowSequenceStartToken):
254 self.events.append(yaml.SequenceStartEvent(anchor, tag, None, None))
255 self.parse_sequence()
256 elif self.check_token(yaml.FlowMappingStartToken):
257 self.events.append(yaml.MappingStartEvent(anchor, tag, None, None))
258 self.parse_mapping()
260 raise CanonicalError("SCALAR, '[', or '{' is expected, got "+repr(self.tokens[0]))
263 def parse_sequence(self):
264 self.get_token(yaml.FlowSequenceStartToken)
265 if not self.check_token(yaml.FlowSequenceEndToken):
266 self.parse_node()
267 while not self.check_token(yaml.FlowSequenceEndToken):
268 self.get_token(yaml.FlowEntryToken)
269 if not self.check_token(yaml.FlowSequenceEndToken):
270 self.parse_node()
271 self.get_token(yaml.FlowSequenceEndToken)
272 self.events.append(yaml.SequenceEndEvent(None, None))
275 def parse_mapping(self):
276 self.get_token(yaml.FlowMappingStartToken)
277 if not self.check_token(yaml.FlowMappingEndToken):
278 self.parse_map_entry()
279 while not self.check_token(yaml.FlowMappingEndToken):
280 self.get_token(yaml.FlowEntryToken)
281 if not self.check_token(yaml.FlowMappingEndToken):
282 self.parse_map_entry()
283 self.get_token(yaml.FlowMappingEndToken)
284 self.events.append(yaml.MappingEndEvent(None, None))
287 def parse_map_entry(self):
288 self.get_token(yaml.KeyToken)
289 self.parse_node()
290 self.get_token(yaml.ValueToken)
291 self.parse_node()
293 def parse(self):
294 self.parse_stream()
295 self.parsed = True
297 def get_event(self):
298 if not self.parsed:
299 self.parse()
300 return self.events.pop(0)
302 def check_event(self, *choices):
303 if not self.parsed:
304 self.parse()
305 if self.events:
309 if isinstance(self.events[0], choice):
313 def peek_event(self):
314 if not self.parsed:
315 self.parse()
316 return self.events[0]
321 def __init__(self, stream):
324 CanonicalScanner.__init__(self, stream)
325 CanonicalParser.__init__(self)
326 yaml.composer.Composer.__init__(self)
327 yaml.constructor.Constructor.__init__(self)
328 yaml.resolver.Resolver.__init__(self)