expressir 1.2.11-aarch64-linux → 2.4.29-aarch64-linux

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 (467) hide show
  1. checksums.yaml +4 -4
  2. data/.cargo/config.toml +3 -0
  3. data/.github/scripts/test_installed_gem.rb +34 -0
  4. data/.github/workflows/codeql.yml +35 -0
  5. data/.github/workflows/docs.yml +99 -0
  6. data/.github/workflows/links.yml +100 -0
  7. data/.github/workflows/native-gems.yml +201 -0
  8. data/.github/workflows/rake.yml +10 -296
  9. data/.github/workflows/release.yml +26 -114
  10. data/.github/workflows/rust-ext.yml +41 -0
  11. data/.github/workflows/stress.yml +36 -0
  12. data/.github/workflows/validate_schemas.yml +48 -0
  13. data/.github/workflows/verify_remarks.yml +33 -0
  14. data/.gitignore +33 -1
  15. data/.rubocop.yml +11 -11
  16. data/.rubocop_todo.yml +297 -0
  17. data/CHANGELOG.md +159 -0
  18. data/Gemfile +15 -1
  19. data/README.adoc +2675 -47
  20. data/Rakefile +34 -10
  21. data/TODO.bugs/01-stale-transformer-autoload.md +39 -0
  22. data/TODO.bugs/02-parser-class-instance-vars.md +36 -0
  23. data/TODO.bugs/03-builder-mutable-state.md +43 -0
  24. data/TODO.bugs/04-formatter-public-send-dispatch.md +53 -0
  25. data/TODO.bugs/05-anonymous-formatter-subclass.md +45 -0
  26. data/TODO.bugs/06-collection-registry-single-source.md +53 -0
  27. data/TODO.bugs/07-require-relative-cleanup.md +42 -0
  28. data/TODO.bugs/08-require-expressir-in-commands.md +34 -0
  29. data/TODO.bugs/09-parser-split.md +53 -0
  30. data/TODO.bugs/10-to-s-override.md +42 -0
  31. data/TODO.bugs/11-parser-class-variables.md +39 -0
  32. data/TODO.bugs/12-marker-modules-vs-registry.md +64 -0
  33. data/TODO.bugs/13-string-literal-scanner-limitation.md +52 -0
  34. data/TODO.bugs/14-model-formatting-leak.md +30 -0
  35. data/TODO.bugs/15-expression-children-macro.md +27 -0
  36. data/TODO.bugs/16-pretty-formatter-duplication.md +28 -0
  37. data/TODO.bugs/17-snake-case-cache-mutable-constant.md +28 -0
  38. data/TODO.bugs/18-const-get-private-constants.md +30 -0
  39. data/TODO.bugs/19-format-methods-public.md +22 -0
  40. data/TODO.bugs/20-coverage-nested-entities-dedup.md +20 -0
  41. data/TODO.bugs/21-operator-tokens-secondary-dispatch.md +21 -0
  42. data/TODO.bugs/22-builder-fast-path-wrappers.md +32 -0
  43. data/TODO.bugs/23-coverage-inverse-maps.md +21 -0
  44. data/TODO.bugs/24-streaming-builder-complexity.md +19 -0
  45. data/TODO.bugs/25-debug-puts-in-production.md +21 -0
  46. data/TODO.bugs/26-generic-entity-children-misplaced.md +21 -0
  47. data/TODO.bugs/27-package-build-god-method.md +19 -0
  48. data/TODO.bugs/28-package-god-class.md +30 -0
  49. data/TODO.bugs/29-validate-ascii-god-class.md +24 -0
  50. data/TODO.bugs/30-unicode-map-extraction.md +19 -0
  51. data/TODO.bugs/README.md +43 -0
  52. data/TODO.max-perf/01-restore-ci-green.md +36 -0
  53. data/TODO.max-perf/02-streaming-parse-path.md +31 -0
  54. data/TODO.max-perf/03-cli-parallel-opt-in.md +27 -0
  55. data/TODO.max-perf/04-benchmark-harness.md +28 -0
  56. data/TODO.max-perf/05-parallel-fidelity-specs.md +22 -0
  57. data/TODO.max-perf/06-builder-cpu-audit.md +41 -0
  58. data/TODO.max-perf/07-upstream-parsanol-roadmap.md +27 -0
  59. data/TODO.max-perf/08-builder-build-perf.md +45 -0
  60. data/TODO.max-perf/09-grammar-cold-start.md +25 -0
  61. data/TODO.max-perf/10-parser-facade-hygiene.md +23 -0
  62. data/TODO.max-perf/11-ci-green-closeout.md +25 -0
  63. data/TODO.max-perf/12-require-boot-profile.md +25 -0
  64. data/TODO.max-perf/13-key-conversion-specs.md +26 -0
  65. data/TODO.max-perf/14-builder-call-handler-audit.md +28 -0
  66. data/TODO.parity-ee/00-overview.md +76 -0
  67. data/TODO.parity-ee/01-annex-g-rule-extraction.md +41 -0
  68. data/TODO.parity-ee/02-eeng-algorithm-inventory.md +8 -0
  69. data/TODO.parity-ee/03-eeng-oracle-harness.md +33 -0
  70. data/TODO.parity-ee/04-shtolo-concatenate.md +44 -0
  71. data/TODO.parity-ee/05-shtolo-longform-flatten.md +53 -0
  72. data/TODO.parity-ee/06-interface-scheduling-parity.md +47 -0
  73. data/TODO.parity-ee/07-semantic-checks-port.md +35 -0
  74. data/TODO.parity-ee/08-pretty-roundtrip-gate.md +27 -0
  75. data/TODO.parity-ee/09-smrl-index-and-listing.md +22 -0
  76. data/TODO.parity-ee/10-interface-dot-graph.md +21 -0
  77. data/TODO.parity-ee/11-import-eeng-tests.md +79 -0
  78. data/TODO.parity-ee/12-full-check-catalog.md +67 -0
  79. data/TODO.parity-ee/13-population-p21.md +54 -0
  80. data/TODO.parity-ee/14-shtolo-completion.md +44 -0
  81. data/TODO.parity-ee/15-part28-xml.md +51 -0
  82. data/TODO.parity-ee/16-compare-patch.md +48 -0
  83. data/TODO.parity-ee/17-official-tests.md +42 -0
  84. data/TODO.parity-ee/18-mim-mapping.md +47 -0
  85. data/TODO.parity-ee/19-architecture.md +97 -0
  86. data/TODO.parity-ee/parity-matrix.md +108 -0
  87. data/TODO.refpath-v2/00-overview.md +64 -0
  88. data/TODO.suma-improvements/00-overview.md +23 -0
  89. data/TODO.suma-improvements/01-prebuilt-platform-gems.md +33 -0
  90. data/TODO.suma-improvements/02-suma-e2e.md +39 -0
  91. data/TODO.suma-improvements/03-item-graph.md +22 -0
  92. data/TODO.suma-improvements/04-compiled-set-default.md +16 -0
  93. data/TODO.suma-improvements/05-validation-in-docs.md +17 -0
  94. data/TODO.suma-improvements/06-memory-remeasure.md +36 -0
  95. data/TODO.suma-improvements/07-part28-xml.md +15 -0
  96. data/TODO.suma-improvements/08-windows-gnu-toolchain.md +15 -0
  97. data/TODO.suma-improvements/09-checker-tranche3.md +13 -0
  98. data/TODO.suma-improvements/10-expressdoc.md +8 -0
  99. data/benchmark/srl_benchmark.rb +458 -0
  100. data/benchmark/srl_native_benchmark.rb +146 -0
  101. data/benchmark/srl_ruby_benchmark.rb +132 -0
  102. data/bin/rspec +2 -1
  103. data/docs/Gemfile +12 -0
  104. data/docs/_config.yml +141 -0
  105. data/docs/_guides/changes/changes-format.adoc +778 -0
  106. data/docs/_guides/changes/importing-eengine.adoc +898 -0
  107. data/docs/_guides/changes/index.adoc +396 -0
  108. data/docs/_guides/changes/programmatic-usage.adoc +1038 -0
  109. data/docs/_guides/changes/validating-changes.adoc +681 -0
  110. data/docs/_guides/cli/benchmark-performance.adoc +834 -0
  111. data/docs/_guides/cli/coverage-analysis.adoc +921 -0
  112. data/docs/_guides/cli/format-schemas.adoc +547 -0
  113. data/docs/_guides/cli/index.adoc +8 -0
  114. data/docs/_guides/cli/managing-changes.adoc +927 -0
  115. data/docs/_guides/cli/validate-ascii.adoc +645 -0
  116. data/docs/_guides/cli/validate-schemas.adoc +534 -0
  117. data/docs/_guides/formatter/formatter-architecture.adoc +401 -0
  118. data/docs/_guides/index.adoc +165 -0
  119. data/docs/_guides/ler/creating-packages.adoc +664 -0
  120. data/docs/_guides/ler/index.adoc +305 -0
  121. data/docs/_guides/ler/loading-packages.adoc +707 -0
  122. data/docs/_guides/ler/package-formats.adoc +748 -0
  123. data/docs/_guides/ler/querying-packages.adoc +826 -0
  124. data/docs/_guides/ler/step-packages.adoc +385 -0
  125. data/docs/_guides/ler/validating-packages.adoc +750 -0
  126. data/docs/_guides/liquid/basic-templates.adoc +813 -0
  127. data/docs/_guides/liquid/documentation-generation.adoc +1042 -0
  128. data/docs/_guides/liquid/drops-reference.adoc +829 -0
  129. data/docs/_guides/liquid/filters-and-tags.adoc +912 -0
  130. data/docs/_guides/liquid/index.adoc +468 -0
  131. data/docs/_guides/manifests/creating-manifests.adoc +483 -0
  132. data/docs/_guides/manifests/index.adoc +307 -0
  133. data/docs/_guides/manifests/resolving-manifests.adoc +557 -0
  134. data/docs/_guides/manifests/validating-manifests.adoc +713 -0
  135. data/docs/_guides/ruby-api/formatting-schemas.adoc +605 -0
  136. data/docs/_guides/ruby-api/index.adoc +257 -0
  137. data/docs/_guides/ruby-api/parsing-files.adoc +421 -0
  138. data/docs/_guides/ruby-api/search-engine.adoc +609 -0
  139. data/docs/_guides/ruby-api/working-with-repository.adoc +577 -0
  140. data/docs/_pages/data-model.adoc +665 -0
  141. data/docs/_pages/express-language.adoc +506 -0
  142. data/docs/_pages/getting-started.adoc +414 -0
  143. data/docs/_pages/index.adoc +116 -0
  144. data/docs/_pages/introduction.adoc +256 -0
  145. data/docs/_pages/ler-packages.adoc +837 -0
  146. data/docs/_pages/parsers.adoc +709 -0
  147. data/docs/_pages/schema-manifests.adoc +431 -0
  148. data/docs/_references/index.adoc +228 -0
  149. data/docs/_tutorials/creating-ler-package.adoc +735 -0
  150. data/docs/_tutorials/documentation-coverage.adoc +795 -0
  151. data/docs/_tutorials/formatting-schemas.adoc +89 -0
  152. data/docs/_tutorials/index.adoc +231 -0
  153. data/docs/_tutorials/liquid-templates.adoc +806 -0
  154. data/docs/_tutorials/parsing-your-first-schema.adoc +522 -0
  155. data/docs/_tutorials/querying-schemas.adoc +751 -0
  156. data/docs/_tutorials/working-with-multiple-schemas.adoc +676 -0
  157. data/docs/index.adoc +242 -0
  158. data/docs/lychee.toml +90 -0
  159. data/examples/demo_ler_usage.sh +86 -0
  160. data/examples/ler/README.md +111 -0
  161. data/examples/ler/simple_example.ler +0 -0
  162. data/examples/ler/simple_schema.exp +33 -0
  163. data/examples/ler_build.rb +75 -0
  164. data/examples/ler_cli.rb +79 -0
  165. data/examples/ler_demo_complete.rb +276 -0
  166. data/examples/ler_query.rb +91 -0
  167. data/examples/ler_query_examples.rb +305 -0
  168. data/examples/ler_stats.rb +81 -0
  169. data/examples/phase3_demo.rb +159 -0
  170. data/examples/query_demo_simple.rb +131 -0
  171. data/exe/expressir +6 -17
  172. data/exe/expressir-format +14 -0
  173. data/exe/{format-test → expressir-format-test} +8 -7
  174. data/expressir.gemspec +50 -37
  175. data/lib/expressir/3.2/expressir_core.so +0 -0
  176. data/lib/expressir/3.3/expressir_core.so +0 -0
  177. data/lib/expressir/3.4/expressir_core.so +0 -0
  178. data/lib/expressir/4.0/expressir_core.so +0 -0
  179. data/lib/expressir/benchmark.rb +310 -0
  180. data/lib/expressir/changes/item_change.rb +20 -0
  181. data/lib/expressir/changes/mapping_change.rb +16 -0
  182. data/lib/expressir/changes/schema_change.rb +85 -0
  183. data/lib/expressir/changes/version_change.rb +26 -0
  184. data/lib/expressir/changes.rb +9 -0
  185. data/lib/expressir/cli.rb +138 -11
  186. data/lib/expressir/commands/base.rb +25 -0
  187. data/lib/expressir/commands/benchmark.rb +59 -0
  188. data/lib/expressir/commands/benchmark_cache.rb +80 -0
  189. data/lib/expressir/commands/changes.rb +34 -0
  190. data/lib/expressir/commands/changes_import_eengine.rb +146 -0
  191. data/lib/expressir/commands/changes_validate.rb +63 -0
  192. data/lib/expressir/commands/check.rb +56 -0
  193. data/lib/expressir/commands/clean.rb +20 -0
  194. data/lib/expressir/commands/coverage.rb +458 -0
  195. data/lib/expressir/commands/expand.rb +26 -0
  196. data/lib/expressir/commands/file_violations.rb +70 -0
  197. data/lib/expressir/commands/fix.rb +33 -0
  198. data/lib/expressir/commands/flatten.rb +29 -0
  199. data/lib/expressir/commands/format.rb +43 -0
  200. data/lib/expressir/commands/manifest.rb +420 -0
  201. data/lib/expressir/commands/mapping_validate.rb +68 -0
  202. data/lib/expressir/commands/non_ascii_character.rb +49 -0
  203. data/lib/expressir/commands/non_ascii_violation_collection.rb +301 -0
  204. data/lib/expressir/commands/package.rb +1222 -0
  205. data/lib/expressir/commands/parity_inputs.rb +160 -0
  206. data/lib/expressir/commands/validate.rb +106 -0
  207. data/lib/expressir/commands/validate_ascii.rb +94 -0
  208. data/lib/expressir/commands/validate_load.rb +91 -0
  209. data/lib/expressir/commands/version.rb +9 -0
  210. data/lib/expressir/commands/xsd.rb +23 -0
  211. data/lib/expressir/commands.rb +30 -0
  212. data/lib/expressir/config.rb +40 -3
  213. data/lib/expressir/coverage.rb +510 -0
  214. data/lib/expressir/eengine/arm_compare_report.rb +23 -0
  215. data/lib/expressir/eengine/changes_section.rb +16 -0
  216. data/lib/expressir/eengine/compare_report.rb +69 -0
  217. data/lib/expressir/eengine/mim_compare_report.rb +23 -0
  218. data/lib/expressir/eengine/modified_object.rb +21 -0
  219. data/lib/expressir/eengine.rb +9 -0
  220. data/lib/expressir/errors.rb +113 -0
  221. data/lib/expressir/express/adoc_hyperlink_formatter.rb +30 -0
  222. data/lib/expressir/express/adoc_source_formatter.rb +12 -0
  223. data/lib/expressir/express/ast_key_converter.rb +114 -0
  224. data/lib/expressir/express/builder.rb +277 -0
  225. data/lib/expressir/express/builder_context.rb +22 -0
  226. data/lib/expressir/express/builder_registry.rb +397 -0
  227. data/lib/expressir/express/builders/attribute_decl_builder.rb +32 -0
  228. data/lib/expressir/express/builders/built_in_builder.rb +75 -0
  229. data/lib/expressir/express/builders/constant_builder.rb +108 -0
  230. data/lib/expressir/express/builders/declaration_builder.rb +20 -0
  231. data/lib/expressir/express/builders/derive_clause_builder.rb +14 -0
  232. data/lib/expressir/express/builders/derived_attr_builder.rb +28 -0
  233. data/lib/expressir/express/builders/domain_rule_builder.rb +21 -0
  234. data/lib/expressir/express/builders/entity_decl_builder.rb +116 -0
  235. data/lib/expressir/express/builders/explicit_attr_builder.rb +49 -0
  236. data/lib/expressir/express/builders/expression_builder.rb +416 -0
  237. data/lib/expressir/express/builders/function_decl_builder.rb +86 -0
  238. data/lib/expressir/express/builders/helpers.rb +148 -0
  239. data/lib/expressir/express/builders/interface_builder.rb +151 -0
  240. data/lib/expressir/express/builders/inverse_attr_builder.rb +43 -0
  241. data/lib/expressir/express/builders/inverse_attr_type_builder.rb +30 -0
  242. data/lib/expressir/express/builders/inverse_clause_builder.rb +14 -0
  243. data/lib/expressir/express/builders/literal_builder.rb +93 -0
  244. data/lib/expressir/express/builders/procedure_decl_builder.rb +82 -0
  245. data/lib/expressir/express/builders/qualifier_builder.rb +102 -0
  246. data/lib/expressir/express/builders/reference_builder.rb +18 -0
  247. data/lib/expressir/express/builders/rule_decl_builder.rb +97 -0
  248. data/lib/expressir/express/builders/schema_body_decl_builder.rb +18 -0
  249. data/lib/expressir/express/builders/schema_decl_builder.rb +56 -0
  250. data/lib/expressir/express/builders/schema_version_builder.rb +34 -0
  251. data/lib/expressir/express/builders/simple_id_builder.rb +17 -0
  252. data/lib/expressir/express/builders/statement_builder.rb +243 -0
  253. data/lib/expressir/express/builders/subtype_constraint_builder.rb +166 -0
  254. data/lib/expressir/express/builders/syntax_builder.rb +30 -0
  255. data/lib/expressir/express/builders/type_builder.rb +238 -0
  256. data/lib/expressir/express/builders/type_decl_builder.rb +26 -0
  257. data/lib/expressir/express/builders/unique_clause_builder.rb +20 -0
  258. data/lib/expressir/express/builders/unique_rule_builder.rb +41 -0
  259. data/lib/expressir/express/builders/where_clause_builder.rb +20 -0
  260. data/lib/expressir/express/builders.rb +55 -0
  261. data/lib/expressir/express/cache.rb +43 -18
  262. data/lib/expressir/express/checker.rb +812 -0
  263. data/lib/expressir/express/concatenator.rb +79 -0
  264. data/lib/expressir/express/core.rb +95 -0
  265. data/lib/expressir/express/error.rb +124 -0
  266. data/lib/expressir/express/formatter.rb +89 -1548
  267. data/lib/expressir/express/formatters/data_types_formatter.rb +362 -0
  268. data/lib/expressir/express/formatters/declarations_formatter.rb +753 -0
  269. data/lib/expressir/express/formatters/expressions_formatter.rb +180 -0
  270. data/lib/expressir/express/formatters/literals_formatter.rb +55 -0
  271. data/lib/expressir/express/formatters/references_formatter.rb +53 -0
  272. data/lib/expressir/express/formatters/remark_formatter.rb +270 -0
  273. data/lib/expressir/express/formatters/remark_item_formatter.rb +28 -0
  274. data/lib/expressir/express/formatters/statements_formatter.rb +272 -0
  275. data/lib/expressir/express/formatters/supertype_expressions_formatter.rb +54 -0
  276. data/lib/expressir/express/formatters.rb +22 -0
  277. data/lib/expressir/express/grammar/parser.rb +712 -0
  278. data/lib/expressir/express/grammar.rb +11 -0
  279. data/lib/expressir/express/hyperlink_formatter.rb +4 -5
  280. data/lib/expressir/express/interface_dot.rb +105 -0
  281. data/lib/expressir/express/lazy_repository.rb +211 -0
  282. data/lib/expressir/express/line_map.rb +48 -0
  283. data/lib/expressir/express/listing.rb +174 -0
  284. data/lib/expressir/express/model_traversal.rb +42 -0
  285. data/lib/expressir/express/model_visitor.rb +11 -10
  286. data/lib/expressir/express/node_position_index.rb +342 -0
  287. data/lib/expressir/express/parallel_files.rb +229 -0
  288. data/lib/expressir/express/parser.rb +501 -62
  289. data/lib/expressir/express/pretty_formatter.rb +586 -0
  290. data/lib/expressir/express/pretty_gate.rb +61 -0
  291. data/lib/expressir/express/refs_overlay.rb +47 -0
  292. data/lib/expressir/express/remark_attacher.rb +1098 -0
  293. data/lib/expressir/express/remark_overlay.rb +86 -0
  294. data/lib/expressir/express/remark_scanner.rb +245 -0
  295. data/lib/expressir/express/resolve_references_model_visitor.rb +7 -9
  296. data/lib/expressir/express/schema_block_scanner.rb +137 -0
  297. data/lib/expressir/express/schema_head_formatter.rb +4 -5
  298. data/lib/expressir/express/schema_plain_source_formatter.rb +11 -0
  299. data/lib/expressir/express/schema_source_formatter.rb +15 -0
  300. data/lib/expressir/express/scope_resolver.rb +223 -0
  301. data/lib/expressir/express/self_schema_reference.rb +126 -0
  302. data/lib/expressir/express/shtolo.rb +679 -0
  303. data/lib/expressir/express/smrl_xml.rb +125 -0
  304. data/lib/expressir/express/source_formatter.rb +15 -0
  305. data/lib/expressir/express/streaming_builder.rb +435 -0
  306. data/lib/expressir/express/xsd.rb +259 -0
  307. data/lib/expressir/express.rb +53 -0
  308. data/lib/expressir/liquid.rb +1 -0
  309. data/lib/expressir/manifest/resolver.rb +210 -0
  310. data/lib/expressir/manifest/validator.rb +192 -0
  311. data/lib/expressir/manifest.rb +6 -0
  312. data/lib/expressir/mapping/refpath.rb +857 -0
  313. data/lib/expressir/mapping.rb +253 -0
  314. data/lib/expressir/model/cache.rb +10 -9
  315. data/lib/expressir/model/concerns.rb +42 -0
  316. data/lib/expressir/model/data_types/aggregate.rb +8 -13
  317. data/lib/expressir/model/data_types/array.rb +15 -21
  318. data/lib/expressir/model/data_types/bag.rb +11 -15
  319. data/lib/expressir/model/data_types/binary.rb +9 -12
  320. data/lib/expressir/model/data_types/boolean.rb +7 -2
  321. data/lib/expressir/model/data_types/enumeration.rb +11 -15
  322. data/lib/expressir/model/data_types/enumeration_item.rb +5 -7
  323. data/lib/expressir/model/data_types/generic.rb +6 -8
  324. data/lib/expressir/model/data_types/generic_entity.rb +11 -13
  325. data/lib/expressir/model/data_types/integer.rb +7 -2
  326. data/lib/expressir/model/data_types/list.rb +13 -18
  327. data/lib/expressir/model/data_types/logical.rb +7 -2
  328. data/lib/expressir/model/data_types/number.rb +7 -2
  329. data/lib/expressir/model/data_types/real.rb +7 -9
  330. data/lib/expressir/model/data_types/select.rb +13 -18
  331. data/lib/expressir/model/data_types/set.rb +11 -15
  332. data/lib/expressir/model/data_types/string.rb +9 -12
  333. data/lib/expressir/model/data_types.rb +25 -0
  334. data/lib/expressir/model/declarations/attribute.rb +19 -28
  335. data/lib/expressir/model/declarations/constant.rb +10 -16
  336. data/lib/expressir/model/declarations/derived_attribute.rb +25 -0
  337. data/lib/expressir/model/declarations/entity.rb +39 -30
  338. data/lib/expressir/model/declarations/function.rb +32 -40
  339. data/lib/expressir/model/declarations/informal_proposition_rule.rb +25 -0
  340. data/lib/expressir/model/declarations/interface.rb +25 -16
  341. data/lib/expressir/model/declarations/interface_item.rb +9 -11
  342. data/lib/expressir/model/declarations/interfaced_item.rb +15 -19
  343. data/lib/expressir/model/declarations/inverse_attribute.rb +25 -0
  344. data/lib/expressir/model/declarations/parameter.rb +10 -16
  345. data/lib/expressir/model/declarations/procedure.rb +30 -37
  346. data/lib/expressir/model/declarations/remark_item.rb +11 -11
  347. data/lib/expressir/model/declarations/rule.rb +38 -43
  348. data/lib/expressir/model/declarations/schema.rb +162 -64
  349. data/lib/expressir/model/declarations/schema_version.rb +8 -11
  350. data/lib/expressir/model/declarations/schema_version_item.rb +8 -11
  351. data/lib/expressir/model/declarations/subtype_constraint.rb +14 -22
  352. data/lib/expressir/model/declarations/type.rb +18 -18
  353. data/lib/expressir/model/declarations/unique_rule.rb +8 -13
  354. data/lib/expressir/model/declarations/variable.rb +10 -16
  355. data/lib/expressir/model/declarations/where_rule.rb +8 -13
  356. data/lib/expressir/model/declarations.rb +31 -0
  357. data/lib/expressir/model/dependency_resolver.rb +268 -0
  358. data/lib/expressir/model/exp_file.rb +42 -0
  359. data/lib/expressir/model/expressions/aggregate_initializer.rb +8 -9
  360. data/lib/expressir/model/expressions/aggregate_initializer_item.rb +10 -12
  361. data/lib/expressir/model/expressions/binary_expression.rb +42 -36
  362. data/lib/expressir/model/expressions/entity_constructor.rb +10 -12
  363. data/lib/expressir/model/expressions/function_call.rb +10 -12
  364. data/lib/expressir/model/expressions/interval.rb +18 -23
  365. data/lib/expressir/model/expressions/query_expression.rb +11 -15
  366. data/lib/expressir/model/expressions/unary_expression.rb +13 -15
  367. data/lib/expressir/model/expressions.rb +18 -0
  368. data/lib/expressir/model/identifier.rb +18 -26
  369. data/lib/expressir/model/indexes/entity_index.rb +103 -0
  370. data/lib/expressir/model/indexes/item_graph.rb +185 -0
  371. data/lib/expressir/model/indexes/reference_index.rb +148 -0
  372. data/lib/expressir/model/indexes/type_index.rb +149 -0
  373. data/lib/expressir/model/indexes.rb +12 -0
  374. data/lib/expressir/model/interface_validator.rb +384 -0
  375. data/lib/expressir/model/literals/binary.rb +7 -9
  376. data/lib/expressir/model/literals/integer.rb +7 -9
  377. data/lib/expressir/model/literals/logical.rb +10 -12
  378. data/lib/expressir/model/literals/real.rb +7 -9
  379. data/lib/expressir/model/literals/string.rb +10 -12
  380. data/lib/expressir/model/literals.rb +13 -0
  381. data/lib/expressir/model/model_element.rb +286 -117
  382. data/lib/expressir/model/references/attribute_reference.rb +9 -12
  383. data/lib/expressir/model/references/group_reference.rb +9 -12
  384. data/lib/expressir/model/references/index_reference.rb +11 -15
  385. data/lib/expressir/model/references/simple_reference.rb +11 -14
  386. data/lib/expressir/model/references.rb +12 -0
  387. data/lib/expressir/model/remark_format.rb +17 -0
  388. data/lib/expressir/model/remark_info.rb +92 -0
  389. data/lib/expressir/model/remark_placement.rb +42 -0
  390. data/lib/expressir/model/repository.rb +472 -12
  391. data/lib/expressir/model/repository_validator.rb +293 -0
  392. data/lib/expressir/model/search_engine.rb +551 -0
  393. data/lib/expressir/model/statements/alias.rb +12 -16
  394. data/lib/expressir/model/statements/assignment.rb +12 -11
  395. data/lib/expressir/model/statements/case.rb +31 -14
  396. data/lib/expressir/model/statements/case_action.rb +9 -11
  397. data/lib/expressir/model/statements/compound.rb +10 -8
  398. data/lib/expressir/model/statements/escape.rb +10 -2
  399. data/lib/expressir/model/statements/if.rb +15 -14
  400. data/lib/expressir/model/statements/null.rb +10 -2
  401. data/lib/expressir/model/statements/procedure_call.rb +11 -11
  402. data/lib/expressir/model/statements/repeat.rb +21 -28
  403. data/lib/expressir/model/statements/return.rb +9 -8
  404. data/lib/expressir/model/statements/skip.rb +10 -2
  405. data/lib/expressir/model/statements.rb +20 -0
  406. data/lib/expressir/model/supertype_expressions/binary_supertype_expression.rb +13 -17
  407. data/lib/expressir/model/supertype_expressions/oneof_supertype_expression.rb +7 -9
  408. data/lib/expressir/model/supertype_expressions.rb +12 -0
  409. data/lib/expressir/model.rb +38 -78
  410. data/lib/expressir/package/builder.rb +231 -0
  411. data/lib/expressir/package/metadata.rb +79 -0
  412. data/lib/expressir/package/reader.rb +149 -0
  413. data/lib/expressir/package.rb +8 -0
  414. data/lib/expressir/schema_manifest.rb +159 -0
  415. data/lib/expressir/schema_manifest_entry.rb +15 -0
  416. data/lib/expressir/version.rb +6 -1
  417. data/lib/expressir.rb +79 -9
  418. data/lib/tasks/verify_remarks.rake +16 -0
  419. data/rakelib/native.rake +24 -0
  420. data/rakelib/oracle.rake +52 -0
  421. data/rakelib/verify_remarks.rake +16 -0
  422. metadata +431 -129
  423. data/.cross_rubies +0 -20
  424. data/.gitmodules +0 -6
  425. data/.yardopts +0 -11
  426. data/docs/development.md +0 -90
  427. data/exe/format +0 -18
  428. data/exe/generate-parser +0 -51
  429. data/lib/expressir/cli/ui.rb +0 -36
  430. data/lib/expressir/express/2.7/express_parser.so +0 -0
  431. data/lib/expressir/express/3.0/express_parser.so +0 -0
  432. data/lib/expressir/express/3.1/express_parser.so +0 -0
  433. data/lib/expressir/express/3.2/express_parser.so +0 -0
  434. data/lib/expressir/express/visitor.rb +0 -2588
  435. data/lib/expressir/model/data_type.rb +0 -9
  436. data/lib/expressir/model/declaration.rb +0 -9
  437. data/lib/expressir/model/expression.rb +0 -9
  438. data/lib/expressir/model/literal.rb +0 -9
  439. data/lib/expressir/model/reference.rb +0 -9
  440. data/lib/expressir/model/statement.rb +0 -9
  441. data/lib/expressir/model/supertype_expression.rb +0 -9
  442. data/rakelib/antlr4-native.rake +0 -161
  443. data/rakelib/cross-ruby.rake +0 -368
  444. data/spec/acceptance/version_spec.rb +0 -27
  445. data/spec/expressir/express/cache_spec.rb +0 -89
  446. data/spec/expressir/express/formatter_spec.rb +0 -173
  447. data/spec/expressir/express/parser_spec.rb +0 -141
  448. data/spec/expressir/model/model_element_spec.rb +0 -318
  449. data/spec/spec_helper.rb +0 -24
  450. data/spec/support/console_helper.rb +0 -29
  451. data/spec/syntax/multiple.exp +0 -23
  452. data/spec/syntax/multiple.yaml +0 -198
  453. data/spec/syntax/multiple_formatted.exp +0 -71
  454. data/spec/syntax/multiple_hyperlink_formatted.exp +0 -71
  455. data/spec/syntax/multiple_schema_head_hyperlink_formatted.exp +0 -13
  456. data/spec/syntax/remark.exp +0 -193
  457. data/spec/syntax/remark.yaml +0 -471
  458. data/spec/syntax/remark_formatted.exp +0 -228
  459. data/spec/syntax/single.exp +0 -4
  460. data/spec/syntax/single.yaml +0 -18
  461. data/spec/syntax/single_formatted.exp +0 -10
  462. data/spec/syntax/single_formatted.yaml +0 -36
  463. data/spec/syntax/syntax.exp +0 -333
  464. data/spec/syntax/syntax.yaml +0 -3509
  465. data/spec/syntax/syntax_formatted.exp +0 -902
  466. data/spec/syntax/syntax_hyperlink_formatted.exp +0 -902
  467. data/spec/syntax/syntax_schema_head_formatted.exp +0 -18
@@ -1,305 +1,19 @@
1
+ # Auto-generated by Cimas: Do not edit it manually!
2
+ # See https://github.com/metanorma/cimas
1
3
  name: rake
2
4
 
5
+ permissions:
6
+ contents: write
7
+ pull-requests: write
8
+
3
9
  on:
4
10
  push:
5
11
  branches: [ master, main ]
12
+ tags: [ v* ]
6
13
  pull_request:
7
14
 
8
- concurrency:
9
- group: '${{ github.workflow }}-${{ github.job }}-${{ github.head_ref || github.ref_name }}'
10
- cancel-in-progress: true
11
-
12
- env:
13
- BUNDLER_VER: 2.4.22
14
- # Forcing bundler version to ensure that it is consistent everywhere and
15
- # does not cause bundler gem reinstalls
16
- # bundler/rubygems 2.3.22 is a minimal requirement to support gnu/musl differentiation
17
- # https://github.com/rubygems/rubygems/pull/4488
18
-
19
15
  jobs:
20
- rubocop:
21
- runs-on: ubuntu-latest
22
- steps:
23
- - name: Checkout
24
- uses: actions/checkout@v4
25
- with:
26
- submodules: recursive
27
-
28
- - name: Install Ruby
29
- uses: ruby/setup-ruby@master
30
- with:
31
- ruby-version: 3.1
32
- bundler: ${{ env.BUNDLER_VER }}
33
- bundler-cache: true
34
-
35
- - name: Bundle
36
- run: bundle install --jobs 4 --retry 3
37
-
38
- - name: Rubocop
39
- run: bundle exec rake rubocop
40
-
41
16
  rake:
42
- name: test on ruby-${{ matrix.ruby }} ${{ matrix.os }}
43
- runs-on: ${{ matrix.os }}
44
- strategy:
45
- fail-fast: false
46
- matrix:
47
- ruby: [ '3.2', '3.1', '3.0', '2.7' ]
48
- os: [ ubuntu-latest, windows-latest, macos-latest ]
49
-
50
- steps:
51
- - name: Checkout
52
- uses: actions/checkout@v4
53
- with:
54
- submodules: recursive
55
-
56
- - name: Setup packages
57
- if: startsWith(matrix.os, 'macos')
58
- run: brew install autoconf automake libtool
59
-
60
- - name: Install Ruby
61
- uses: ruby/setup-ruby@master
62
- with:
63
- ruby-version: ${{ matrix.ruby }}
64
- bundler: ${{ env.BUNDLER_VER }}
65
- bundler-cache: true
66
-
67
- - name: Process cache
68
- uses: actions/cache@v3
69
- id: cache
70
- with:
71
- path: lib/expressir/express/express_parser.*
72
- key: v4-${{ matrix.os }}-${{ matrix.ruby }}-${{ hashFiles('ext/express-parser/extconf.rb', 'ext/express-parser/antlrgen/**', 'ext/express-parser/express_parser.cpp', '.git/modules/ext/express-parser/antlr4-upstream/HEAD') }}
73
-
74
- - name: Build native extension
75
- if: steps.cache.outputs.cache-hit != 'true'
76
- run: bundle exec rake compile
77
-
78
- - name: Run tests
79
- run: |
80
- bundle exec rake
81
- cat .rspec_status
82
-
83
- # test release workflow
84
- pack-ruby:
85
- runs-on: ubuntu-latest
86
- steps:
87
- - name: Checkout
88
- uses: actions/checkout@v4
89
- with:
90
- submodules: recursive
91
-
92
- - name: Setup Ruby
93
- uses: ruby/setup-ruby@master
94
- with:
95
- ruby-version: '3.0'
96
- # bundler-cache: true important to not use cache because it leads to "cannot find -lrice"
97
- # more info https://github.com/lutaml/expressir/runs/2097658383?check_suite_focus=true#step:7:2126
98
- bundler: ${{ env.BUNDLER_VER }}
99
-
100
- - name: Bundle
101
- run: bundle install --jobs 4 --retry 3
102
-
103
- - name: Build gem without native extension
104
- run: gem build expressir.gemspec
105
-
106
- - name: Package gem without native extension
107
- uses: actions/upload-artifact@v3
108
- with:
109
- name: pkg-ruby
110
- path: expressir-*.gem
111
-
112
- pack:
113
- runs-on: ubuntu-latest
114
- strategy:
115
- fail-fast: false
116
- matrix:
117
- host: [ linux, windows, darwin ]
118
- steps:
119
- - name: Checkout
120
- uses: actions/checkout@v4
121
- with:
122
- submodules: recursive
123
-
124
- - name: Setup Ruby
125
- uses: ruby/setup-ruby@master
126
- with:
127
- ruby-version: '3.0'
128
- # bundler-cache: true important to not use cache because it leads to "cannot find -lrice"
129
- # more info https://github.com/lutaml/expressir/runs/2097658383?check_suite_focus=true#step:7:2126
130
- bundler: ${{ env.BUNDLER_VER }}
131
-
132
- - name: Bundle
133
- run: bundle install --jobs 4 --retry 3
134
-
135
- - name: Enable swap
136
- run: |
137
- sudo fallocate -l 15g /compile.swap
138
- sudo chmod 600 /compile.swap
139
- sudo mkswap /compile.swap
140
- sudo swapon /compile.swap
141
- sudo swapon --all --verbose
142
-
143
- - name: Build gem with native extension
144
- run: bundle exec rake gem:${{ matrix.host }}
145
-
146
- - name: Package gem with native extension
147
- uses: actions/upload-artifact@v3
148
- with:
149
- name: pkg-${{ matrix.host }}
150
- path: pkg/*.gem
151
-
152
- verify-ruby:
153
- name: verify ruby gem on ruby-${{ matrix.ruby }} ${{ matrix.os }}
154
- needs: pack-ruby
155
- runs-on: ${{ matrix.os }}
156
- strategy:
157
- fail-fast: false
158
- matrix:
159
- ruby: [ '3.2', '3.1', '3.0', '2.7' ]
160
- os: [ ubuntu-latest, windows-latest, macos-latest ]
161
- steps:
162
- - name: Install Ruby
163
- uses: ruby/setup-ruby@master
164
- with:
165
- ruby-version: ${{ matrix.ruby }}
166
- bundler-cache: true
167
- bundler: ${{ env.BUNDLER_VER }}
168
-
169
- - name: Checkout
170
- uses: actions/checkout@v4
171
- with:
172
- submodules: recursive
173
-
174
- - name: Bundle
175
- run: bundle install --jobs 4 --retry 3
176
-
177
- - name: Download packaged gem
178
- uses: actions/download-artifact@v3
179
- with:
180
- name: pkg-ruby
181
- path: pkg
182
-
183
- - name: Install gem
184
- run: gem install -l pkg/expressir-*.gem
185
-
186
- - name: Verify
187
- run: |
188
- cd $(ruby -e "puts RbConfig::TOPDIR + '\/lib\/ruby\/gems\/' + RbConfig::CONFIG['ruby_version'] + '\/gems\/expressir*'")
189
- ruby bin/rspec
190
- cat .rspec_status || echo ".rspec_status was not found"
191
-
192
- verify-darwin:
193
- name: verify MacOS binary gem on ruby-${{ matrix.ruby }}
194
- needs: pack
195
- runs-on: macos-latest
196
- strategy:
197
- fail-fast: false
198
- matrix:
199
- ruby: [ '3.2', '3.1', '3.0', '2.7' ]
200
- steps:
201
- - name: Install Ruby
202
- uses: ruby/setup-ruby@master
203
- with:
204
- ruby-version: ${{ matrix.ruby }}
205
- bundler-cache: true
206
- bundler: ${{ env.BUNDLER_VER }}
207
-
208
- - name: Checkout
209
- uses: actions/checkout@v4
210
-
211
- - name: Bundle
212
- run: bundle install --jobs 4 --retry 3
213
-
214
- - name: Download packaged gem
215
- uses: actions/download-artifact@v3
216
- with:
217
- name: pkg-darwin
218
- path: pkg
219
-
220
- - name: Install binary gem
221
- run: gem install -l pkg/expressir-*-$(ruby -e "puts RUBY_PLATFORM.sub(/darwin\d{2}$/, 'darwin')").gem
222
- # MacOS with have something like x86_64-darwin19, others just x86_64-linux
223
-
224
- - name: Verify
225
- run: |
226
- cd $(ruby -e "puts RbConfig::TOPDIR + '\/lib\/ruby\/gems\/' + RbConfig::CONFIG['ruby_version'] + '\/gems\/expressir*'")
227
- ruby bin/rspec
228
- cat .rspec_status || echo ".rspec_status was not found"
229
-
230
- verify-linux:
231
- name: verify Linux binary gem on ruby-${{ matrix.ruby }}
232
- needs: pack
233
- runs-on: ubuntu-latest
234
- strategy:
235
- fail-fast: false
236
- matrix:
237
- ruby: [ '3.2', '3.1', '3.0', '2.7' ]
238
- steps:
239
- - name: Install Ruby
240
- uses: ruby/setup-ruby@master
241
- with:
242
- ruby-version: ${{ matrix.ruby }}
243
- bundler-cache: true
244
- bundler: ${{ env.BUNDLER_VER }}
245
-
246
- - name: Checkout
247
- uses: actions/checkout@v4
248
-
249
- - name: Bundle
250
- run: bundle install --jobs 4 --retry 3
251
-
252
- - name: Download packaged gem
253
- uses: actions/download-artifact@v3
254
- with:
255
- name: pkg-linux
256
- path: pkg
257
-
258
- - name: Install binary gem
259
- run: gem install -l pkg/expressir-*-$(ruby -e "puts RUBY_PLATFORM").gem
260
-
261
- - name: Verify
262
- run: |
263
- cd $(ruby -e "puts RbConfig::TOPDIR + '\/lib\/ruby\/gems\/' + RbConfig::CONFIG['ruby_version'] + '\/gems\/expressir*'")
264
- ruby bin/rspec
265
- cat .rspec_status || echo ".rspec_status was not found"
266
-
267
- verify-windows:
268
- name: verify Windows binary gem on ruby-${{ matrix.ruby }}
269
- needs: pack
270
- continue-on-error: true
271
- runs-on: windows-latest
272
- strategy:
273
- fail-fast: false
274
- # Ruby 3.1 fails
275
- # https://github.com/lutaml/expressir/issues/103
276
- matrix:
277
- ruby: [ '3.2', '3.1', '3.0', '2.7' ]
278
- steps:
279
- - name: Install Ruby
280
- uses: ruby/setup-ruby@master
281
- with:
282
- ruby-version: ${{ matrix.ruby }}
283
- bundler-cache: true
284
- bundler: ${{ env.BUNDLER_VER }}
285
-
286
- - name: Checkout
287
- uses: actions/checkout@v4
288
-
289
- - name: Bundle
290
- run: bundle install --jobs 4 --retry 3
291
-
292
- - name: Download packaged gem
293
- uses: actions/download-artifact@v3
294
- with:
295
- name: pkg-windows
296
- path: pkg
297
-
298
- - name: Install binary gem
299
- run: gem install -l pkg/expressir-*-$(ruby -e "puts RUBY_PLATFORM").gem
300
-
301
- - name: Verify
302
- run: |
303
- cd $(ruby -e "puts RbConfig::TOPDIR + '\/lib\/ruby\/gems\/' + RbConfig::CONFIG['ruby_version'] + '\/gems\/expressir*'")
304
- ruby bin/rspec
305
- cat .rspec_status || echo ".rspec_status was not found"
17
+ uses: metanorma/ci/.github/workflows/generic-rake.yml@main
18
+ secrets:
19
+ pat_token: ${{ secrets.LUTAML_CI_PAT_TOKEN }}
@@ -1,125 +1,37 @@
1
1
  name: release
2
2
 
3
+ permissions:
4
+ contents: write
5
+ packages: write
6
+ pull-requests: write
7
+ id-token: write
8
+
3
9
  on:
4
10
  workflow_dispatch:
5
11
  inputs:
6
12
  next_version:
7
13
  description: |
8
- Next release version. Possible values: x.y.z, major, minor, patch or pre|rc|etc
14
+ Next release version. Possible values: x.y.z, major, minor, patch (or pre|rc|etc).
15
+ Also, you can pass 'skip' to skip 'git tag' and do 'gem push' for the current version
9
16
  required: true
10
- default: 'patch'
11
- push:
12
- tags: [ v* ]
13
-
14
- concurrency:
15
- group: '${{ github.workflow }}-${{ github.job }}-${{ github.head_ref || github.ref_name }}'
16
- cancel-in-progress: true
17
+ default: 'skip'
18
+ repository_dispatch:
19
+ types: [ do-release ]
17
20
 
18
21
  jobs:
19
- bump:
20
- runs-on: ubuntu-latest
21
- steps:
22
- - uses: actions/checkout@v4
23
- with:
24
- submodules: recursive
25
-
26
- - uses: ruby/setup-ruby@master
27
- with:
28
- ruby-version: '3.1'
29
- bundler: ${{ env.BUNDLER_VER }}
30
-
31
- - if: ${{ github.event_name == 'workflow_dispatch' }} # unfortunatelly cannot keep this condition on job level
32
- run: |
33
- git config user.name github-actions
34
- git config user.email github-actions@github.com
35
- gem install gem-release
36
- gem bump --version ${{ github.event.inputs.next_version }} --tag --push
37
-
38
- pack:
39
- runs-on: ubuntu-latest
40
- needs: bump
41
- strategy:
42
- fail-fast: false
43
- matrix:
44
- host: [ linux, windows, darwin ]
45
- steps:
46
- - uses: actions/checkout@v4
47
- with:
48
- submodules: recursive
49
- ref: main # https://github.com/actions/checkout/issues/439#issuecomment-830862188
50
-
51
- - uses: ruby/setup-ruby@master
52
- with:
53
- ruby-version: '3.1'
54
- # bundler-cache: true important to not use cache because it leads to "cannot find -lrice"
55
- # more info https://github.com/lutaml/expressir/runs/2097658383?check_suite_focus=true#step:7:2126
56
-
57
- - run: bundle install --jobs 4 --retry 3
58
-
59
- # build gem WITHOUT pre-built native extension
60
- - run: gem build expressir.gemspec
61
-
62
- - if: matrix.host == 'linux'
63
- uses: actions/upload-artifact@v3
64
- with:
65
- name: pkg-ruby
66
- path: expressir-*.gem
67
-
68
- - name: Enable swap
69
- run: |
70
- sudo fallocate -l 15g /compile.swap
71
- sudo chmod 600 /compile.swap
72
- sudo mkswap /compile.swap
73
- sudo swapon /compile.swap
74
- sudo swapon --all --verbose
75
-
76
- # build gem WITH pre-built native extension
77
- - run: bundle exec rake gem:${{ matrix.host }}
78
-
79
- - uses: actions/upload-artifact@v3
80
- with:
81
- name: pkg-${{ matrix.host }}
82
- path: pkg/*.gem
83
-
84
- publish:
85
- runs-on: ubuntu-latest
86
- needs: pack
87
- steps:
88
- - uses: actions/download-artifact@v3
89
- with:
90
- name: pkg-ruby
91
- path: pkg
92
-
93
- - uses: actions/download-artifact@v3
94
- with:
95
- name: pkg-linux
96
- path: pkg
97
-
98
- - uses: actions/download-artifact@v3
99
- with:
100
- name: pkg-windows
101
- path: pkg
102
-
103
- - uses: actions/download-artifact@v3
104
- with:
105
- name: pkg-darwin
106
- path: pkg
107
-
108
- - uses: ruby/setup-ruby@master
109
- with:
110
- ruby-version: '3.1'
111
-
112
- - run: ls -l pkg/
22
+ release:
23
+ uses: metanorma/ci/.github/workflows/rubygems-release.yml@main
24
+ permissions:
25
+ id-token: write
26
+ contents: write
27
+ packages: write
28
+ pull-requests: write
29
+ with:
30
+ next_version: ${{ github.event.inputs.next_version }}
31
+ release_command: rake release
32
+ bundler_cache: false
33
+ post_install: bundle install
34
+ secrets:
35
+ rubygems-api-key: ${{ secrets.LUTAML_CI_RUBYGEMS_API_KEY }}
36
+ pat_token: ${{ secrets.LUTAML_CI_PAT_TOKEN }}
113
37
 
114
- - name: Publish to rubygems.org
115
- env:
116
- RUBYGEMS_API_KEY: ${{ secrets.LUTAML_CI_RUBYGEMS_API_KEY }}
117
- run: |
118
- mkdir -p ~/.gem
119
- cat > ~/.gem/credentials << EOF
120
- ---
121
- :rubygems_api_key: ${RUBYGEMS_API_KEY}
122
- EOF
123
- chmod 0600 ~/.gem/credentials
124
- gem signin
125
- for gem in pkg/*.gem; do gem push $gem -V; done
@@ -0,0 +1,41 @@
1
+ name: rust-ext
2
+
3
+ on:
4
+ push:
5
+ branches: [master, main]
6
+ pull_request:
7
+
8
+ jobs:
9
+ build-ext:
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - uses: actions/checkout@v4
13
+ - uses: dtolnay/rust-toolchain@stable
14
+ - uses: ruby/setup-ruby@v1
15
+ with:
16
+ ruby-version: "3.4"
17
+ bundler-cache: true
18
+ - name: Build the expressir-core extension
19
+ working-directory: ext/expressir_core
20
+ run: |
21
+ gem install rb_sys
22
+ ruby extconf.rb
23
+ RB_SYS_CARGO_PROFILE=release make
24
+ - name: Smoke test the bridge
25
+ run: |
26
+ bundle exec ruby -e '
27
+ require "expressir"
28
+ require "expressir/express/core"
29
+ raise "native unavailable" unless Expressir::Express::Core::NATIVE_AVAILABLE
30
+ src = File.read("spec/syntax/multiple.exp")
31
+ m = Expressir::Express::Core.parse_to_model_hash(src, "multiple.exp")
32
+ raise "bad model" unless m["schemas"].first["id"] == "multiple_schema"
33
+ puts "bridge OK"
34
+ '
35
+ # The default `rake` CI job covers the pure-Ruby parse path (no
36
+ # extension built there); this job pins the core parse path: with the
37
+ # extension present the parser defaults to it, so the whole suite runs
38
+ # against the Rust wire hydration.
39
+ - name: Run the suite on the core parse path
40
+ run: |
41
+ bundle exec rspec spec/expressir spec/syntax --tag ~production_scale
@@ -0,0 +1,36 @@
1
+ name: stress
2
+
3
+ on:
4
+ workflow_dispatch:
5
+
6
+ concurrency:
7
+ group: '${{ github.workflow }}-${{ github.job }}-${{ github.head_ref || github.ref_name }}'
8
+ cancel-in-progress: true
9
+
10
+ env:
11
+ GC_STRESS: true
12
+
13
+ jobs:
14
+ rake:
15
+ name: test on ruby-${{ matrix.ruby }} ${{ matrix.os }}
16
+ runs-on: ${{ matrix.os }}
17
+ strategy:
18
+ fail-fast: false
19
+ matrix:
20
+ ruby: [ '3.2', '3.1', '3.0', '2.7' ]
21
+ os: [ ubuntu-latest, windows-latest, macos-latest ]
22
+
23
+ steps:
24
+ - name: Checkout
25
+ uses: actions/checkout@v4
26
+
27
+ - name: Install Ruby
28
+ uses: ruby/setup-ruby@master
29
+ with:
30
+ ruby-version: ${{ matrix.ruby }}
31
+ bundler-cache: true
32
+
33
+ - name: Run tests
34
+ run: |
35
+ bundle exec rake
36
+ cat .rspec_status
@@ -0,0 +1,48 @@
1
+ name: "validate_schemas"
2
+
3
+ on:
4
+ push:
5
+ branches: [ main ]
6
+ pull_request:
7
+ workflow_dispatch:
8
+
9
+ concurrency:
10
+ group: '${{ github.workflow }}-${{ github.job }}-${{ github.head_ref || github.ref_name }}'
11
+ cancel-in-progress: true
12
+
13
+ jobs:
14
+ schemas:
15
+ name: Validate schemas
16
+ runs-on: ubuntu-latest
17
+ strategy:
18
+ fail-fast: false
19
+ matrix:
20
+ test-group:
21
+ [
22
+ 'iso-10303/schemas-srl.yml',
23
+ 'iso-10303/schemas_module.yml',
24
+ 'iso-10303/schemas_bom.yml',
25
+ ]
26
+
27
+ steps:
28
+ - name: Checkout
29
+ uses: actions/checkout@v4
30
+
31
+ - name: Checkout
32
+ uses: actions/checkout@v4
33
+ with:
34
+ repository: 'metanorma/iso-10303'
35
+ path: iso-10303
36
+ token: ${{ secrets.LUTAML_CI_PAT_TOKEN }}
37
+
38
+ - name: Install Ruby
39
+ uses: ruby/setup-ruby@master
40
+ with:
41
+ ruby-version: 3.2
42
+ bundler-cache: true
43
+ cache-version: 0 # Increment this number if you need to re-download cached gems
44
+
45
+ - name: Validate schemas ${{ matrix.test-group }}
46
+ run: |
47
+ yq '.schemas[].path | sub("schemas", "iso-10303/schemas")' ${{ matrix.test-group }} | xargs bundle exec ./exe/expressir validate load
48
+
@@ -0,0 +1,33 @@
1
+ name: "verify_remarks"
2
+
3
+ permissions:
4
+ contents: read
5
+
6
+ on:
7
+ push:
8
+ branches: [ main ]
9
+ pull_request:
10
+ workflow_dispatch:
11
+
12
+ concurrency:
13
+ group: '${{ github.workflow }}-${{ github.ref }}'
14
+ cancel-in-progress: true
15
+
16
+ jobs:
17
+ remarks:
18
+ name: Verify remark conservation
19
+ runs-on: ubuntu-latest
20
+
21
+ steps:
22
+ - name: Checkout
23
+ uses: actions/checkout@v4
24
+
25
+ - name: Install Ruby
26
+ uses: ruby/setup-ruby@master
27
+ with:
28
+ ruby-version: "3.2"
29
+ bundler-cache: true
30
+ cache-version: 0 # Increment this number if you need to re-download cached gems
31
+
32
+ - name: Verify remark conservation
33
+ run: bundle exec rake verify:remarks
data/.gitignore CHANGED
@@ -14,10 +14,42 @@
14
14
  /lib/expressir/express/*/express_parser.bundle
15
15
  /lib/expressir/express/*/express_parser.so
16
16
  /spec/syntax/*-pretty.exp
17
- /ext/express-parser/rice-embed
17
+ /ext/express_parser/rice-embed
18
18
 
19
19
  # rspec failure tracking
20
20
  .rspec_status
21
21
 
22
22
  # rubocop guide
23
23
  .rubocop-https---*
24
+ _site/
25
+
26
+ Gemfile.lock
27
+
28
+ # Claude Code
29
+ .claude/
30
+
31
+ # Development / transient files
32
+ *.ler
33
+ *.pax
34
+ TODO.*.md
35
+ TODO.refactor/
36
+ debug_*.rb
37
+ measure_mem.rb
38
+ tmp_*.rb
39
+ mise.toml
40
+ Gemfile.local
41
+ Gemfile.local.lock
42
+ Gemfile.original
43
+ benchmark/
44
+ CLAUDE.md
45
+
46
+ # Rust workspace
47
+ /target/
48
+ Cargo.lock
49
+ /ext/expressir_core/target/
50
+ /ext/expressir_core/*.bundle
51
+
52
+ # prebuilt binding staged by rake-compiler for platform gems
53
+ /lib/expressir/expressir_core.bundle
54
+ /lib/expressir/expressir_core.so
55
+ /lib/expressir/expressir_core.dll
data/.rubocop.yml CHANGED
@@ -1,18 +1,18 @@
1
1
  inherit_from:
2
- - https://raw.githubusercontent.com/riboseinc/oss-guides/master/ci/rubocop.yml
2
+ - https://raw.githubusercontent.com/riboseinc/oss-guides/main/ci/rubocop.yml
3
+ - .rubocop_todo.yml
4
+
5
+ plugins:
6
+ - rubocop-performance
7
+ - rubocop-rake
8
+ - rubocop-rspec
3
9
 
4
10
  AllCops:
5
- TargetRubyVersion: 2.7
11
+ TargetRubyVersion: 3.2
6
12
  NewCops: enable
7
- SuggestExtensions: false
8
13
  Exclude:
9
14
  - 'vendor/**/*'
10
- - 'expressir.gemspec'
11
- - 'tmp/**/*'
12
- - 'pkg/**/*'
13
- - 'exe/format-test'
14
- - 'lib/expressir/express/**/*'
15
- - 'lib/expressir/model/**/*'
15
+ - 'metanorma-mirror-*/**/*'
16
16
 
17
- Layout/LineLength:
18
- Max: 160
17
+ Lint/UnusedMethodArgument:
18
+ AllowUnusedKeywordArguments: true