예제 #1
0
    def yaml_set_comment_before_after_key(
        self, key, before=None, indent=0, after=None, after_indent=None
    ):
        # type: (Any, Any, Any, Any, Any) -> None
        """
        expects comment (before/after) to be without `#` and possible have multiple lines
        """
        from google.appengine._internal.ruamel.yaml.error import CommentMark
        from google.appengine._internal.ruamel.yaml.tokens import CommentToken

        def comment_token(s, mark):
            # type: (Any, Any) -> Any
            # handle empty lines as having no comment
            return CommentToken(('# ' if s else "") + s + '\n', mark, None)

        if after_indent is None:
            after_indent = indent + 2
        if before and (len(before) > 1) and before[-1] == '\n':
            before = before[:-1]  # strip final newline if there
        if after and after[-1] == '\n':
            after = after[:-1]  # strip final newline if there
        start_mark = CommentMark(indent)
        c = self.ca.items.setdefault(key, [None, [], None, None])
        if before == '\n':
            c[1].append(comment_token("", start_mark))
        elif before:
            for com in before.split('\n'):
                c[1].append(comment_token(com, start_mark))
        if after:
            start_mark = CommentMark(after_indent)
            if c[3] is None:
                c[3] = []
            for com in after.split('\n'):
                c[3].append(comment_token(com, start_mark))  # type: ignore
예제 #2
0
 def yaml_set_start_comment(self, comment, indent=0):
     # type: (Any, Any) -> None
     """overwrites any preceding comment lines on an object
     expects comment to be without `#` and possible have multiple lines
     """
     from .error import CommentMark
     from .tokens import CommentToken
     pre_comments = self._yaml_get_pre_comment()
     if comment[-1] == '\n':
         comment = comment[:-1]  # strip final newline if there
     start_mark = CommentMark(indent)
     for com in comment.split('\n'):
         pre_comments.append(
             CommentToken('# ' + com + '\n', start_mark, None))
예제 #3
0
 def yaml_add_eol_comment(self, comment, key=NoComment, column=None):
     # type: (Any, Optional[Any], Optional[Any]) -> None
     """
     there is a problem as eol comments should start with ' #'
     (but at the beginning of the line the space doesn't have to be before
     the #. The column index is for the # mark
     """
     from .tokens import CommentToken
     from .error import CommentMark
     if column is None:
         column = self._yaml_get_column(key)
     if comment[0] != '#':
         comment = '# ' + comment
     if column is None:
         if comment[0] == '#':
             comment = ' ' + comment
             column = 0
     start_mark = CommentMark(column)
     ct = [CommentToken(comment, start_mark, None), None]
     self._yaml_add_eol_comment(ct, key=key)