cddl 0.8.8 → 0.10.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/bin/cddl +35 -15
  3. data/cddl.gemspec +5 -2
  4. data/data/cddl.abnf +2 -1
  5. data/lib/base45_lite.rb +71 -0
  6. data/lib/cbor-pp-play.rb +1 -0
  7. data/lib/cddl.rb +406 -50
  8. data/test/test-cddl.rb +53 -2
  9. data/test-data/7807.cddl +14 -0
  10. data/test-data/abignum.cddl +1 -0
  11. data/test-data/abnf1.cddl +3 -0
  12. data/test-data/abnf2.cddl +37 -0
  13. data/test-data/abnf3.cddl +32 -0
  14. data/test-data/b64c-sloppy.cddl +1 -0
  15. data/test-data/b64c.cddl +1 -0
  16. data/test-data/b64u.cddl +1 -0
  17. data/test-data/base32.cddl +1 -0
  18. data/test-data/base32hex.cddl +1 -0
  19. data/test-data/bat.cddl +16 -0
  20. data/test-data/bpv7.cddl +136 -0
  21. data/test-data/bpv7a.cddl +181 -0
  22. data/test-data/bpv7b.cddl +167 -0
  23. data/test-data/cat-re.cddl +2 -0
  24. data/test-data/complex-occ.cddl +11 -0
  25. data/test-data/coral.cddl +10 -0
  26. data/test-data/coral1.cddl +5 -0
  27. data/test-data/coral2.cddl +7 -0
  28. data/test-data/coral3.cddl +7 -0
  29. data/test-data/decimal.cddl +1 -0
  30. data/test-data/decimal2.cddl +1 -0
  31. data/test-data/det1.cddl +12 -0
  32. data/test-data/feat1.cddl +4 -0
  33. data/test-data/feature-controller.cddl +6 -0
  34. data/test-data/feature-detail.cddl +5 -0
  35. data/test-data/foo.cddl +1 -0
  36. data/test-data/hex.cddl +1 -0
  37. data/test-data/hexlc.cddl +1 -0
  38. data/test-data/hexuc.cddl +1 -0
  39. data/test-data/homenet-de.cddl +12 -0
  40. data/test-data/homenet-fe.cddl +12 -0
  41. data/test-data/jim-cut-2.cddl +11 -0
  42. data/test-data/jim-cut.cddl +12 -0
  43. data/test-data/join.cddl +1 -0
  44. data/test-data/joini.cddl +1 -0
  45. data/test-data/joinx.cddl +1 -0
  46. data/test-data/json.cddl +1 -0
  47. data/test-data/json2.cddl +1 -0
  48. data/test-data/jsoniodef.cddl +719 -0
  49. data/test-data/lint1.cddl +9 -0
  50. data/test-data/mdl-ble.cddl +9 -0
  51. data/test-data/mdl-deve.cddl +54 -0
  52. data/test-data/mdl-dp.cddl +11 -0
  53. data/test-data/mdl-mso.cddl +20 -0
  54. data/test-data/mdl-request.cddl +26 -0
  55. data/test-data/mdl-response.cddl +66 -0
  56. data/test-data/mdl.cddl +11 -0
  57. data/test-data/mon-val.cddl +1 -0
  58. data/test-data/multipart-ct.cddl +2 -0
  59. data/test-data/named-group.cddl +7 -0
  60. data/test-data/non-empty.cddl +5 -0
  61. data/test-data/oid.cddl +8 -0
  62. data/test-data/oidbat.cddl +8 -0
  63. data/test-data/plus.cddl +3 -0
  64. data/test-data/sasl.cddl +24 -0
  65. data/test-data/sequence.cddl +1 -0
  66. data/test-data/sipos.cddl +8 -0
  67. data/test-data/star-edited.cddl +98 -0
  68. data/test-data/star.cddl +95 -0
  69. data/test-data/test-gen.cddl +3 -0
  70. data/test-data/time.cddl +11 -0
  71. data/test-data/yangid.cddl +1 -0
  72. data/test-data/yaron1.cddl +95 -0
  73. metadata +100 -8
@@ -0,0 +1,10 @@
1
+ coral = [+ s-exp]
2
+ s-exp = ((text, value, ?coral) // directive)
3
+ value = ctext / cbytes / cint / cfloat / cboolean / cdatetime / null / {"_link": tstr} / {"_form": tstr}
4
+ ctext = text / {"_text": text}
5
+ cint = {"_int": int}
6
+ cfloat = float / {"_float": float}
7
+ cboolean = bool / {"_bool": bool}
8
+ cdatetime = {"_datetime": text}
9
+ cbytes = {"_bytes": text} ; base64url no padding
10
+ directive = (("_using", {* text => text}) // ("_base", text))
@@ -0,0 +1,5 @@
1
+ document = {*element}
2
+ element = (relation => value / [2*value])
3
+
4
+ relation = text
5
+ value = text
@@ -0,0 +1,7 @@
1
+ document = {*element}
2
+ element = (text => value / [2*value])
3
+ value = text / float / bool / tagged
4
+ tagged = {"_int":int,*element} / {"_float":float,*element} / {"_text":text,*element} / {"_bytes":bytes,*element} / {"_datetime":text,*element} / {"_bool":bool,*element} / {"_link":ciri,*element} / {"_form":ciri,*element}
5
+ ciri = text ; full IRI given
6
+ / [text] ; suffix for default prefix
7
+ / [text, text] ; prefix, suffix for that prefix
@@ -0,0 +1,7 @@
1
+ document = {? ("_using" => {* text => text}), *element}
2
+ element = (text => value / [2*value])
3
+ value = text / float / bool / tagged / {*element}
4
+ tagged = {"_int": int, *element} / {"_float": float, *element} / {"_text": text, *element} / {"_bytes": bytes, *element} / {"_datetime": text, *element} / {"_bool": bool, *element} / {"_link": ciri, *element} / {"_form": ciri, *element}
5
+ ciri = text ; full IRI given
6
+ / [text] ; suffix for default prefix
7
+ / [text, text] ; prefix, suffix for that prefix
@@ -0,0 +1 @@
1
+ a = text .decimal uint
@@ -0,0 +1 @@
1
+ a = text .decimal 4711
@@ -0,0 +1,12 @@
1
+ bar = ["" .cat foo, "" .cat cbor-tags-oid]
2
+
3
+ foo = '' .det cbor-tags-oid
4
+
5
+ cbor-tags-oid = '
6
+ oid = 1*arc
7
+ roid = *arc
8
+ arc = [nlsb] %x00-7f
9
+ nlsb = %x81-ff *%x80-ff
10
+ ' .det ''
11
+
12
+ cbor-tags-oid-decrypted = cbor-tags-oid .det (([]) .det ([]))
@@ -0,0 +1,4 @@
1
+ bla = {
2
+ a: int
3
+ ? ("b" .feature "foo") => float
4
+ }
@@ -0,0 +1,6 @@
1
+ a = b .feature 3
2
+ b = c .feature 3.3
3
+ c = d .feature (["drei", "ok"])
4
+ d = e .feature ([[], "ok"])
5
+ e = f .feature ([1, "ok"])
6
+ f = int .feature (1)
@@ -0,0 +1,5 @@
1
+ foo = {
2
+ kind: bar / baz .feature (["foo-extensions", "bazify"])
3
+ }
4
+ bar = int
5
+ baz = text ; complex stuff that doesn't all need to be in the detail
@@ -0,0 +1 @@
1
+ foo=bar=int
@@ -0,0 +1 @@
1
+ a = text .hex 'mnoabcd'
@@ -0,0 +1 @@
1
+ a = text .hexlc 'mnoabcd'
@@ -0,0 +1 @@
1
+ a = text .hexuc 'mnoabcd'
@@ -0,0 +1,12 @@
1
+ hna-configuration = {
2
+ "registred_domain" : tstr,
3
+ "dm" : tstr,
4
+ ? "dm_transport" : "53" // "DoT" // "DoH" // "DoQ"
5
+ ? "dm_port" : uint,
6
+ ? "dm_acl" : hna-acl // [ +hna-acl ]
7
+ ? "hna_auth_method": hna-auth-method
8
+ ? "hna_certificate": tstr
9
+ }
10
+
11
+ hna-acl = tstr
12
+ hna-auth-method /= "certificate"
@@ -0,0 +1,12 @@
1
+ hna-configuration = {
2
+ "registered_domain" : tstr,
3
+ "dm" : tstr,
4
+ ? "dm_transport" : "53" / "DoT" / "DoH" / "DoQ"
5
+ ? "dm_port" : uint,
6
+ ? "dm_acl" : hna-acl / [ +hna-acl ]
7
+ ? "hna_auth_method": hna-auth-method
8
+ ? "hna_certificate": tstr
9
+ }
10
+
11
+ hna-acl = tstr
12
+ hna-auth-method /= "certificate"
@@ -0,0 +1,11 @@
1
+
2
+ map-example = {
3
+ ? optional-key : int,
4
+ * map-example-extension,
5
+ * tstr => any
6
+ }
7
+
8
+ map-example-extension = ()
9
+
10
+ map-example-extension //= (another-optional-key : tstr,)
11
+ map-example-extension //= ("and a third" : bstr,)
@@ -0,0 +1,12 @@
1
+ map-example = {
2
+ ? "optional-key" : int,
3
+ map-example-extensions,
4
+ * tstr => any
5
+ }
6
+
7
+ map-example-extensions = ()
8
+
9
+ map-example-extensions //= (
10
+ "another-optional-key" : tstr,
11
+ "and a third": bstr
12
+ )
@@ -0,0 +1 @@
1
+ a = text .join (["a", "b", "c"])
@@ -0,0 +1 @@
1
+ a = text .join (["a", "b", 3])
@@ -0,0 +1 @@
1
+ a = text .join (["a", "b", text])
@@ -0,0 +1 @@
1
+ a = text .json ([4, uint .size 1, {"a": "b"}])
@@ -0,0 +1 @@
1
+ a = text .json ([4, uint .size 2, {"a": "b"}])