events.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. # SPDX-License-Identifier: MIT
  2. # Abstract classes.
  3. class Event(object):
  4. def __init__(self, start_mark=None, end_mark=None):
  5. self.start_mark = start_mark
  6. self.end_mark = end_mark
  7. def __repr__(self):
  8. attributes = [key for key in ['anchor', 'tag', 'implicit', 'value']
  9. if hasattr(self, key)]
  10. arguments = ', '.join(['%s=%r' % (key, getattr(self, key))
  11. for key in attributes])
  12. return '%s(%s)' % (self.__class__.__name__, arguments)
  13. class NodeEvent(Event):
  14. def __init__(self, anchor, start_mark=None, end_mark=None):
  15. self.anchor = anchor
  16. self.start_mark = start_mark
  17. self.end_mark = end_mark
  18. class CollectionStartEvent(NodeEvent):
  19. def __init__(self, anchor, tag, implicit, start_mark=None, end_mark=None,
  20. flow_style=None):
  21. self.anchor = anchor
  22. self.tag = tag
  23. self.implicit = implicit
  24. self.start_mark = start_mark
  25. self.end_mark = end_mark
  26. self.flow_style = flow_style
  27. class CollectionEndEvent(Event):
  28. pass
  29. # Implementations.
  30. class StreamStartEvent(Event):
  31. def __init__(self, start_mark=None, end_mark=None, encoding=None):
  32. self.start_mark = start_mark
  33. self.end_mark = end_mark
  34. self.encoding = encoding
  35. class StreamEndEvent(Event):
  36. pass
  37. class DocumentStartEvent(Event):
  38. def __init__(self, start_mark=None, end_mark=None,
  39. explicit=None, version=None, tags=None):
  40. self.start_mark = start_mark
  41. self.end_mark = end_mark
  42. self.explicit = explicit
  43. self.version = version
  44. self.tags = tags
  45. class DocumentEndEvent(Event):
  46. def __init__(self, start_mark=None, end_mark=None,
  47. explicit=None):
  48. self.start_mark = start_mark
  49. self.end_mark = end_mark
  50. self.explicit = explicit
  51. class AliasEvent(NodeEvent):
  52. pass
  53. class ScalarEvent(NodeEvent):
  54. def __init__(self, anchor, tag, implicit, value,
  55. start_mark=None, end_mark=None, style=None):
  56. self.anchor = anchor
  57. self.tag = tag
  58. self.implicit = implicit
  59. self.value = value
  60. self.start_mark = start_mark
  61. self.end_mark = end_mark
  62. self.style = style
  63. class SequenceStartEvent(CollectionStartEvent):
  64. pass
  65. class SequenceEndEvent(CollectionEndEvent):
  66. pass
  67. class MappingStartEvent(CollectionStartEvent):
  68. pass
  69. class MappingEndEvent(CollectionEndEvent):
  70. pass