Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import unicode
- proc enumToString*(e: enum): string =
- when e.low.ord >= 0 and e.high.ord < 256:
- return $char(e.ord)
- else:
- return $Rune(e.ord)
- proc enumToString*(enums: openArray[enum]): string =
- when e.low.ord >= 0 and e.high.ord < 256:
- result = newStringOfCap(enums.len)
- else:
- result = newStringOfCap(enums.len * 2)
- for e in enums:
- result.add(e.enumToString)
- iterator stringToEnum*[E: enum](code: string): E =
- when E.low.ord >= 0 and E.high.ord < 256:
- for c in code: yield E(c.ord)
- else:
- for rune in code.runes(): yield E(rune.ord)
- proc toSeq*[E: enum](code: string): seq[E] =
- when E.low >= 0 and E.high < 256:
- result = newSeqOfCap(code.len)
- else:
- result = newSeqOfCap(code.len div 2)
- for e in stringToEnum[E](code):
- result.add(e)
Advertisement
Add Comment
Please, Sign In to add comment