rng 0.1.2 → 0.3.4

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 (180) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/docs.yml +63 -0
  3. data/.github/workflows/release.yml +8 -3
  4. data/.gitignore +11 -0
  5. data/.rubocop.yml +10 -7
  6. data/.rubocop_todo.yml +229 -23
  7. data/CHANGELOG.md +317 -0
  8. data/CLAUDE.md +139 -0
  9. data/Gemfile +11 -12
  10. data/README.adoc +1538 -11
  11. data/Rakefile +11 -3
  12. data/docs/Gemfile +8 -0
  13. data/docs/_config.yml +23 -0
  14. data/docs/getting-started/index.adoc +75 -0
  15. data/docs/guides/error-handling.adoc +137 -0
  16. data/docs/guides/external-references.adoc +128 -0
  17. data/docs/guides/index.adoc +24 -0
  18. data/docs/guides/parsing-rnc.adoc +141 -0
  19. data/docs/guides/parsing-rng-xml.adoc +81 -0
  20. data/docs/guides/rng-to-rnc.adoc +101 -0
  21. data/docs/guides/validation.adoc +85 -0
  22. data/docs/index.adoc +52 -0
  23. data/docs/reference/api.adoc +126 -0
  24. data/docs/reference/cli.adoc +182 -0
  25. data/docs/understanding/architecture.adoc +58 -0
  26. data/docs/understanding/rng-vs-rnc.adoc +118 -0
  27. data/exe/rng +5 -0
  28. data/lib/rng/any_name.rb +10 -8
  29. data/lib/rng/attribute.rb +28 -26
  30. data/lib/rng/choice.rb +24 -24
  31. data/lib/rng/cli.rb +607 -0
  32. data/lib/rng/data.rb +10 -10
  33. data/lib/rng/datatype_declaration.rb +26 -0
  34. data/lib/rng/define.rb +44 -41
  35. data/lib/rng/div.rb +36 -0
  36. data/lib/rng/documentation.rb +9 -0
  37. data/lib/rng/element.rb +39 -37
  38. data/lib/rng/empty.rb +7 -7
  39. data/lib/rng/except.rb +25 -25
  40. data/lib/rng/external_ref.rb +8 -8
  41. data/lib/rng/external_ref_resolver.rb +602 -0
  42. data/lib/rng/foreign_attribute.rb +26 -0
  43. data/lib/rng/foreign_element.rb +33 -0
  44. data/lib/rng/grammar.rb +14 -12
  45. data/lib/rng/group.rb +26 -24
  46. data/lib/rng/include.rb +5 -6
  47. data/lib/rng/include_processor.rb +461 -0
  48. data/lib/rng/interleave.rb +23 -23
  49. data/lib/rng/list.rb +22 -22
  50. data/lib/rng/mixed.rb +23 -23
  51. data/lib/rng/name.rb +6 -7
  52. data/lib/rng/namespace_declaration.rb +47 -0
  53. data/lib/rng/namespaces.rb +15 -0
  54. data/lib/rng/not_allowed.rb +7 -7
  55. data/lib/rng/ns_name.rb +9 -9
  56. data/lib/rng/one_or_more.rb +23 -23
  57. data/lib/rng/optional.rb +23 -23
  58. data/lib/rng/param.rb +7 -8
  59. data/lib/rng/parent_ref.rb +8 -8
  60. data/lib/rng/parse_tree_processor.rb +695 -0
  61. data/lib/rng/pattern.rb +7 -7
  62. data/lib/rng/ref.rb +8 -8
  63. data/lib/rng/rnc_builder.rb +927 -0
  64. data/lib/rng/rnc_parser.rb +605 -305
  65. data/lib/rng/rnc_to_rng_converter.rb +1408 -0
  66. data/lib/rng/schema_preamble.rb +73 -0
  67. data/lib/rng/schema_validator.rb +1622 -0
  68. data/lib/rng/start.rb +27 -25
  69. data/lib/rng/test_suite_parser.rb +168 -0
  70. data/lib/rng/text.rb +11 -8
  71. data/lib/rng/to_rnc.rb +4 -35
  72. data/lib/rng/value.rb +6 -7
  73. data/lib/rng/version.rb +1 -1
  74. data/lib/rng/zero_or_more.rb +23 -23
  75. data/lib/rng.rb +68 -17
  76. data/rng.gemspec +18 -19
  77. data/scripts/extract_spectest_resources.rb +96 -0
  78. data/spec/fixtures/compacttest.xml +2511 -0
  79. data/spec/fixtures/external/circular_a.rng +7 -0
  80. data/spec/fixtures/external/circular_b.rng +7 -0
  81. data/spec/fixtures/external/circular_main.rng +7 -0
  82. data/spec/fixtures/external/external_ref_lib.rng +7 -0
  83. data/spec/fixtures/external/external_ref_main.rng +7 -0
  84. data/spec/fixtures/external/include_lib.rng +7 -0
  85. data/spec/fixtures/external/include_main.rng +3 -0
  86. data/spec/fixtures/external/nested_chain.rng +6 -0
  87. data/spec/fixtures/external/nested_leaf.rng +7 -0
  88. data/spec/fixtures/external/nested_mid.rng +8 -0
  89. data/spec/fixtures/metanorma/3gpp.rnc +35 -0
  90. data/spec/fixtures/metanorma/3gpp.rng +105 -0
  91. data/spec/fixtures/metanorma/basicdoc.rnc +11 -0
  92. data/spec/fixtures/metanorma/bipm.rnc +148 -0
  93. data/spec/fixtures/metanorma/bipm.rng +376 -0
  94. data/spec/fixtures/metanorma/bsi.rnc +104 -0
  95. data/spec/fixtures/metanorma/bsi.rng +332 -0
  96. data/spec/fixtures/metanorma/csa.rnc +45 -0
  97. data/spec/fixtures/metanorma/csa.rng +131 -0
  98. data/spec/fixtures/metanorma/csd.rnc +43 -0
  99. data/spec/fixtures/metanorma/csd.rng +132 -0
  100. data/spec/fixtures/metanorma/gbstandard.rnc +99 -0
  101. data/spec/fixtures/metanorma/gbstandard.rng +316 -0
  102. data/spec/fixtures/metanorma/iec.rnc +49 -0
  103. data/spec/fixtures/metanorma/iec.rng +193 -0
  104. data/spec/fixtures/metanorma/ietf.rnc +275 -0
  105. data/spec/fixtures/metanorma/ietf.rng +925 -0
  106. data/spec/fixtures/metanorma/iho.rnc +58 -0
  107. data/spec/fixtures/metanorma/iho.rng +179 -0
  108. data/spec/fixtures/metanorma/isodoc.rnc +873 -0
  109. data/spec/fixtures/metanorma/isodoc.rng +2704 -0
  110. data/spec/fixtures/metanorma/isostandard-amd.rnc +43 -0
  111. data/spec/fixtures/metanorma/isostandard-amd.rng +108 -0
  112. data/spec/fixtures/metanorma/isostandard.rnc +166 -0
  113. data/spec/fixtures/metanorma/isostandard.rng +494 -0
  114. data/spec/fixtures/metanorma/itu.rnc +122 -0
  115. data/spec/fixtures/metanorma/itu.rng +377 -0
  116. data/spec/fixtures/metanorma/m3d.rnc +41 -0
  117. data/spec/fixtures/metanorma/m3d.rng +122 -0
  118. data/spec/fixtures/metanorma/mpfd.rnc +36 -0
  119. data/spec/fixtures/metanorma/mpfd.rng +95 -0
  120. data/spec/fixtures/metanorma/nist.rnc +77 -0
  121. data/spec/fixtures/metanorma/nist.rng +216 -0
  122. data/spec/fixtures/metanorma/ogc.rnc +51 -0
  123. data/spec/fixtures/metanorma/ogc.rng +151 -0
  124. data/spec/fixtures/metanorma/reqt.rnc +6 -0
  125. data/spec/fixtures/metanorma/rsd.rnc +36 -0
  126. data/spec/fixtures/metanorma/rsd.rng +95 -0
  127. data/spec/fixtures/metanorma/un.rnc +103 -0
  128. data/spec/fixtures/metanorma/un.rng +367 -0
  129. data/spec/fixtures/rnc/base.rnc +4 -0
  130. data/spec/fixtures/rnc/grammar_with_trailing.rnc +8 -0
  131. data/spec/fixtures/rnc/main_include_trailing.rnc +3 -0
  132. data/spec/fixtures/rnc/main_with_include.rnc +5 -0
  133. data/spec/fixtures/rnc/test_augment.rnc +10 -0
  134. data/spec/fixtures/rnc/test_isodoc_simple.rnc +9 -0
  135. data/spec/fixtures/rnc/top_level_include.rnc +8 -0
  136. data/spec/fixtures/spectest_external/case_10_4.7/x +3 -0
  137. data/spec/fixtures/spectest_external/case_10_4.7/y +7 -0
  138. data/spec/fixtures/spectest_external/case_11_4.7/x +3 -0
  139. data/spec/fixtures/spectest_external/case_12_4.7/x +3 -0
  140. data/spec/fixtures/spectest_external/case_13_4.7/x +3 -0
  141. data/spec/fixtures/spectest_external/case_13_4.7/y +3 -0
  142. data/spec/fixtures/spectest_external/case_14_4.7/x +7 -0
  143. data/spec/fixtures/spectest_external/case_15_4.7/x +7 -0
  144. data/spec/fixtures/spectest_external/case_16_4.7/x +5 -0
  145. data/spec/fixtures/spectest_external/case_17_4.7/x +5 -0
  146. data/spec/fixtures/spectest_external/case_18_4.7/x +7 -0
  147. data/spec/fixtures/spectest_external/case_19_4.7/level1.rng +9 -0
  148. data/spec/fixtures/spectest_external/case_19_4.7/level2.rng +7 -0
  149. data/spec/fixtures/spectest_external/case_1_4.5/sub1/x +3 -0
  150. data/spec/fixtures/spectest_external/case_1_4.5/sub3/x +3 -0
  151. data/spec/fixtures/spectest_external/case_1_4.5/x +3 -0
  152. data/spec/fixtures/spectest_external/case_20_4.6/x +3 -0
  153. data/spec/fixtures/spectest_external/case_2_4.5/x +3 -0
  154. data/spec/fixtures/spectest_external/case_3_4.6/x +3 -0
  155. data/spec/fixtures/spectest_external/case_4_4.6/x +3 -0
  156. data/spec/fixtures/spectest_external/case_5_4.6/x +1 -0
  157. data/spec/fixtures/spectest_external/case_6_4.6/x +5 -0
  158. data/spec/fixtures/spectest_external/case_7_4.6/x +1 -0
  159. data/spec/fixtures/spectest_external/case_7_4.6/y +1 -0
  160. data/spec/fixtures/spectest_external/case_8_4.7/x +7 -0
  161. data/spec/fixtures/spectest_external/case_9_4.7/x +7 -0
  162. data/spec/fixtures/spectest_external/resources.json +149 -0
  163. data/spec/rng/advanced_rnc_spec.rb +101 -0
  164. data/spec/rng/compacttest_spec.rb +197 -0
  165. data/spec/rng/datatype_declaration_spec.rb +28 -0
  166. data/spec/rng/div_spec.rb +207 -0
  167. data/spec/rng/external_ref_resolver_spec.rb +122 -0
  168. data/spec/rng/metanorma_conversion_spec.rb +159 -0
  169. data/spec/rng/namespace_declaration_spec.rb +60 -0
  170. data/spec/rng/namespace_support_spec.rb +199 -0
  171. data/spec/rng/rnc_parser_spec.rb +498 -22
  172. data/spec/rng/rnc_roundtrip_spec.rb +96 -82
  173. data/spec/rng/rng_generation_spec.rb +288 -0
  174. data/spec/rng/roundtrip_spec.rb +342 -0
  175. data/spec/rng/schema_preamble_spec.rb +145 -0
  176. data/spec/rng/schema_spec.rb +68 -64
  177. data/spec/rng/spectest_spec.rb +168 -90
  178. data/spec/rng_spec.rb +2 -2
  179. data/spec/spec_helper.rb +7 -42
  180. metadata +141 -8
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rng
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-06-13 00:00:00.000000000 Z
11
+ date: 2026-05-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lutaml-model
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 0.8.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: 0.8.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: nokogiri
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -53,7 +53,7 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: zeitwerk
56
+ name: thor
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
@@ -69,37 +69,67 @@ dependencies:
69
69
  description:
70
70
  email:
71
71
  - open.source@ribose.com
72
- executables: []
72
+ executables:
73
+ - rng
73
74
  extensions: []
74
75
  extra_rdoc_files: []
75
76
  files:
77
+ - ".github/workflows/docs.yml"
76
78
  - ".github/workflows/rake.yml"
77
79
  - ".github/workflows/release.yml"
78
80
  - ".gitignore"
79
81
  - ".rspec"
80
82
  - ".rubocop.yml"
81
83
  - ".rubocop_todo.yml"
84
+ - CHANGELOG.md
85
+ - CLAUDE.md
82
86
  - CODE_OF_CONDUCT.md
83
87
  - Gemfile
84
88
  - README.adoc
85
89
  - Rakefile
90
+ - docs/Gemfile
91
+ - docs/_config.yml
92
+ - docs/getting-started/index.adoc
93
+ - docs/guides/error-handling.adoc
94
+ - docs/guides/external-references.adoc
95
+ - docs/guides/index.adoc
96
+ - docs/guides/parsing-rnc.adoc
97
+ - docs/guides/parsing-rng-xml.adoc
98
+ - docs/guides/rng-to-rnc.adoc
99
+ - docs/guides/validation.adoc
100
+ - docs/index.adoc
101
+ - docs/reference/api.adoc
102
+ - docs/reference/cli.adoc
103
+ - docs/understanding/architecture.adoc
104
+ - docs/understanding/rng-vs-rnc.adoc
105
+ - exe/rng
86
106
  - lib/rng.rb
87
107
  - lib/rng/any_name.rb
88
108
  - lib/rng/attribute.rb
89
109
  - lib/rng/choice.rb
110
+ - lib/rng/cli.rb
90
111
  - lib/rng/data.rb
112
+ - lib/rng/datatype_declaration.rb
91
113
  - lib/rng/define.rb
114
+ - lib/rng/div.rb
115
+ - lib/rng/documentation.rb
92
116
  - lib/rng/element.rb
93
117
  - lib/rng/empty.rb
94
118
  - lib/rng/except.rb
95
119
  - lib/rng/external_ref.rb
120
+ - lib/rng/external_ref_resolver.rb
121
+ - lib/rng/foreign_attribute.rb
122
+ - lib/rng/foreign_element.rb
96
123
  - lib/rng/grammar.rb
97
124
  - lib/rng/group.rb
98
125
  - lib/rng/include.rb
126
+ - lib/rng/include_processor.rb
99
127
  - lib/rng/interleave.rb
100
128
  - lib/rng/list.rb
101
129
  - lib/rng/mixed.rb
102
130
  - lib/rng/name.rb
131
+ - lib/rng/namespace_declaration.rb
132
+ - lib/rng/namespaces.rb
103
133
  - lib/rng/not_allowed.rb
104
134
  - lib/rng/ns_name.rb
105
135
  - lib/rng/one_or_more.rb
@@ -107,25 +137,128 @@ files:
107
137
  - lib/rng/param.rb
108
138
  - lib/rng/parent_ref.rb
109
139
  - lib/rng/parse_rnc.rb
140
+ - lib/rng/parse_tree_processor.rb
110
141
  - lib/rng/pattern.rb
111
142
  - lib/rng/ref.rb
143
+ - lib/rng/rnc_builder.rb
112
144
  - lib/rng/rnc_parser.rb
145
+ - lib/rng/rnc_to_rng_converter.rb
146
+ - lib/rng/schema_preamble.rb
147
+ - lib/rng/schema_validator.rb
113
148
  - lib/rng/start.rb
149
+ - lib/rng/test_suite_parser.rb
114
150
  - lib/rng/text.rb
115
151
  - lib/rng/to_rnc.rb
116
152
  - lib/rng/value.rb
117
153
  - lib/rng/version.rb
118
154
  - lib/rng/zero_or_more.rb
119
155
  - rng.gemspec
156
+ - scripts/extract_spectest_resources.rb
120
157
  - sig/rng.rbs
158
+ - spec/fixtures/compacttest.xml
159
+ - spec/fixtures/external/circular_a.rng
160
+ - spec/fixtures/external/circular_b.rng
161
+ - spec/fixtures/external/circular_main.rng
162
+ - spec/fixtures/external/external_ref_lib.rng
163
+ - spec/fixtures/external/external_ref_main.rng
164
+ - spec/fixtures/external/include_lib.rng
165
+ - spec/fixtures/external/include_main.rng
166
+ - spec/fixtures/external/nested_chain.rng
167
+ - spec/fixtures/external/nested_leaf.rng
168
+ - spec/fixtures/external/nested_mid.rng
169
+ - spec/fixtures/metanorma/3gpp.rnc
170
+ - spec/fixtures/metanorma/3gpp.rng
171
+ - spec/fixtures/metanorma/basicdoc.rnc
172
+ - spec/fixtures/metanorma/bipm.rnc
173
+ - spec/fixtures/metanorma/bipm.rng
174
+ - spec/fixtures/metanorma/bsi.rnc
175
+ - spec/fixtures/metanorma/bsi.rng
176
+ - spec/fixtures/metanorma/csa.rnc
177
+ - spec/fixtures/metanorma/csa.rng
178
+ - spec/fixtures/metanorma/csd.rnc
179
+ - spec/fixtures/metanorma/csd.rng
180
+ - spec/fixtures/metanorma/gbstandard.rnc
181
+ - spec/fixtures/metanorma/gbstandard.rng
182
+ - spec/fixtures/metanorma/iec.rnc
183
+ - spec/fixtures/metanorma/iec.rng
184
+ - spec/fixtures/metanorma/ietf.rnc
185
+ - spec/fixtures/metanorma/ietf.rng
186
+ - spec/fixtures/metanorma/iho.rnc
187
+ - spec/fixtures/metanorma/iho.rng
188
+ - spec/fixtures/metanorma/isodoc.rnc
189
+ - spec/fixtures/metanorma/isodoc.rng
190
+ - spec/fixtures/metanorma/isostandard-amd.rnc
191
+ - spec/fixtures/metanorma/isostandard-amd.rng
192
+ - spec/fixtures/metanorma/isostandard.rnc
193
+ - spec/fixtures/metanorma/isostandard.rng
194
+ - spec/fixtures/metanorma/itu.rnc
195
+ - spec/fixtures/metanorma/itu.rng
196
+ - spec/fixtures/metanorma/m3d.rnc
197
+ - spec/fixtures/metanorma/m3d.rng
198
+ - spec/fixtures/metanorma/mpfd.rnc
199
+ - spec/fixtures/metanorma/mpfd.rng
200
+ - spec/fixtures/metanorma/nist.rnc
201
+ - spec/fixtures/metanorma/nist.rng
202
+ - spec/fixtures/metanorma/ogc.rnc
203
+ - spec/fixtures/metanorma/ogc.rng
204
+ - spec/fixtures/metanorma/reqt.rnc
205
+ - spec/fixtures/metanorma/rsd.rnc
206
+ - spec/fixtures/metanorma/rsd.rng
207
+ - spec/fixtures/metanorma/un.rnc
208
+ - spec/fixtures/metanorma/un.rng
121
209
  - spec/fixtures/rnc/address_book.rnc
210
+ - spec/fixtures/rnc/base.rnc
122
211
  - spec/fixtures/rnc/complex_example.rnc
212
+ - spec/fixtures/rnc/grammar_with_trailing.rnc
213
+ - spec/fixtures/rnc/main_include_trailing.rnc
214
+ - spec/fixtures/rnc/main_with_include.rnc
215
+ - spec/fixtures/rnc/test_augment.rnc
216
+ - spec/fixtures/rnc/test_isodoc_simple.rnc
217
+ - spec/fixtures/rnc/top_level_include.rnc
123
218
  - spec/fixtures/rng/address_book.rng
124
219
  - spec/fixtures/rng/relaxng.rng
125
220
  - spec/fixtures/rng/testSuite.rng
126
221
  - spec/fixtures/spectest.xml
222
+ - spec/fixtures/spectest_external/case_10_4.7/x
223
+ - spec/fixtures/spectest_external/case_10_4.7/y
224
+ - spec/fixtures/spectest_external/case_11_4.7/x
225
+ - spec/fixtures/spectest_external/case_12_4.7/x
226
+ - spec/fixtures/spectest_external/case_13_4.7/x
227
+ - spec/fixtures/spectest_external/case_13_4.7/y
228
+ - spec/fixtures/spectest_external/case_14_4.7/x
229
+ - spec/fixtures/spectest_external/case_15_4.7/x
230
+ - spec/fixtures/spectest_external/case_16_4.7/x
231
+ - spec/fixtures/spectest_external/case_17_4.7/x
232
+ - spec/fixtures/spectest_external/case_18_4.7/x
233
+ - spec/fixtures/spectest_external/case_19_4.7/level1.rng
234
+ - spec/fixtures/spectest_external/case_19_4.7/level2.rng
235
+ - spec/fixtures/spectest_external/case_1_4.5/sub1/x
236
+ - spec/fixtures/spectest_external/case_1_4.5/sub3/x
237
+ - spec/fixtures/spectest_external/case_1_4.5/x
238
+ - spec/fixtures/spectest_external/case_20_4.6/x
239
+ - spec/fixtures/spectest_external/case_2_4.5/x
240
+ - spec/fixtures/spectest_external/case_3_4.6/x
241
+ - spec/fixtures/spectest_external/case_4_4.6/x
242
+ - spec/fixtures/spectest_external/case_5_4.6/x
243
+ - spec/fixtures/spectest_external/case_6_4.6/x
244
+ - spec/fixtures/spectest_external/case_7_4.6/x
245
+ - spec/fixtures/spectest_external/case_7_4.6/y
246
+ - spec/fixtures/spectest_external/case_8_4.7/x
247
+ - spec/fixtures/spectest_external/case_9_4.7/x
248
+ - spec/fixtures/spectest_external/resources.json
249
+ - spec/rng/advanced_rnc_spec.rb
250
+ - spec/rng/compacttest_spec.rb
251
+ - spec/rng/datatype_declaration_spec.rb
252
+ - spec/rng/div_spec.rb
253
+ - spec/rng/external_ref_resolver_spec.rb
254
+ - spec/rng/metanorma_conversion_spec.rb
255
+ - spec/rng/namespace_declaration_spec.rb
256
+ - spec/rng/namespace_support_spec.rb
127
257
  - spec/rng/rnc_parser_spec.rb
128
258
  - spec/rng/rnc_roundtrip_spec.rb
259
+ - spec/rng/rng_generation_spec.rb
260
+ - spec/rng/roundtrip_spec.rb
261
+ - spec/rng/schema_preamble_spec.rb
129
262
  - spec/rng/schema_spec.rb
130
263
  - spec/rng/spectest_spec.rb
131
264
  - spec/rng_spec.rb