nodes.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. # SPDX-License-Identifier: MIT
  2. class Node(object):
  3. def __init__(self, tag, value, start_mark, end_mark):
  4. self.tag = tag
  5. self.value = value
  6. self.start_mark = start_mark
  7. self.end_mark = end_mark
  8. def __repr__(self):
  9. value = self.value
  10. #if isinstance(value, list):
  11. # if len(value) == 0:
  12. # value = '<empty>'
  13. # elif len(value) == 1:
  14. # value = '<1 item>'
  15. # else:
  16. # value = '<%d items>' % len(value)
  17. #else:
  18. # if len(value) > 75:
  19. # value = repr(value[:70]+u' ... ')
  20. # else:
  21. # value = repr(value)
  22. value = repr(value)
  23. return '%s(tag=%r, value=%s)' % (self.__class__.__name__, self.tag, value)
  24. class ScalarNode(Node):
  25. id = 'scalar'
  26. def __init__(self, tag, value,
  27. start_mark=None, end_mark=None, style=None):
  28. self.tag = tag
  29. self.value = value
  30. self.start_mark = start_mark
  31. self.end_mark = end_mark
  32. self.style = style
  33. class CollectionNode(Node):
  34. def __init__(self, tag, value,
  35. start_mark=None, end_mark=None, flow_style=None):
  36. self.tag = tag
  37. self.value = value
  38. self.start_mark = start_mark
  39. self.end_mark = end_mark
  40. self.flow_style = flow_style
  41. class SequenceNode(CollectionNode):
  42. id = 'sequence'
  43. class MappingNode(CollectionNode):
  44. id = 'mapping'