Skip to content

Commit

Permalink
Add std/json support, remove redundant test on tag
Browse files Browse the repository at this point in the history
  • Loading branch information
Yu-Vitaqua-fer-Chronos committed Jan 25, 2024
1 parent d0470fc commit 5e3beea
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 8 deletions.
5 changes: 4 additions & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
name: Run Tests

on:
[push, pull_request]
pull_request
push:
branches:
- '**'

env:
nim-version: 'stable'
Expand Down
2 changes: 1 addition & 1 deletion nulid.nimble
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Package

version = "1.2.0"
version = "1.3.0"
author = "Yu Vitaqua fer Chronos"
description = "An implementation of ULID!"
license = "CC0"
Expand Down
16 changes: 12 additions & 4 deletions src/nulid.nim
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import std/[
times
times,
json
]

import crockfordb32
Expand Down Expand Up @@ -28,10 +29,9 @@ when not NoLocks:
Note: There are 2 defines that can be passed to the compiler to trigger different
functionality in this library at runtime, they are listed here:
- `--define:nulidInsecureRandom`: Uses `std/random` instead of `std/sysrand`.
- `--define:nulidNoLocks`
- `--define:nulidNoLocks`: Disables the use of locks.
The JS backend used `-d:nulidNoLocks` by default and Nimscript uses both.
these flags by default (whether either work with NULID is untested).
The JS backend used `-d:nulidNoLocks` by default.
]##

when not defined(js):
Expand Down Expand Up @@ -327,6 +327,14 @@ func `$`*(ulid: ULID): string =
else:
result = JsBigInt.encode(ulid.toInt128(), 26)

# std/json support
proc `%`*(u: ULID): JsonNode = newJString($u)

proc to*(j: JsonNode, _: typedesc[ULID]): ULID =
if j.kind != JString:
raise newException(JsonKindError, "Expected a string!")

result = ULID.parse(j.getStr())

when HasJsony:
import jsony
Expand Down
12 changes: 10 additions & 2 deletions tests/test1.nim
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@
# the letter 't').
#
# To run these tests, simply execute `nimble test`.

import unittest
import std/[
unittest,
json
]

const UlidRandStr = "541019288874337045949482"

Expand Down Expand Up @@ -47,3 +49,9 @@ when not defined(js):

check ulid == ULID.fromBytes(ulidBytes)
check ulid.toBytes == ulidBytes

test "ULID std/json support":
let ulid = ULID.parse("01H999MBGTEA8BDS0M5AWEBB1A")

check (%ulid).getStr() == "01H999MBGTEA8BDS0M5AWEBB1A"
check (%ulid).to(ULID) == ulid

0 comments on commit 5e3beea

Please sign in to comment.