cddlc 0.2.5 → 0.2.7
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.
- checksums.yaml +4 -4
- data/bin/cddlc +4 -1
- data/cddlc.gemspec +1 -1
- data/lib/processor/cddl-constants.rb +27 -0
- data/lib/processor/cddl-flattening.rb +9 -7
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f9b2369e311571fc7dd58410f31098071ff75e8d53c144d3a478bc957945d7ae
|
4
|
+
data.tar.gz: 326423811614449c38fb1af24e5a2fae1fa1cb4e467084f024e62c9cd514ac62
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0eac4ccf86acb957e9abf0eba253a61e07de25a84aea3f6a34e547a9e77b80e8d22f9ecbf106404d272920be114dea28074e65aa59eb2081e72dde942b28a8b3
|
7
|
+
data.tar.gz: 03f7f303c48ae86ab3d99ecff74f9ddf7c07d23ec60660611aec0b734f62790f7f1a26f1b8f758950f7ae2414d5b734f30bd97352df4f1b6782b046f3117a0de
|
data/bin/cddlc
CHANGED
@@ -64,7 +64,7 @@ begin
|
|
64
64
|
opts.on("-2", "--[no-]cddl2", "Perform some CDDL 2.0 processing") do |v|
|
65
65
|
$options.cddl2 = v
|
66
66
|
end
|
67
|
-
opts.on("-tFMT", "--to=FMT", [:basic, :neat, :json, :yaml, :enum, :cddl], "Target format") do |v|
|
67
|
+
opts.on("-tFMT", "--to=FMT", [:basic, :neat, :json, :yaml, :const, :enum, :cddl], "Target format") do |v|
|
68
68
|
$options.target = v
|
69
69
|
end
|
70
70
|
opts.on("-sRULE", "--start=RULE", String, "Start rule name") do |v|
|
@@ -152,6 +152,9 @@ when :neat, :json
|
|
152
152
|
puts JSON.neat_generate(result, after_comma: 1, after_colon: 1)
|
153
153
|
when :yaml
|
154
154
|
puts result.to_yaml
|
155
|
+
when :const
|
156
|
+
require_relative "../lib/processor/cddl-constants.rb"
|
157
|
+
puts cddl.extract_constants.to_yaml
|
155
158
|
when :enum
|
156
159
|
rules = cddl.rules
|
157
160
|
rules.each do |k, v|
|
data/cddlc.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "cddlc"
|
3
|
-
s.version = "0.2.
|
3
|
+
s.version = "0.2.7"
|
4
4
|
s.summary = "CDDL (Concise Data Definition Language) converters and miscellaneous tools"
|
5
5
|
s.description = %q{cddlc implements converters and miscellaneous tools for CDDL, RFC 8610}
|
6
6
|
s.author = "Carsten Bormann"
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require_relative "../cddlc.rb"
|
2
|
+
require_relative "./cddl-visitor.rb"
|
3
|
+
|
4
|
+
class CDDL
|
5
|
+
def constant_evaluate(rhs)
|
6
|
+
case rhs
|
7
|
+
in ["number", n]
|
8
|
+
[true, eval(n)]
|
9
|
+
in ["text", n]
|
10
|
+
[true, n]
|
11
|
+
in ["name", n]
|
12
|
+
if nv = rules[n]
|
13
|
+
constant_evaluate(nv)
|
14
|
+
end
|
15
|
+
else
|
16
|
+
[false]
|
17
|
+
end
|
18
|
+
end
|
19
|
+
def extract_constants
|
20
|
+
nr = {}
|
21
|
+
rules.each do |k, v|
|
22
|
+
isconstant, value = constant_evaluate(v)
|
23
|
+
nr[k] = value if isconstant
|
24
|
+
end
|
25
|
+
nr
|
26
|
+
end
|
27
|
+
end
|
@@ -61,12 +61,14 @@ class CDDL
|
|
61
61
|
keyname
|
62
62
|
end
|
63
63
|
new_value2 = flattening_mogrify(new_name, value, symtab, alias_rules)
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
64
|
+
new_name2 = new_name
|
65
|
+
n = 0
|
66
|
+
while ar = alias_rules[new_name2] and ar != new_value2
|
67
|
+
n += 1
|
68
|
+
new_name2 = new_name << "@" << n.to_s
|
68
69
|
end
|
69
|
-
[
|
70
|
+
alias_rules[new_name2] = new_value2
|
71
|
+
[true, ["mem", cut, key, ["name", new_name2]]]
|
70
72
|
end
|
71
73
|
else
|
72
74
|
false
|
@@ -74,8 +76,8 @@ class CDDL
|
|
74
76
|
end
|
75
77
|
step2 = visit(step1) do |here|
|
76
78
|
case here
|
77
|
-
in ["enum", ["mem", _cut, ["text", IDENTIFIER_RE], ["name", MOGRIFIED_ID_RE =>
|
78
|
-
[true, ["name",
|
79
|
+
in ["enum", ["mem", _cut, ["text", IDENTIFIER_RE], ["name", MOGRIFIED_ID_RE => new_name2]]]
|
80
|
+
[true, ["name", new_name2]]
|
79
81
|
else
|
80
82
|
false
|
81
83
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cddlc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Carsten Bormann
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-02-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -105,6 +105,7 @@ files:
|
|
105
105
|
- lib/cddlc.rb
|
106
106
|
- lib/parser/cddl-util.rb
|
107
107
|
- lib/parser/cddlgrammar.rb
|
108
|
+
- lib/processor/cddl-constants.rb
|
108
109
|
- lib/processor/cddl-expander.rb
|
109
110
|
- lib/processor/cddl-flattening.rb
|
110
111
|
- lib/processor/cddl-undefined.rb
|