Guest User

Untitled

a guest
Apr 2nd, 2018
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.80 KB | None | 0 0
  1. import unicode
  2.  
  3. proc enumToString*(e: enum): string =
  4. when e.low.ord >= 0 and e.high.ord < 256:
  5. return $char(e.ord)
  6. else:
  7. return $Rune(e.ord)
  8.  
  9. proc enumToString*(enums: openArray[enum]): string =
  10. when e.low.ord >= 0 and e.high.ord < 256:
  11. result = newStringOfCap(enums.len)
  12. else:
  13. result = newStringOfCap(enums.len * 2)
  14. for e in enums:
  15. result.add(e.enumToString)
  16.  
  17. iterator stringToEnum*[E: enum](code: string): E =
  18. when E.low.ord >= 0 and E.high.ord < 256:
  19. for c in code: yield E(c.ord)
  20. else:
  21. for rune in code.runes(): yield E(rune.ord)
  22.  
  23. proc toSeq*[E: enum](code: string): seq[E] =
  24. when E.low >= 0 and E.high < 256:
  25. result = newSeqOfCap(code.len)
  26. else:
  27. result = newSeqOfCap(code.len div 2)
  28. for e in stringToEnum[E](code):
  29. result.add(e)
Advertisement
Add Comment
Please, Sign In to add comment