def yaml_events(self, value, show_comments, show_choices): """Create a mapping event list, based on the values given.""" if value is None: value = dict() events = list() events.append(yaml.MappingStartEvent(anchor=None, tag=None, implicit=True)) if show_comments: comment = self._sub_elem.make_comment( show_choices=show_choices, show_name=False) events.append(yaml.CommentEvent(value=comment)) if value: for key, val in value.items(): # Add the mapping key. events.append(yaml.ScalarEvent(value=key, anchor=None, tag=None, implicit=(True, True))) # Add the mapping value. events.extend( self._sub_elem.yaml_events( val, show_comments, show_choices)) events.append(yaml.MappingEndEvent()) return events
def yaml_events(self, value, show_comments, show_choices): if value is None: value = dict() events = list() events.append(yaml.MappingStartEvent(anchor=None, tag=None, implicit=True)) for key, elem in self.config_elems.items(): if elem.hidden: continue # Don't output anything for Derived Elements if isinstance(elem, DerivedElem): continue val = value.get(key, None) if show_comments: comment = elem.make_comment(show_choices=show_choices) events.append(yaml.CommentEvent(value=comment)) # Add the mapping key events.append(yaml.ScalarEvent(value=key, anchor=None, tag=None, implicit=(True, True))) # Add the mapping value events.extend(elem.yaml_events(val, show_comments, show_choices)) events.append(yaml.MappingEndEvent()) return events
def parse_node(self): if self.check_token(yaml.AliasToken): self.events.append( yaml.AliasEvent(self.get_token_value(), None, None)) else: anchor = None if self.check_token(yaml.AnchorToken): anchor = self.get_token_value() tag = None if self.check_token(yaml.TagToken): tag = self.get_token_value() if self.check_token(yaml.ScalarToken): self.events.append( yaml.ScalarEvent(anchor, tag, (False, False), self.get_token_value(), None, None)) elif self.check_token(yaml.FlowSequenceStartToken): self.events.append( yaml.SequenceStartEvent(anchor, tag, None, None)) self.parse_sequence() elif self.check_token(yaml.FlowMappingStartToken): self.events.append( yaml.MappingStartEvent(anchor, tag, None, None)) self.parse_mapping() else: raise CanonicalError("SCALAR, '[', or '{' is expected, got " + repr(self.tokens[0]))
def test_emitter_styles(data_filename, canonical_filename, verbose=False): for filename in [data_filename, canonical_filename]: events = list(yaml.parse(open(filename, 'rb'))) for flow_style in [False, True]: for style in ['|', '>', '"', '\'', '']: styled_events = [] for event in events: if isinstance(event, yaml.ScalarEvent): event = yaml.ScalarEvent(event.anchor, event.tag, event.implicit, event.value, style=style) elif isinstance(event, yaml.SequenceStartEvent): event = yaml.SequenceStartEvent(event.anchor, event.tag, event.implicit, flow_style=flow_style) elif isinstance(event, yaml.MappingStartEvent): event = yaml.MappingStartEvent(event.anchor, event.tag, event.implicit, flow_style=flow_style) styled_events.append(event) output = yaml.emit(styled_events) if verbose: print("OUTPUT (filename=%r, flow_style=%r, style=%r)" % (filename, flow_style, style)) print(output) new_events = list(yaml.parse(output)) _compare_events(events, new_events)
def yaml_events(self, value, show_comments, show_choices): # Get our serialized representation of value, and return it as a # ScalarEvent. tag = None if value is not None: value, tag = self._represent(value) return [ yaml.ScalarEvent(value=value, anchor=None, tag=tag, implicit=(True, True)) ]