31 lines
863 B
Nim
31 lines
863 B
Nim
import parseutils, times, json
|
|
|
|
proc toAlphaId* (n: int): string =
|
|
let chars = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
|
|
|
var tmp = n
|
|
var digitValue: int = 1
|
|
var digit: int = 0
|
|
while tmp > 0:
|
|
digitValue *= chars.len
|
|
digit = tmp mod digitValue
|
|
let char = int(digit * chars.len / digitValue)
|
|
result = $(chars[char]) & result
|
|
tmp -= digit
|
|
|
|
proc fromAlphaId* (s: string): int =
|
|
let chars = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
|
|
|
for char in s:
|
|
result *= chars.len
|
|
result += chars.skipUntil(char)
|
|
|
|
proc iso8601toUnix* (iso8601string: string): int64 =
|
|
let date = parse(iso8601string, "yyyy-MM-dd'T'HH:mm:sszzz")
|
|
return toUnix(toTime(date))
|
|
|
|
proc mergeJObjects* (root: JsonNode, new: JsonNode): JsonNode =
|
|
result = root
|
|
|
|
for key, value in new:
|
|
result.add(key, value) |