Пример #1
0
    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
Пример #2
0
    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
Пример #3
0
 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]))
Пример #4
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)
Пример #5
0
    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))
        ]