expressir 2.4.29-arm-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 (426) hide show
  1. checksums.yaml +7 -0
  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 +19 -0
  9. data/.github/workflows/release.yml +37 -0
  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 +55 -0
  15. data/.hound.yml +3 -0
  16. data/.rspec +2 -0
  17. data/.rubocop.yml +18 -0
  18. data/.rubocop_todo.yml +297 -0
  19. data/CHANGELOG.md +159 -0
  20. data/Gemfile +18 -0
  21. data/README.adoc +2783 -0
  22. data/Rakefile +41 -0
  23. data/TODO.bugs/01-stale-transformer-autoload.md +39 -0
  24. data/TODO.bugs/02-parser-class-instance-vars.md +36 -0
  25. data/TODO.bugs/03-builder-mutable-state.md +43 -0
  26. data/TODO.bugs/04-formatter-public-send-dispatch.md +53 -0
  27. data/TODO.bugs/05-anonymous-formatter-subclass.md +45 -0
  28. data/TODO.bugs/06-collection-registry-single-source.md +53 -0
  29. data/TODO.bugs/07-require-relative-cleanup.md +42 -0
  30. data/TODO.bugs/08-require-expressir-in-commands.md +34 -0
  31. data/TODO.bugs/09-parser-split.md +53 -0
  32. data/TODO.bugs/10-to-s-override.md +42 -0
  33. data/TODO.bugs/11-parser-class-variables.md +39 -0
  34. data/TODO.bugs/12-marker-modules-vs-registry.md +64 -0
  35. data/TODO.bugs/13-string-literal-scanner-limitation.md +52 -0
  36. data/TODO.bugs/14-model-formatting-leak.md +30 -0
  37. data/TODO.bugs/15-expression-children-macro.md +27 -0
  38. data/TODO.bugs/16-pretty-formatter-duplication.md +28 -0
  39. data/TODO.bugs/17-snake-case-cache-mutable-constant.md +28 -0
  40. data/TODO.bugs/18-const-get-private-constants.md +30 -0
  41. data/TODO.bugs/19-format-methods-public.md +22 -0
  42. data/TODO.bugs/20-coverage-nested-entities-dedup.md +20 -0
  43. data/TODO.bugs/21-operator-tokens-secondary-dispatch.md +21 -0
  44. data/TODO.bugs/22-builder-fast-path-wrappers.md +32 -0
  45. data/TODO.bugs/23-coverage-inverse-maps.md +21 -0
  46. data/TODO.bugs/24-streaming-builder-complexity.md +19 -0
  47. data/TODO.bugs/25-debug-puts-in-production.md +21 -0
  48. data/TODO.bugs/26-generic-entity-children-misplaced.md +21 -0
  49. data/TODO.bugs/27-package-build-god-method.md +19 -0
  50. data/TODO.bugs/28-package-god-class.md +30 -0
  51. data/TODO.bugs/29-validate-ascii-god-class.md +24 -0
  52. data/TODO.bugs/30-unicode-map-extraction.md +19 -0
  53. data/TODO.bugs/README.md +43 -0
  54. data/TODO.max-perf/01-restore-ci-green.md +36 -0
  55. data/TODO.max-perf/02-streaming-parse-path.md +31 -0
  56. data/TODO.max-perf/03-cli-parallel-opt-in.md +27 -0
  57. data/TODO.max-perf/04-benchmark-harness.md +28 -0
  58. data/TODO.max-perf/05-parallel-fidelity-specs.md +22 -0
  59. data/TODO.max-perf/06-builder-cpu-audit.md +41 -0
  60. data/TODO.max-perf/07-upstream-parsanol-roadmap.md +27 -0
  61. data/TODO.max-perf/08-builder-build-perf.md +45 -0
  62. data/TODO.max-perf/09-grammar-cold-start.md +25 -0
  63. data/TODO.max-perf/10-parser-facade-hygiene.md +23 -0
  64. data/TODO.max-perf/11-ci-green-closeout.md +25 -0
  65. data/TODO.max-perf/12-require-boot-profile.md +25 -0
  66. data/TODO.max-perf/13-key-conversion-specs.md +26 -0
  67. data/TODO.max-perf/14-builder-call-handler-audit.md +28 -0
  68. data/TODO.parity-ee/00-overview.md +76 -0
  69. data/TODO.parity-ee/01-annex-g-rule-extraction.md +41 -0
  70. data/TODO.parity-ee/02-eeng-algorithm-inventory.md +8 -0
  71. data/TODO.parity-ee/03-eeng-oracle-harness.md +33 -0
  72. data/TODO.parity-ee/04-shtolo-concatenate.md +44 -0
  73. data/TODO.parity-ee/05-shtolo-longform-flatten.md +53 -0
  74. data/TODO.parity-ee/06-interface-scheduling-parity.md +47 -0
  75. data/TODO.parity-ee/07-semantic-checks-port.md +35 -0
  76. data/TODO.parity-ee/08-pretty-roundtrip-gate.md +27 -0
  77. data/TODO.parity-ee/09-smrl-index-and-listing.md +22 -0
  78. data/TODO.parity-ee/10-interface-dot-graph.md +21 -0
  79. data/TODO.parity-ee/11-import-eeng-tests.md +79 -0
  80. data/TODO.parity-ee/12-full-check-catalog.md +67 -0
  81. data/TODO.parity-ee/13-population-p21.md +54 -0
  82. data/TODO.parity-ee/14-shtolo-completion.md +44 -0
  83. data/TODO.parity-ee/15-part28-xml.md +51 -0
  84. data/TODO.parity-ee/16-compare-patch.md +48 -0
  85. data/TODO.parity-ee/17-official-tests.md +42 -0
  86. data/TODO.parity-ee/18-mim-mapping.md +47 -0
  87. data/TODO.parity-ee/19-architecture.md +97 -0
  88. data/TODO.parity-ee/parity-matrix.md +108 -0
  89. data/TODO.refpath-v2/00-overview.md +64 -0
  90. data/TODO.suma-improvements/00-overview.md +23 -0
  91. data/TODO.suma-improvements/01-prebuilt-platform-gems.md +33 -0
  92. data/TODO.suma-improvements/02-suma-e2e.md +39 -0
  93. data/TODO.suma-improvements/03-item-graph.md +22 -0
  94. data/TODO.suma-improvements/04-compiled-set-default.md +16 -0
  95. data/TODO.suma-improvements/05-validation-in-docs.md +17 -0
  96. data/TODO.suma-improvements/06-memory-remeasure.md +36 -0
  97. data/TODO.suma-improvements/07-part28-xml.md +15 -0
  98. data/TODO.suma-improvements/08-windows-gnu-toolchain.md +15 -0
  99. data/TODO.suma-improvements/09-checker-tranche3.md +13 -0
  100. data/TODO.suma-improvements/10-expressdoc.md +8 -0
  101. data/benchmark/srl_benchmark.rb +458 -0
  102. data/benchmark/srl_native_benchmark.rb +146 -0
  103. data/benchmark/srl_ruby_benchmark.rb +132 -0
  104. data/bin/console +11 -0
  105. data/bin/rspec +30 -0
  106. data/bin/setup +8 -0
  107. data/docs/Gemfile +12 -0
  108. data/docs/_config.yml +141 -0
  109. data/docs/_guides/changes/changes-format.adoc +778 -0
  110. data/docs/_guides/changes/importing-eengine.adoc +898 -0
  111. data/docs/_guides/changes/index.adoc +396 -0
  112. data/docs/_guides/changes/programmatic-usage.adoc +1038 -0
  113. data/docs/_guides/changes/validating-changes.adoc +681 -0
  114. data/docs/_guides/cli/benchmark-performance.adoc +834 -0
  115. data/docs/_guides/cli/coverage-analysis.adoc +921 -0
  116. data/docs/_guides/cli/format-schemas.adoc +547 -0
  117. data/docs/_guides/cli/index.adoc +8 -0
  118. data/docs/_guides/cli/managing-changes.adoc +927 -0
  119. data/docs/_guides/cli/validate-ascii.adoc +645 -0
  120. data/docs/_guides/cli/validate-schemas.adoc +534 -0
  121. data/docs/_guides/formatter/formatter-architecture.adoc +401 -0
  122. data/docs/_guides/index.adoc +165 -0
  123. data/docs/_guides/ler/creating-packages.adoc +664 -0
  124. data/docs/_guides/ler/index.adoc +305 -0
  125. data/docs/_guides/ler/loading-packages.adoc +707 -0
  126. data/docs/_guides/ler/package-formats.adoc +748 -0
  127. data/docs/_guides/ler/querying-packages.adoc +826 -0
  128. data/docs/_guides/ler/step-packages.adoc +385 -0
  129. data/docs/_guides/ler/validating-packages.adoc +750 -0
  130. data/docs/_guides/liquid/basic-templates.adoc +813 -0
  131. data/docs/_guides/liquid/documentation-generation.adoc +1042 -0
  132. data/docs/_guides/liquid/drops-reference.adoc +829 -0
  133. data/docs/_guides/liquid/filters-and-tags.adoc +912 -0
  134. data/docs/_guides/liquid/index.adoc +468 -0
  135. data/docs/_guides/manifests/creating-manifests.adoc +483 -0
  136. data/docs/_guides/manifests/index.adoc +307 -0
  137. data/docs/_guides/manifests/resolving-manifests.adoc +557 -0
  138. data/docs/_guides/manifests/validating-manifests.adoc +713 -0
  139. data/docs/_guides/ruby-api/formatting-schemas.adoc +605 -0
  140. data/docs/_guides/ruby-api/index.adoc +257 -0
  141. data/docs/_guides/ruby-api/parsing-files.adoc +421 -0
  142. data/docs/_guides/ruby-api/search-engine.adoc +609 -0
  143. data/docs/_guides/ruby-api/working-with-repository.adoc +577 -0
  144. data/docs/_pages/data-model.adoc +665 -0
  145. data/docs/_pages/express-language.adoc +506 -0
  146. data/docs/_pages/getting-started.adoc +414 -0
  147. data/docs/_pages/index.adoc +116 -0
  148. data/docs/_pages/introduction.adoc +256 -0
  149. data/docs/_pages/ler-packages.adoc +837 -0
  150. data/docs/_pages/parsers.adoc +709 -0
  151. data/docs/_pages/schema-manifests.adoc +431 -0
  152. data/docs/_references/index.adoc +228 -0
  153. data/docs/_tutorials/creating-ler-package.adoc +735 -0
  154. data/docs/_tutorials/documentation-coverage.adoc +795 -0
  155. data/docs/_tutorials/formatting-schemas.adoc +89 -0
  156. data/docs/_tutorials/index.adoc +231 -0
  157. data/docs/_tutorials/liquid-templates.adoc +806 -0
  158. data/docs/_tutorials/parsing-your-first-schema.adoc +522 -0
  159. data/docs/_tutorials/querying-schemas.adoc +751 -0
  160. data/docs/_tutorials/working-with-multiple-schemas.adoc +676 -0
  161. data/docs/index.adoc +242 -0
  162. data/docs/lychee.toml +90 -0
  163. data/examples/demo_ler_usage.sh +86 -0
  164. data/examples/ler/README.md +111 -0
  165. data/examples/ler/simple_example.ler +0 -0
  166. data/examples/ler/simple_schema.exp +33 -0
  167. data/examples/ler_build.rb +75 -0
  168. data/examples/ler_cli.rb +79 -0
  169. data/examples/ler_demo_complete.rb +276 -0
  170. data/examples/ler_query.rb +91 -0
  171. data/examples/ler_query_examples.rb +305 -0
  172. data/examples/ler_stats.rb +81 -0
  173. data/examples/phase3_demo.rb +159 -0
  174. data/examples/query_demo_simple.rb +131 -0
  175. data/exe/expressir +11 -0
  176. data/exe/expressir-format +14 -0
  177. data/exe/expressir-format-test +82 -0
  178. data/expressir.gemspec +61 -0
  179. data/lib/expressir/3.2/expressir_core.so +0 -0
  180. data/lib/expressir/3.3/expressir_core.so +0 -0
  181. data/lib/expressir/3.4/expressir_core.so +0 -0
  182. data/lib/expressir/4.0/expressir_core.so +0 -0
  183. data/lib/expressir/benchmark.rb +310 -0
  184. data/lib/expressir/changes/item_change.rb +20 -0
  185. data/lib/expressir/changes/mapping_change.rb +16 -0
  186. data/lib/expressir/changes/schema_change.rb +85 -0
  187. data/lib/expressir/changes/version_change.rb +26 -0
  188. data/lib/expressir/changes.rb +9 -0
  189. data/lib/expressir/cli.rb +148 -0
  190. data/lib/expressir/commands/base.rb +25 -0
  191. data/lib/expressir/commands/benchmark.rb +59 -0
  192. data/lib/expressir/commands/benchmark_cache.rb +80 -0
  193. data/lib/expressir/commands/changes.rb +34 -0
  194. data/lib/expressir/commands/changes_import_eengine.rb +146 -0
  195. data/lib/expressir/commands/changes_validate.rb +63 -0
  196. data/lib/expressir/commands/check.rb +56 -0
  197. data/lib/expressir/commands/clean.rb +20 -0
  198. data/lib/expressir/commands/coverage.rb +458 -0
  199. data/lib/expressir/commands/expand.rb +26 -0
  200. data/lib/expressir/commands/file_violations.rb +70 -0
  201. data/lib/expressir/commands/fix.rb +33 -0
  202. data/lib/expressir/commands/flatten.rb +29 -0
  203. data/lib/expressir/commands/format.rb +43 -0
  204. data/lib/expressir/commands/manifest.rb +420 -0
  205. data/lib/expressir/commands/mapping_validate.rb +68 -0
  206. data/lib/expressir/commands/non_ascii_character.rb +49 -0
  207. data/lib/expressir/commands/non_ascii_violation_collection.rb +301 -0
  208. data/lib/expressir/commands/package.rb +1222 -0
  209. data/lib/expressir/commands/parity_inputs.rb +160 -0
  210. data/lib/expressir/commands/validate.rb +106 -0
  211. data/lib/expressir/commands/validate_ascii.rb +94 -0
  212. data/lib/expressir/commands/validate_load.rb +91 -0
  213. data/lib/expressir/commands/version.rb +9 -0
  214. data/lib/expressir/commands/xsd.rb +23 -0
  215. data/lib/expressir/commands.rb +30 -0
  216. data/lib/expressir/config.rb +60 -0
  217. data/lib/expressir/coverage.rb +510 -0
  218. data/lib/expressir/eengine/arm_compare_report.rb +23 -0
  219. data/lib/expressir/eengine/changes_section.rb +16 -0
  220. data/lib/expressir/eengine/compare_report.rb +69 -0
  221. data/lib/expressir/eengine/mim_compare_report.rb +23 -0
  222. data/lib/expressir/eengine/modified_object.rb +21 -0
  223. data/lib/expressir/eengine.rb +9 -0
  224. data/lib/expressir/errors.rb +113 -0
  225. data/lib/expressir/express/adoc_hyperlink_formatter.rb +30 -0
  226. data/lib/expressir/express/adoc_source_formatter.rb +12 -0
  227. data/lib/expressir/express/ast_key_converter.rb +114 -0
  228. data/lib/expressir/express/builder.rb +277 -0
  229. data/lib/expressir/express/builder_context.rb +22 -0
  230. data/lib/expressir/express/builder_registry.rb +397 -0
  231. data/lib/expressir/express/builders/attribute_decl_builder.rb +32 -0
  232. data/lib/expressir/express/builders/built_in_builder.rb +75 -0
  233. data/lib/expressir/express/builders/constant_builder.rb +108 -0
  234. data/lib/expressir/express/builders/declaration_builder.rb +20 -0
  235. data/lib/expressir/express/builders/derive_clause_builder.rb +14 -0
  236. data/lib/expressir/express/builders/derived_attr_builder.rb +28 -0
  237. data/lib/expressir/express/builders/domain_rule_builder.rb +21 -0
  238. data/lib/expressir/express/builders/entity_decl_builder.rb +116 -0
  239. data/lib/expressir/express/builders/explicit_attr_builder.rb +49 -0
  240. data/lib/expressir/express/builders/expression_builder.rb +416 -0
  241. data/lib/expressir/express/builders/function_decl_builder.rb +86 -0
  242. data/lib/expressir/express/builders/helpers.rb +148 -0
  243. data/lib/expressir/express/builders/interface_builder.rb +151 -0
  244. data/lib/expressir/express/builders/inverse_attr_builder.rb +43 -0
  245. data/lib/expressir/express/builders/inverse_attr_type_builder.rb +30 -0
  246. data/lib/expressir/express/builders/inverse_clause_builder.rb +14 -0
  247. data/lib/expressir/express/builders/literal_builder.rb +93 -0
  248. data/lib/expressir/express/builders/procedure_decl_builder.rb +82 -0
  249. data/lib/expressir/express/builders/qualifier_builder.rb +102 -0
  250. data/lib/expressir/express/builders/reference_builder.rb +18 -0
  251. data/lib/expressir/express/builders/rule_decl_builder.rb +97 -0
  252. data/lib/expressir/express/builders/schema_body_decl_builder.rb +18 -0
  253. data/lib/expressir/express/builders/schema_decl_builder.rb +56 -0
  254. data/lib/expressir/express/builders/schema_version_builder.rb +34 -0
  255. data/lib/expressir/express/builders/simple_id_builder.rb +17 -0
  256. data/lib/expressir/express/builders/statement_builder.rb +243 -0
  257. data/lib/expressir/express/builders/subtype_constraint_builder.rb +166 -0
  258. data/lib/expressir/express/builders/syntax_builder.rb +30 -0
  259. data/lib/expressir/express/builders/type_builder.rb +238 -0
  260. data/lib/expressir/express/builders/type_decl_builder.rb +26 -0
  261. data/lib/expressir/express/builders/unique_clause_builder.rb +20 -0
  262. data/lib/expressir/express/builders/unique_rule_builder.rb +41 -0
  263. data/lib/expressir/express/builders/where_clause_builder.rb +20 -0
  264. data/lib/expressir/express/builders.rb +55 -0
  265. data/lib/expressir/express/cache.rb +76 -0
  266. data/lib/expressir/express/checker.rb +812 -0
  267. data/lib/expressir/express/concatenator.rb +79 -0
  268. data/lib/expressir/express/core.rb +95 -0
  269. data/lib/expressir/express/error.rb +124 -0
  270. data/lib/expressir/express/formatter.rb +149 -0
  271. data/lib/expressir/express/formatters/data_types_formatter.rb +362 -0
  272. data/lib/expressir/express/formatters/declarations_formatter.rb +753 -0
  273. data/lib/expressir/express/formatters/expressions_formatter.rb +180 -0
  274. data/lib/expressir/express/formatters/literals_formatter.rb +55 -0
  275. data/lib/expressir/express/formatters/references_formatter.rb +53 -0
  276. data/lib/expressir/express/formatters/remark_formatter.rb +270 -0
  277. data/lib/expressir/express/formatters/remark_item_formatter.rb +28 -0
  278. data/lib/expressir/express/formatters/statements_formatter.rb +272 -0
  279. data/lib/expressir/express/formatters/supertype_expressions_formatter.rb +54 -0
  280. data/lib/expressir/express/formatters.rb +22 -0
  281. data/lib/expressir/express/grammar/parser.rb +712 -0
  282. data/lib/expressir/express/grammar.rb +11 -0
  283. data/lib/expressir/express/hyperlink_formatter.rb +35 -0
  284. data/lib/expressir/express/interface_dot.rb +105 -0
  285. data/lib/expressir/express/lazy_repository.rb +211 -0
  286. data/lib/expressir/express/line_map.rb +48 -0
  287. data/lib/expressir/express/listing.rb +174 -0
  288. data/lib/expressir/express/model_traversal.rb +42 -0
  289. data/lib/expressir/express/model_visitor.rb +25 -0
  290. data/lib/expressir/express/node_position_index.rb +342 -0
  291. data/lib/expressir/express/parallel_files.rb +229 -0
  292. data/lib/expressir/express/parser.rb +523 -0
  293. data/lib/expressir/express/pretty_formatter.rb +586 -0
  294. data/lib/expressir/express/pretty_gate.rb +61 -0
  295. data/lib/expressir/express/refs_overlay.rb +47 -0
  296. data/lib/expressir/express/remark_attacher.rb +1098 -0
  297. data/lib/expressir/express/remark_overlay.rb +86 -0
  298. data/lib/expressir/express/remark_scanner.rb +245 -0
  299. data/lib/expressir/express/resolve_references_model_visitor.rb +29 -0
  300. data/lib/expressir/express/schema_block_scanner.rb +137 -0
  301. data/lib/expressir/express/schema_head_formatter.rb +22 -0
  302. data/lib/expressir/express/schema_plain_source_formatter.rb +11 -0
  303. data/lib/expressir/express/schema_source_formatter.rb +15 -0
  304. data/lib/expressir/express/scope_resolver.rb +223 -0
  305. data/lib/expressir/express/self_schema_reference.rb +126 -0
  306. data/lib/expressir/express/shtolo.rb +679 -0
  307. data/lib/expressir/express/smrl_xml.rb +125 -0
  308. data/lib/expressir/express/source_formatter.rb +15 -0
  309. data/lib/expressir/express/streaming_builder.rb +435 -0
  310. data/lib/expressir/express/xsd.rb +259 -0
  311. data/lib/expressir/express.rb +53 -0
  312. data/lib/expressir/liquid.rb +1 -0
  313. data/lib/expressir/manifest/resolver.rb +210 -0
  314. data/lib/expressir/manifest/validator.rb +192 -0
  315. data/lib/expressir/manifest.rb +6 -0
  316. data/lib/expressir/mapping/refpath.rb +857 -0
  317. data/lib/expressir/mapping.rb +253 -0
  318. data/lib/expressir/model/cache.rb +18 -0
  319. data/lib/expressir/model/concerns.rb +42 -0
  320. data/lib/expressir/model/data_types/aggregate.rb +26 -0
  321. data/lib/expressir/model/data_types/array.rb +25 -0
  322. data/lib/expressir/model/data_types/bag.rb +21 -0
  323. data/lib/expressir/model/data_types/binary.rb +19 -0
  324. data/lib/expressir/model/data_types/boolean.rb +15 -0
  325. data/lib/expressir/model/data_types/enumeration.rb +21 -0
  326. data/lib/expressir/model/data_types/enumeration_item.rb +24 -0
  327. data/lib/expressir/model/data_types/generic.rb +24 -0
  328. data/lib/expressir/model/data_types/generic_entity.rb +24 -0
  329. data/lib/expressir/model/data_types/integer.rb +15 -0
  330. data/lib/expressir/model/data_types/list.rb +23 -0
  331. data/lib/expressir/model/data_types/logical.rb +15 -0
  332. data/lib/expressir/model/data_types/number.rb +15 -0
  333. data/lib/expressir/model/data_types/real.rb +17 -0
  334. data/lib/expressir/model/data_types/select.rb +23 -0
  335. data/lib/expressir/model/data_types/set.rb +21 -0
  336. data/lib/expressir/model/data_types/string.rb +19 -0
  337. data/lib/expressir/model/data_types.rb +25 -0
  338. data/lib/expressir/model/declarations/attribute.rb +38 -0
  339. data/lib/expressir/model/declarations/constant.rb +28 -0
  340. data/lib/expressir/model/declarations/derived_attribute.rb +25 -0
  341. data/lib/expressir/model/declarations/entity.rb +62 -0
  342. data/lib/expressir/model/declarations/function.rb +59 -0
  343. data/lib/expressir/model/declarations/informal_proposition_rule.rb +25 -0
  344. data/lib/expressir/model/declarations/interface.rb +37 -0
  345. data/lib/expressir/model/declarations/interface_item.rb +21 -0
  346. data/lib/expressir/model/declarations/interfaced_item.rb +33 -0
  347. data/lib/expressir/model/declarations/inverse_attribute.rb +25 -0
  348. data/lib/expressir/model/declarations/parameter.rb +28 -0
  349. data/lib/expressir/model/declarations/procedure.rb +57 -0
  350. data/lib/expressir/model/declarations/remark_item.rb +21 -0
  351. data/lib/expressir/model/declarations/rule.rb +66 -0
  352. data/lib/expressir/model/declarations/schema.rb +215 -0
  353. data/lib/expressir/model/declarations/schema_version.rb +19 -0
  354. data/lib/expressir/model/declarations/schema_version_item.rb +19 -0
  355. data/lib/expressir/model/declarations/subtype_constraint.rb +32 -0
  356. data/lib/expressir/model/declarations/type.rb +45 -0
  357. data/lib/expressir/model/declarations/unique_rule.rb +26 -0
  358. data/lib/expressir/model/declarations/variable.rb +28 -0
  359. data/lib/expressir/model/declarations/where_rule.rb +26 -0
  360. data/lib/expressir/model/declarations.rb +31 -0
  361. data/lib/expressir/model/dependency_resolver.rb +268 -0
  362. data/lib/expressir/model/exp_file.rb +42 -0
  363. data/lib/expressir/model/expressions/aggregate_initializer.rb +18 -0
  364. data/lib/expressir/model/expressions/aggregate_initializer_item.rb +20 -0
  365. data/lib/expressir/model/expressions/binary_expression.rb +59 -0
  366. data/lib/expressir/model/expressions/entity_constructor.rb +20 -0
  367. data/lib/expressir/model/expressions/function_call.rb +20 -0
  368. data/lib/expressir/model/expressions/interval.rb +29 -0
  369. data/lib/expressir/model/expressions/query_expression.rb +31 -0
  370. data/lib/expressir/model/expressions/unary_expression.rb +25 -0
  371. data/lib/expressir/model/expressions.rb +18 -0
  372. data/lib/expressir/model/identifier.rb +26 -0
  373. data/lib/expressir/model/indexes/entity_index.rb +103 -0
  374. data/lib/expressir/model/indexes/item_graph.rb +185 -0
  375. data/lib/expressir/model/indexes/reference_index.rb +148 -0
  376. data/lib/expressir/model/indexes/type_index.rb +149 -0
  377. data/lib/expressir/model/indexes.rb +12 -0
  378. data/lib/expressir/model/interface_validator.rb +384 -0
  379. data/lib/expressir/model/literals/binary.rb +17 -0
  380. data/lib/expressir/model/literals/integer.rb +17 -0
  381. data/lib/expressir/model/literals/logical.rb +21 -0
  382. data/lib/expressir/model/literals/real.rb +17 -0
  383. data/lib/expressir/model/literals/string.rb +20 -0
  384. data/lib/expressir/model/literals.rb +13 -0
  385. data/lib/expressir/model/model_element.rb +377 -0
  386. data/lib/expressir/model/references/attribute_reference.rb +19 -0
  387. data/lib/expressir/model/references/group_reference.rb +19 -0
  388. data/lib/expressir/model/references/index_reference.rb +23 -0
  389. data/lib/expressir/model/references/simple_reference.rb +21 -0
  390. data/lib/expressir/model/references.rb +12 -0
  391. data/lib/expressir/model/remark_format.rb +17 -0
  392. data/lib/expressir/model/remark_info.rb +92 -0
  393. data/lib/expressir/model/remark_placement.rb +42 -0
  394. data/lib/expressir/model/repository.rb +483 -0
  395. data/lib/expressir/model/repository_validator.rb +293 -0
  396. data/lib/expressir/model/search_engine.rb +551 -0
  397. data/lib/expressir/model/statements/alias.rb +31 -0
  398. data/lib/expressir/model/statements/assignment.rb +23 -0
  399. data/lib/expressir/model/statements/case.rb +42 -0
  400. data/lib/expressir/model/statements/case_action.rb +20 -0
  401. data/lib/expressir/model/statements/compound.rb +21 -0
  402. data/lib/expressir/model/statements/escape.rb +18 -0
  403. data/lib/expressir/model/statements/if.rb +26 -0
  404. data/lib/expressir/model/statements/null.rb +18 -0
  405. data/lib/expressir/model/statements/procedure_call.rb +22 -0
  406. data/lib/expressir/model/statements/repeat.rb +40 -0
  407. data/lib/expressir/model/statements/return.rb +20 -0
  408. data/lib/expressir/model/statements/skip.rb +18 -0
  409. data/lib/expressir/model/statements.rb +20 -0
  410. data/lib/expressir/model/supertype_expressions/binary_supertype_expression.rb +25 -0
  411. data/lib/expressir/model/supertype_expressions/oneof_supertype_expression.rb +17 -0
  412. data/lib/expressir/model/supertype_expressions.rb +12 -0
  413. data/lib/expressir/model.rb +39 -0
  414. data/lib/expressir/package/builder.rb +231 -0
  415. data/lib/expressir/package/metadata.rb +79 -0
  416. data/lib/expressir/package/reader.rb +149 -0
  417. data/lib/expressir/package.rb +8 -0
  418. data/lib/expressir/schema_manifest.rb +159 -0
  419. data/lib/expressir/schema_manifest_entry.rb +15 -0
  420. data/lib/expressir/version.rb +8 -0
  421. data/lib/expressir.rb +94 -0
  422. data/lib/tasks/verify_remarks.rake +16 -0
  423. data/rakelib/native.rake +24 -0
  424. data/rakelib/oracle.rake +52 -0
  425. data/rakelib/verify_remarks.rake +16 -0
  426. metadata +692 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: f8ded9538cce3261a34b2746781944e3e6aadb6fde09cde5846d8c28cb1b9a0f
4
+ data.tar.gz: 5f393cae4a5af8014d619584c4dc3bf48e7cad2d491942dea30bc1b18ddff366
5
+ SHA512:
6
+ metadata.gz: 412dc3c6f63cf230a6917f059389ad04ce537468c4fdf287f3c0b48d39ee43aba3efec3e7b625aeab3e1c8b6002047f73f3adab902cda5460187a02324ef72fc
7
+ data.tar.gz: 3f0298905fd946de0591124c919d486012a8380d2ff2dbbc78e7b3a688416d5f932edcec31c2269eb21b675aa640ac93cbe3828350e60c2eb94678fb7b875964
@@ -0,0 +1,3 @@
1
+ # Git deps fetch over SSH by the system git CLI (cargo HTTPS auth fails locally).
2
+ [net]
3
+ git-fetch-with-cli = true
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Smoke test for an INSTALLED expressir gem (run after `gem install`,
4
+ # never from the source directory): the Rust core binding must be
5
+ # active and the parser must handle the standard and #462 forms.
6
+ require "expressir"
7
+
8
+ abort "FAIL: NATIVE_AVAILABLE is false" unless Expressir::Express::Core::NATIVE_AVAILABLE
9
+ puts "native binding: active"
10
+
11
+ repo = Expressir::Express::Parser.from_exp(
12
+ "SCHEMA smoke; ENTITY e; a : STRING; END_ENTITY; END_SCHEMA;",
13
+ )
14
+ abort "FAIL: schema not parsed" unless repo.schemas.first.id == "smoke"
15
+ puts "standard parse: ok"
16
+
17
+ src = <<~EXP
18
+ SCHEMA m;
19
+ ENTITY e; END_ENTITY;
20
+ SUBTYPE_CONSTRAINT c FOR e;
21
+ ABSTRACT;
22
+ END_SUBTYPE_CONSTRAINT;
23
+ END_SCHEMA;
24
+ EXP
25
+ sc = Expressir::Express::Parser.from_exp(src).schemas.first.subtype_constraints.first
26
+ abort "FAIL: subtype constraint ABSTRACT body (#462)" unless sc&.abstract == true
27
+ puts "#462 form: ok"
28
+
29
+ # The platform gems force-build the Rust compiled-set writer; a leg that
30
+ # shipped a non-loadable expressir_core would otherwise pass this smoke.
31
+ abort "FAIL: core_set_available is false" unless Expressir::Express::Parser.core_set_available?
32
+ puts "compiled-set core: ok"
33
+
34
+ puts "SMOKE OK"
@@ -0,0 +1,35 @@
1
+ name: "CodeQL"
2
+
3
+ on:
4
+ push:
5
+ branches: [ main ]
6
+ schedule:
7
+ - cron: '0 23 * * 3'
8
+ workflow_dispatch:
9
+
10
+ concurrency:
11
+ group: '${{ github.workflow }}-${{ github.job }}-${{ github.head_ref || github.ref_name }}'
12
+ cancel-in-progress: true
13
+
14
+ jobs:
15
+ analyze:
16
+ name: Analyze
17
+ runs-on: ubuntu-latest
18
+
19
+ steps:
20
+ - name: Checkout
21
+ uses: actions/checkout@v4
22
+
23
+ - name: Install Ruby
24
+ uses: ruby/setup-ruby@master
25
+ with:
26
+ ruby-version: 3.2
27
+ bundler-cache: true
28
+
29
+ - name: Initialize CodeQL
30
+ uses: github/codeql-action/init@v2
31
+ with:
32
+ languages: "ruby, cpp"
33
+
34
+ - name: Perform CodeQL Analysis
35
+ uses: github/codeql-action/analyze@v2
@@ -0,0 +1,99 @@
1
+ name: Deploy Documentation
2
+
3
+ on:
4
+ push:
5
+ branches: [main, master]
6
+ paths:
7
+ - 'docs/**'
8
+ - '.github/workflows/docs.yml'
9
+ pull_request:
10
+ branches: [main, master]
11
+ paths:
12
+ - 'docs/**'
13
+ workflow_dispatch:
14
+
15
+ # Allow only one concurrent deployment
16
+ concurrency:
17
+ group: "pages"
18
+ cancel-in-progress: true
19
+
20
+ jobs:
21
+ build:
22
+ runs-on: ubuntu-latest
23
+
24
+ steps:
25
+ - name: Checkout repository
26
+ uses: actions/checkout@v4
27
+
28
+ - name: Setup Ruby
29
+ uses: ruby/setup-ruby@v1
30
+ with:
31
+ ruby-version: '3.2'
32
+ bundler-cache: false
33
+ working-directory: docs
34
+
35
+ - name: Cache gems
36
+ uses: actions/cache@v4
37
+ with:
38
+ path: docs/vendor/bundle
39
+ key: ${{ runner.os }}-gems-${{ hashFiles('docs/Gemfile.lock') }}
40
+ restore-keys: |
41
+ ${{ runner.os }}-gems-
42
+
43
+ - name: Install dependencies
44
+ working-directory: docs
45
+ run: |
46
+ bundle config path vendor/bundle
47
+ bundle install --jobs 4 --retry 3
48
+
49
+ - name: Build Jekyll site
50
+ working-directory: docs
51
+ run: bundle exec jekyll build --trace
52
+ env:
53
+ JEKYLL_ENV: production
54
+
55
+ - name: Test built site
56
+ working-directory: docs
57
+ run: |
58
+ if [ ! -f "_site/index.html" ]; then
59
+ echo "Error: index.html not found in _site/"
60
+ exit 1
61
+ fi
62
+ echo "Site built successfully"
63
+ echo "Site contains $(find _site -type f | wc -l) files"
64
+
65
+ - name: Upload artifact
66
+ uses: actions/upload-pages-artifact@v3
67
+ with:
68
+ path: docs/_site
69
+
70
+ deploy:
71
+ # Only deploy on push to main/master, not on PRs
72
+ if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master')
73
+
74
+ needs: build
75
+
76
+ permissions:
77
+ pages: write
78
+ id-token: write
79
+ contents: write
80
+
81
+ environment:
82
+ name: github-pages
83
+ url: ${{ steps.deployment.outputs.page_url }}
84
+
85
+ runs-on: ubuntu-latest
86
+
87
+ steps:
88
+ - name: Deploy to GitHub Pages
89
+ id: deployment
90
+ uses: actions/deploy-pages@v4
91
+
92
+ - name: Comment on commit
93
+ if: success()
94
+ uses: peter-evans/commit-comment@v3
95
+ with:
96
+ body: |
97
+ :white_check_mark: Documentation deployed successfully!
98
+
99
+ View at: ${{ steps.deployment.outputs.page_url }}
@@ -0,0 +1,100 @@
1
+ name: Check Links
2
+
3
+ on:
4
+ push:
5
+ branches: [main, master]
6
+ paths:
7
+ - 'docs/**'
8
+ - '.github/workflows/links.yml'
9
+ - 'lychee.toml'
10
+ pull_request:
11
+ branches: [main, master]
12
+ paths:
13
+ - 'docs/**'
14
+ schedule:
15
+ # Run weekly on Monday at 9:00 UTC
16
+ - cron: '0 9 * * 1'
17
+ workflow_dispatch:
18
+
19
+ jobs:
20
+ link-check:
21
+ runs-on: ubuntu-latest
22
+
23
+ steps:
24
+ - name: Checkout repository
25
+ uses: actions/checkout@v4
26
+
27
+ - name: Setup Ruby
28
+ uses: ruby/setup-ruby@v1
29
+ with:
30
+ ruby-version: '3.2'
31
+ bundler-cache: false
32
+ working-directory: docs
33
+
34
+ - name: Cache gems
35
+ uses: actions/cache@v4
36
+ with:
37
+ path: docs/vendor/bundle
38
+ key: ${{ runner.os }}-gems-${{ hashFiles('docs/Gemfile.lock') }}
39
+ restore-keys: |
40
+ ${{ runner.os }}-gems-
41
+
42
+ - name: Install dependencies
43
+ working-directory: docs
44
+ run: |
45
+ bundle config path vendor/bundle
46
+ bundle install --jobs 4 --retry 3
47
+
48
+ - name: Build Jekyll site
49
+ working-directory: docs
50
+ run: bundle exec jekyll build --trace
51
+ env:
52
+ JEKYLL_ENV: production
53
+
54
+ - name: Check links with lychee
55
+ uses: lycheeverse/lychee-action@v1
56
+ with:
57
+ args: |
58
+ --config docs/lychee.toml
59
+ --verbose
60
+ --no-progress
61
+ --format markdown
62
+ 'docs/_site/**/*.html'
63
+ fail: true
64
+ output: link-check-report.md
65
+
66
+ - name: Upload link check report
67
+ if: always()
68
+ uses: actions/upload-artifact@v4
69
+ with:
70
+ name: link-check-report
71
+ path: link-check-report.md
72
+ retention-days: 30
73
+
74
+ - name: Comment on PR with results
75
+ if: failure() && github.event_name == 'pull_request'
76
+ uses: marocchino/sticky-pull-request-comment@v2
77
+ with:
78
+ header: link-check
79
+ path: link-check-report.md
80
+
81
+ - name: Create issue for broken links
82
+ if: failure() && github.event_name == 'schedule'
83
+ uses: peter-evans/create-issue-from-file@v5
84
+ with:
85
+ title: Broken links detected in documentation
86
+ content-filepath: link-check-report.md
87
+ labels: |
88
+ documentation
89
+ bug
90
+ automated
91
+
92
+ - name: Summary
93
+ if: always()
94
+ run: |
95
+ echo "## Link Check Results" >> $GITHUB_STEP_SUMMARY
96
+ if [ -f "link-check-report.md" ]; then
97
+ cat link-check-report.md >> $GITHUB_STEP_SUMMARY
98
+ else
99
+ echo "No broken links found! :white_check_mark:" >> $GITHUB_STEP_SUMMARY
100
+ fi
@@ -0,0 +1,201 @@
1
+ # Prebuilt platform gems (TODO.suma-improvements/01), following the
2
+ # parsanol-ruby gem-build pattern: oxidize-rb cross-gem builds
3
+ # per-platform gems in rake-compiler-dock containers, smoke jobs install
4
+ # them on real runners, and tag pushes publish to rubygems.
5
+ name: native-gems
6
+
7
+ on:
8
+ workflow_dispatch:
9
+ push:
10
+ branches: [main, "cross-gem/*", "pkg/*"]
11
+ tags: ["v*"]
12
+
13
+ concurrency:
14
+ group: ${{ github.workflow }}-${{ github.ref }}
15
+ cancel-in-progress: true
16
+
17
+ permissions:
18
+ contents: read
19
+
20
+ jobs:
21
+ ci-data:
22
+ runs-on: ubuntu-22.04
23
+ outputs:
24
+ result: ${{ steps.fetch.outputs.result }}
25
+ steps:
26
+ - id: fetch
27
+ uses: oxidize-rb/actions/fetch-ci-data@v1
28
+ with:
29
+ supported-ruby-platforms: |
30
+ exclude: [x64-mingw32]
31
+ stable-ruby-versions: |
32
+ only: [3.2, 3.3, 3.4, 4.0]
33
+
34
+ native:
35
+ name: Build native gems
36
+ needs: ci-data
37
+ runs-on: ubuntu-22.04
38
+ strategy:
39
+ fail-fast: false
40
+ matrix:
41
+ ruby-platform: ${{ fromJSON(needs.ci-data.outputs.result).supported-ruby-platforms }}
42
+ steps:
43
+ - uses: actions/checkout@v4
44
+
45
+ - uses: ruby/setup-ruby@v1
46
+ with:
47
+ ruby-version: "3.4"
48
+
49
+ - uses: oxidize-rb/actions/cross-gem@v1
50
+ id: cross-gem
51
+ env:
52
+ EXPRESSIR_CORE_FORCE: "1"
53
+ with:
54
+ platform: ${{ matrix.ruby-platform }}
55
+ # Must include the dock image's HOST ruby (4.0): when the
56
+ # running ruby is absent from this list, rake-compiler adds an
57
+ # extra leg for it built from the host toolchain's RbConfig,
58
+ # and rb-sys correctly refuses to generate bindings against a
59
+ # different target_os. Current rb-sys-dock images ship cross
60
+ # rubies for 3.2-4.0 (parsanol-ruby's identical cross-gem
61
+ # setup builds a working x86_64-mingw-ucrt ruby-4.0.2 leg).
62
+ ruby-versions: "3.2,3.3,3.4,4.0"
63
+
64
+ - uses: actions/upload-artifact@v4
65
+ with:
66
+ name: cross-gem-${{ matrix.ruby-platform }}
67
+ path: ${{ steps.cross-gem.outputs.gem-path }}
68
+ if-no-files-found: error
69
+
70
+ smoke-linux:
71
+ name: Smoke test Linux x86_64
72
+ needs: native
73
+ runs-on: ubuntu-22.04
74
+ steps:
75
+ - uses: actions/checkout@v4
76
+ - uses: ruby/setup-ruby@v1
77
+ with:
78
+ ruby-version: "3.4"
79
+ - uses: actions/download-artifact@v4
80
+ with:
81
+ name: cross-gem-x86_64-linux
82
+ path: pkg/
83
+ - run: |
84
+ gem install pkg/expressir-*.gem --no-document
85
+ ruby .github/scripts/test_installed_gem.rb
86
+
87
+ smoke-linux-arm:
88
+ name: Smoke test Linux ARM64
89
+ needs: native
90
+ runs-on: ubuntu-22.04-arm
91
+ steps:
92
+ - uses: actions/checkout@v4
93
+ - uses: ruby/setup-ruby@v1
94
+ with:
95
+ ruby-version: "3.4"
96
+ - uses: actions/download-artifact@v4
97
+ with:
98
+ name: cross-gem-aarch64-linux
99
+ path: pkg/
100
+ - run: |
101
+ gem install pkg/expressir-*.gem --no-document
102
+ ruby .github/scripts/test_installed_gem.rb
103
+
104
+ smoke-macos-arm:
105
+ name: Smoke test macOS ARM64
106
+ needs: native
107
+ runs-on: macos-15
108
+ steps:
109
+ - uses: actions/checkout@v4
110
+ - uses: ruby/setup-ruby@v1
111
+ with:
112
+ ruby-version: "3.4"
113
+ - uses: actions/download-artifact@v4
114
+ with:
115
+ name: cross-gem-arm64-darwin
116
+ path: pkg/
117
+ - run: |
118
+ gem install pkg/expressir-*.gem --no-document
119
+ ruby .github/scripts/test_installed_gem.rb
120
+
121
+ smoke-macos-intel:
122
+ name: Smoke test macOS x86_64
123
+ needs: native
124
+ runs-on: macos-15-intel
125
+ steps:
126
+ - uses: actions/checkout@v4
127
+ - uses: ruby/setup-ruby@v1
128
+ with:
129
+ ruby-version: "3.4"
130
+ - uses: actions/download-artifact@v4
131
+ with:
132
+ name: cross-gem-x86_64-darwin
133
+ path: pkg/
134
+ - run: |
135
+ gem install pkg/expressir-*.gem --no-document
136
+ ruby .github/scripts/test_installed_gem.rb
137
+
138
+ smoke-windows:
139
+ name: Smoke test Windows x64
140
+ needs: native
141
+ runs-on: windows-2025
142
+ steps:
143
+ - uses: actions/checkout@v4
144
+ - uses: ruby/setup-ruby@v1
145
+ with:
146
+ ruby-version: "3.4"
147
+ - uses: actions/download-artifact@v4
148
+ with:
149
+ name: cross-gem-x64-mingw-ucrt
150
+ path: pkg/
151
+ - run: |
152
+ gem install pkg/expressir-*.gem --no-document
153
+ ruby .github/scripts/test_installed_gem.rb
154
+
155
+ source:
156
+ name: Build source gem
157
+ runs-on: ubuntu-22.04
158
+ steps:
159
+ - uses: actions/checkout@v4
160
+ - uses: oxidize-rb/actions/setup-ruby-and-rust@v1
161
+ with:
162
+ ruby-version: "3.4"
163
+ bundler-cache: true
164
+ cargo-cache: true
165
+ - run: bundle exec rake build
166
+ - uses: actions/upload-artifact@v4
167
+ with:
168
+ name: source-gem
169
+ path: pkg/*.gem
170
+ if-no-files-found: error
171
+
172
+ release:
173
+ name: Release gems to rubygems
174
+ needs: [native, smoke-linux, smoke-linux-arm, smoke-macos-arm, smoke-macos-intel, smoke-windows, source]
175
+ # workflow_dispatch lets a fix publish the already-tagged version when
176
+ # the tag's own run failed after the builds (reruns reuse the tag's
177
+ # workflow copy, so fixes cannot reach them any other way).
178
+ if: startsWith(github.ref, 'refs/tags/v') || github.event_name == 'workflow_dispatch'
179
+ runs-on: ubuntu-22.04
180
+ # No environment: the rubygems.org trusted publisher for native-gems.yml
181
+ # is registered without one; an environment claim would fail the match.
182
+ permissions:
183
+ id-token: write
184
+ steps:
185
+ - uses: actions/download-artifact@v4
186
+ with:
187
+ path: pkg/
188
+ pattern: cross-gem-*
189
+ merge-multiple: true
190
+ - uses: actions/download-artifact@v4
191
+ with:
192
+ path: pkg/
193
+ name: source-gem
194
+ # OIDC trusted publishing - the repo has no rubygems API-key secret;
195
+ # release.yml publishes through the same exchange.
196
+ - uses: rubygems/configure-rubygems-credentials@v2.1.0
197
+ - name: Push to rubygems
198
+ run: |
199
+ for gem in pkg/expressir-*.gem; do
200
+ gem push "$gem"
201
+ done
@@ -0,0 +1,19 @@
1
+ # Auto-generated by Cimas: Do not edit it manually!
2
+ # See https://github.com/metanorma/cimas
3
+ name: rake
4
+
5
+ permissions:
6
+ contents: write
7
+ pull-requests: write
8
+
9
+ on:
10
+ push:
11
+ branches: [ master, main ]
12
+ tags: [ v* ]
13
+ pull_request:
14
+
15
+ jobs:
16
+ rake:
17
+ uses: metanorma/ci/.github/workflows/generic-rake.yml@main
18
+ secrets:
19
+ pat_token: ${{ secrets.LUTAML_CI_PAT_TOKEN }}
@@ -0,0 +1,37 @@
1
+ name: release
2
+
3
+ permissions:
4
+ contents: write
5
+ packages: write
6
+ pull-requests: write
7
+ id-token: write
8
+
9
+ on:
10
+ workflow_dispatch:
11
+ inputs:
12
+ next_version:
13
+ description: |
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
16
+ required: true
17
+ default: 'skip'
18
+ repository_dispatch:
19
+ types: [ do-release ]
20
+
21
+ jobs:
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 }}
37
+
@@ -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