mirror of https://github.com/status-im/NimYAML.git
78 lines
3.2 KiB
Nim
78 lines
3.2 KiB
Nim
# NimYAML - YAML implementation in Nim
|
|
# (c) Copyright 2015 Felix Krause
|
|
#
|
|
# See the file "copying.txt", included in this
|
|
# distribution, for details about the copyright.
|
|
|
|
proc `==`*(left: YamlStreamEvent, right: YamlStreamEvent): bool =
|
|
if left.kind != right.kind:
|
|
return false
|
|
case left.kind
|
|
of yamlStartDocument, yamlEndDocument, yamlEndMap, yamlEndSequence:
|
|
result = true
|
|
of yamlStartMap:
|
|
result = left.mapAnchor == right.mapAnchor and
|
|
left.mapTag == right.mapTag
|
|
of yamlStartSequence:
|
|
result = left.seqAnchor == right.seqAnchor and
|
|
left.seqTag == right.seqTag
|
|
of yamlScalar:
|
|
result = left.scalarAnchor == right.scalarAnchor and
|
|
left.scalarTag == right.scalarTag and
|
|
left.scalarContent == right.scalarContent and
|
|
left.scalarType == right.scalarType
|
|
of yamlAlias:
|
|
result = left.aliasTarget == right.aliasTarget
|
|
|
|
proc `$`*(event: YamlStreamEvent): string =
|
|
result = $event.kind & '('
|
|
case event.kind
|
|
of yamlEndMap, yamlEndSequence, yamlStartDocument, yamlEndDocument:
|
|
discard
|
|
of yamlStartMap:
|
|
result &= "tag=" & $event.mapTag
|
|
if event.mapAnchor != yAnchorNone:
|
|
result &= ", anchor=" & $event.mapAnchor
|
|
of yamlStartSequence:
|
|
result &= "tag=" & $event.seqTag
|
|
if event.seqAnchor != yAnchorNone:
|
|
result &= ", anchor=" & $event.seqAnchor
|
|
of yamlScalar:
|
|
result &= "tag=" & $event.scalarTag
|
|
if event.scalarAnchor != yAnchorNone:
|
|
result &= ", anchor=" & $event.scalarAnchor
|
|
result &= ", typeHint=" & $event.scalarType
|
|
result &= ", content=\"" & event.scalarContent & '\"'
|
|
of yamlAlias:
|
|
result &= "aliasTarget=" & $event.aliasTarget
|
|
result &= ")"
|
|
|
|
proc startDocEvent*(): YamlStreamEvent =
|
|
result = YamlStreamEvent(kind: yamlStartDocument)
|
|
|
|
proc endDocEvent*(): YamlStreamEvent =
|
|
result = YamlStreamEvent(kind: yamlEndDocument)
|
|
|
|
proc startMapEvent*(tag: TagId = yTagQuestionMark,
|
|
anchor: AnchorId = yAnchorNone,
|
|
mayHaveKeyObjects: bool = true): YamlStreamEvent =
|
|
result = YamlStreamEvent(kind: yamlStartMap, mapTag: tag, mapAnchor: anchor,
|
|
mapMayHaveKeyObjects: mayHaveKeyObjects)
|
|
|
|
proc endMapEvent*(): YamlStreamEvent =
|
|
result = YamlStreamEvent(kind: yamlEndMap)
|
|
|
|
proc startSeqEvent*(tag: TagId = yTagQuestionMark,
|
|
anchor: AnchorId = yAnchorNone): YamlStreamEvent =
|
|
result = YamlStreamEvent(kind: yamlStartSequence, seqTag: tag,
|
|
seqAnchor: anchor)
|
|
|
|
proc endSeqEvent*(): YamlStreamEvent =
|
|
result = YamlStreamEvent(kind: yamlEndSequence)
|
|
|
|
proc scalarEvent*(content: string = "", tag: TagId = yTagQuestionMark,
|
|
anchor: AnchorId = yAnchorNone,
|
|
typeHint: YamlTypeHint = yTypeUnknown): YamlStreamEvent =
|
|
result = YamlStreamEvent(kind: yamlScalar, scalarTag: tag,
|
|
scalarAnchor: anchor, scalarContent: content,
|
|
scalarType: typeHint) |