expressir 1.2.10-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
@@ -4,19 +4,17 @@ module Expressir
4
4
  # Specified in ISO 10303-11:2004
5
5
  # - section 13.4 Case statement
6
6
  class CaseAction < ModelElement
7
- model_attr_accessor :labels, 'Array<Expression>'
8
- model_attr_accessor :statement, 'Statement'
7
+ child_attributes :expression
8
+ attribute :labels, ModelElement, collection: true
9
+ attribute :statement, ModelElement
10
+ attribute :_class, :string, default: -> { self.class.name }
9
11
 
10
- # @param [Hash] options
11
- # @option options [Array<Expression>] :labels
12
- # @option options [Statement] :statement
13
- def initialize(options = {})
14
- @labels = options[:labels] || []
15
- @statement = options[:statement]
16
-
17
- super
12
+ key_value do
13
+ map "_class", to: :_class, render_default: true
14
+ map "labels", to: :labels
15
+ map "statement", to: :statement
18
16
  end
19
17
  end
20
18
  end
21
19
  end
22
- end
20
+ end
@@ -3,17 +3,19 @@ module Expressir
3
3
  module Statements
4
4
  # Specified in ISO 10303-11:2004
5
5
  # - section 13.5 Compound statement
6
- class Compound < Statement
7
- model_attr_accessor :statements, 'Array<Statement>'
6
+ class Compound < ModelElement
7
+ include Statement
8
8
 
9
- # @param [Hash] options
10
- # @option options [Array<Statement>] :statements
11
- def initialize(options = {})
12
- @statements = options[:statements] || []
9
+ collection_attributes :statements
10
+ attribute :statements, ModelElement, collection: true
11
+ attribute :_class, :string, default: -> { self.class.name }
13
12
 
14
- super
13
+ key_value do
14
+ map "_class", to: :_class, render_default: true
15
+ map "untagged_remarks", to: :untagged_remarks
16
+ map "statements", to: :statements
15
17
  end
16
18
  end
17
19
  end
18
20
  end
19
- end
21
+ end
@@ -3,8 +3,16 @@ module Expressir
3
3
  module Statements
4
4
  # Specified in ISO 10303-11:2004
5
5
  # - section 13.6 Escape statement
6
- class Escape < Statement
6
+ class Escape < ModelElement
7
+ include Statement
8
+
9
+ attribute :_class, :string, default: -> { self.class.name }
10
+
11
+ key_value do
12
+ map "_class", to: :_class, render_default: true
13
+ map "untagged_remarks", to: :untagged_remarks
14
+ end
7
15
  end
8
16
  end
9
17
  end
10
- end
18
+ end
@@ -3,23 +3,24 @@ module Expressir
3
3
  module Statements
4
4
  # Specified in ISO 10303-11:2004
5
5
  # - section 13.7 If ... Then ... Else statement
6
- class If < Statement
7
- model_attr_accessor :expression, 'Expression'
8
- model_attr_accessor :statements, 'Array<Statement>'
9
- model_attr_accessor :else_statements, 'Array<Statement>'
6
+ class If < ModelElement
7
+ include Statement
10
8
 
11
- # @param [Hash] options
12
- # @option options [Expression] :expression
13
- # @option options [Array<Statement>] :statements
14
- # @option options [Array<Statement>] :else_statements
15
- def initialize(options = {})
16
- @expression = options[:expression]
17
- @statements = options[:statements] || []
18
- @else_statements = options[:else_statements] || []
9
+ collection_attributes :statements, :else_statements
10
+ child_attributes :expression
11
+ attribute :expression, ModelElement
12
+ attribute :statements, ModelElement, collection: true
13
+ attribute :else_statements, ModelElement, collection: true
14
+ attribute :_class, :string, default: -> { self.class.name }
19
15
 
20
- super
16
+ key_value do
17
+ map "_class", to: :_class, render_default: true
18
+ map "untagged_remarks", to: :untagged_remarks
19
+ map "expression", to: :expression
20
+ map "statements", to: :statements
21
+ map "else_statements", to: :else_statements
21
22
  end
22
23
  end
23
24
  end
24
25
  end
25
- end
26
+ end
@@ -3,8 +3,16 @@ module Expressir
3
3
  module Statements
4
4
  # Specified in ISO 10303-11:2004
5
5
  # - section 13.1 Null (statement)
6
- class Null < Statement
6
+ class Null < ModelElement
7
+ include Statement
8
+
9
+ attribute :_class, :string, default: -> { self.class.name }
10
+
11
+ key_value do
12
+ map "_class", to: :_class, render_default: true
13
+ map "untagged_remarks", to: :untagged_remarks
14
+ end
7
15
  end
8
16
  end
9
17
  end
10
- end
18
+ end
@@ -3,20 +3,20 @@ module Expressir
3
3
  module Statements
4
4
  # Specified in ISO 10303-11:2004
5
5
  # - section 13.8 Procedure call statement
6
- class ProcedureCall < Statement
7
- model_attr_accessor :procedure, 'Reference'
8
- model_attr_accessor :parameters, 'Array<Expression>'
6
+ class ProcedureCall < ModelElement
7
+ include Statement
9
8
 
10
- # @param [Hash] options
11
- # @option options [Reference] :procedure
12
- # @option options [Array<Expression>] :parameters
13
- def initialize(options = {})
14
- @procedure = options[:procedure]
15
- @parameters = options[:parameters] || []
9
+ attribute :procedure, ModelElement
10
+ attribute :parameters, ModelElement, collection: true
11
+ attribute :_class, :string, default: -> { self.class.name }
16
12
 
17
- super
13
+ key_value do
14
+ map "_class", to: :_class, render_default: true
15
+ map "untagged_remarks", to: :untagged_remarks
16
+ map "procedure", to: :procedure
17
+ map "parameters", to: :parameters
18
18
  end
19
19
  end
20
20
  end
21
21
  end
22
- end
22
+ end
@@ -3,45 +3,38 @@ module Expressir
3
3
  module Statements
4
4
  # Specified in ISO 10303-11:2004
5
5
  # - section 13.9 Repeat statement
6
- class Repeat < Statement
6
+ class Repeat < ModelElement
7
+ include Statement
7
8
  include Identifier
8
9
 
9
- model_attr_accessor :bound1, 'Expression'
10
- model_attr_accessor :bound2, 'Expression'
11
- model_attr_accessor :increment, 'Expression'
12
- model_attr_accessor :while_expression, 'Expression'
13
- model_attr_accessor :until_expression, 'Expression'
14
- model_attr_accessor :statements, 'Array<Statement>'
10
+ collection_attributes :statements
11
+ child_attributes :while_expression, :until_expression
12
+ attribute :bound1, ModelElement
13
+ attribute :bound2, ModelElement
14
+ attribute :increment, ModelElement
15
+ attribute :while_expression, ModelElement
16
+ attribute :until_expression, ModelElement
17
+ attribute :statements, ModelElement, collection: true
18
+ attribute :_class, :string, default: -> { self.class.name }
15
19
 
16
- # @param [Hash] options
17
- # @option (see Identifier#initialize_identifier)
18
- # @option options [Expression] :bound1
19
- # @option options [Expression] :bound2
20
- # @option options [Expression] :increment
21
- # @option options [Expression] :while_expression
22
- # @option options [Expression] :until_expression
23
- # @option options [Array<Statement>] :statements
24
- def initialize(options = {})
25
- initialize_identifier(options)
26
-
27
- @bound1 = options[:bound1]
28
- @bound2 = options[:bound2]
29
- @increment = options[:increment]
30
- @while_expression = options[:while_expression]
31
- @until_expression = options[:until_expression]
32
- @statements = options[:statements] || []
33
-
34
- super
20
+ key_value do
21
+ map "_class", to: :_class, render_default: true
22
+ map "bound1", to: :bound1
23
+ map "bound2", to: :bound2
24
+ map "increment", to: :increment
25
+ map "while_expression", to: :while_expression
26
+ map "until_expression", to: :until_expression
27
+ map "statements", to: :statements
35
28
  end
36
29
 
37
30
  # @return [Array<Declaration>]
38
31
  def children
39
32
  [
40
33
  self,
41
- *remark_items
34
+ *remark_items,
42
35
  ]
43
36
  end
44
37
  end
45
38
  end
46
39
  end
47
- end
40
+ end
@@ -3,17 +3,18 @@ module Expressir
3
3
  module Statements
4
4
  # Specified in ISO 10303-11:2004
5
5
  # - section 13.10 Return statement
6
- class Return < Statement
7
- model_attr_accessor :expression, 'Expression'
6
+ class Return < ModelElement
7
+ include Statement
8
8
 
9
- # @param [Hash] options
10
- # @option options [Expression] :expression
11
- def initialize(options = {})
12
- @expression = options[:expression]
9
+ attribute :expression, ModelElement
10
+ attribute :_class, :string, default: -> { self.class.name }
13
11
 
14
- super
12
+ key_value do
13
+ map "_class", to: :_class, render_default: true
14
+ map "untagged_remarks", to: :untagged_remarks
15
+ map "expression", to: :expression
15
16
  end
16
17
  end
17
18
  end
18
19
  end
19
- end
20
+ end
@@ -3,8 +3,16 @@ module Expressir
3
3
  module Statements
4
4
  # Specified in ISO 10303-11:2004
5
5
  # - section 13.11 Skip statement
6
- class Skip < Statement
6
+ class Skip < ModelElement
7
+ include Statement
8
+
9
+ attribute :_class, :string, default: -> { self.class.name }
10
+
11
+ key_value do
12
+ map "_class", to: :_class, render_default: true
13
+ map "untagged_remarks", to: :untagged_remarks
14
+ end
7
15
  end
8
16
  end
9
17
  end
10
- end
18
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Expressir
4
+ module Model
5
+ module Statements
6
+ autoload :Alias, "#{__dir__}/statements/alias"
7
+ autoload :Assignment, "#{__dir__}/statements/assignment"
8
+ autoload :Case, "#{__dir__}/statements/case"
9
+ autoload :CaseAction, "#{__dir__}/statements/case_action"
10
+ autoload :Compound, "#{__dir__}/statements/compound"
11
+ autoload :Escape, "#{__dir__}/statements/escape"
12
+ autoload :If, "#{__dir__}/statements/if"
13
+ autoload :Null, "#{__dir__}/statements/null"
14
+ autoload :ProcedureCall, "#{__dir__}/statements/procedure_call"
15
+ autoload :Repeat, "#{__dir__}/statements/repeat"
16
+ autoload :Return, "#{__dir__}/statements/return"
17
+ autoload :Skip, "#{__dir__}/statements/skip"
18
+ end
19
+ end
20
+ end
@@ -4,26 +4,22 @@ module Expressir
4
4
  # Specified in ISO 10303-11:2004
5
5
  # - section 9.2.5.3 ANDOR
6
6
  # - section 9.2.5.4 AND
7
- class BinarySupertypeExpression < SupertypeExpression
8
- AND = :AND
9
- ANDOR = :ANDOR
7
+ class BinarySupertypeExpression < ModelElement
8
+ AND = "AND".freeze
9
+ ANDOR = "ANDOR".freeze
10
10
 
11
- model_attr_accessor :operator, ':AND, :ANDOR'
12
- model_attr_accessor :operand1, 'SupertypeExpression'
13
- model_attr_accessor :operand2, 'SupertypeExpression'
11
+ attribute :operator, :string, values: %w[AND ANDOR]
12
+ attribute :operand1, ModelElement
13
+ attribute :operand2, ModelElement
14
+ attribute :_class, :string, default: -> { self.class.name }
14
15
 
15
- # @param [Hash] options
16
- # @option options [:AND, :ANDOR] :operator
17
- # @option options [SupertypeExpression] :operand1
18
- # @option options [SupertypeExpression] :operand2
19
- def initialize(options = {})
20
- @operator = options[:operator]
21
- @operand1 = options[:operand1]
22
- @operand2 = options[:operand2]
23
-
24
- super
16
+ key_value do
17
+ map "_class", to: :_class, render_default: true
18
+ map "operator", to: :operator
19
+ map "operand1", to: :operand1
20
+ map "operand2", to: :operand2
25
21
  end
26
22
  end
27
23
  end
28
24
  end
29
- end
25
+ end
@@ -3,17 +3,15 @@ module Expressir
3
3
  module SupertypeExpressions
4
4
  # Specified in ISO 10303-11:2004
5
5
  # - section 9.2.5.2 ONEOF
6
- class OneofSupertypeExpression < SupertypeExpression
7
- model_attr_accessor :operands, 'Array<SupertypeExpression>'
6
+ class OneofSupertypeExpression < ModelElement
7
+ attribute :operands, ModelElement, collection: true
8
+ attribute :_class, :string, default: -> { self.class.name }
8
9
 
9
- # @param [Hash] options
10
- # @option options [Array<SupertypeExpression>] :operands
11
- def initialize(options = {})
12
- @operands = options[:operands]
13
-
14
- super
10
+ key_value do
11
+ map "_class", to: :_class, render_default: true
12
+ map "operands", to: :operands
15
13
  end
16
14
  end
17
15
  end
18
16
  end
19
- end
17
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Expressir
4
+ module Model
5
+ module SupertypeExpressions
6
+ autoload :BinarySupertypeExpression,
7
+ "#{__dir__}/supertype_expressions/binary_supertype_expression"
8
+ autoload :OneofSupertypeExpression,
9
+ "#{__dir__}/supertype_expressions/oneof_supertype_expression"
10
+ end
11
+ end
12
+ end
@@ -1,79 +1,39 @@
1
- require "expressir/model/model_element"
1
+ # lib/expressir/model.rb
2
2
 
3
- require "expressir/model/cache"
4
- require "expressir/model/data_type"
5
- require "expressir/model/declaration"
6
- require "expressir/model/expression"
7
- require "expressir/model/identifier"
8
- require "expressir/model/literal"
9
- require "expressir/model/reference"
10
- require "expressir/model/repository"
11
- require "expressir/model/statement"
12
- require "expressir/model/supertype_expression"
13
- require "expressir/model/data_types/aggregate"
14
- require "expressir/model/data_types/array"
15
- require "expressir/model/data_types/bag"
16
- require "expressir/model/data_types/binary"
17
- require "expressir/model/data_types/boolean"
18
- require "expressir/model/data_types/enumeration"
19
- require "expressir/model/data_types/enumeration_item"
20
- require "expressir/model/data_types/generic_entity"
21
- require "expressir/model/data_types/generic"
22
- require "expressir/model/data_types/integer"
23
- require "expressir/model/data_types/list"
24
- require "expressir/model/data_types/logical"
25
- require "expressir/model/data_types/number"
26
- require "expressir/model/data_types/real"
27
- require "expressir/model/data_types/set"
28
- require "expressir/model/data_types/select"
29
- require "expressir/model/data_types/string"
30
- require "expressir/model/declarations/attribute"
31
- require "expressir/model/declarations/constant"
32
- require "expressir/model/declarations/entity"
33
- require "expressir/model/declarations/function"
34
- require "expressir/model/declarations/interface"
35
- require "expressir/model/declarations/interface_item"
36
- require "expressir/model/declarations/interfaced_item"
37
- require "expressir/model/declarations/parameter"
38
- require "expressir/model/declarations/procedure"
39
- require "expressir/model/declarations/remark_item"
40
- require "expressir/model/declarations/rule"
41
- require "expressir/model/declarations/schema"
42
- require "expressir/model/declarations/schema_version"
43
- require "expressir/model/declarations/schema_version_item"
44
- require "expressir/model/declarations/subtype_constraint"
45
- require "expressir/model/declarations/type"
46
- require "expressir/model/declarations/unique_rule"
47
- require "expressir/model/declarations/variable"
48
- require "expressir/model/declarations/where_rule"
49
- require "expressir/model/expressions/aggregate_initializer"
50
- require "expressir/model/expressions/aggregate_initializer_item"
51
- require "expressir/model/expressions/binary_expression"
52
- require "expressir/model/expressions/entity_constructor"
53
- require "expressir/model/expressions/function_call"
54
- require "expressir/model/expressions/interval"
55
- require "expressir/model/expressions/query_expression"
56
- require "expressir/model/expressions/unary_expression"
57
- require "expressir/model/literals/binary"
58
- require "expressir/model/literals/integer"
59
- require "expressir/model/literals/logical"
60
- require "expressir/model/literals/real"
61
- require "expressir/model/literals/string"
62
- require "expressir/model/references/attribute_reference"
63
- require "expressir/model/references/group_reference"
64
- require "expressir/model/references/index_reference"
65
- require "expressir/model/references/simple_reference"
66
- require "expressir/model/statements/alias"
67
- require "expressir/model/statements/assignment"
68
- require "expressir/model/statements/case"
69
- require "expressir/model/statements/case_action"
70
- require "expressir/model/statements/compound"
71
- require "expressir/model/statements/escape"
72
- require "expressir/model/statements/if"
73
- require "expressir/model/statements/null"
74
- require "expressir/model/statements/procedure_call"
75
- require "expressir/model/statements/repeat"
76
- require "expressir/model/statements/return"
77
- require "expressir/model/statements/skip"
78
- require "expressir/model/supertype_expressions/binary_supertype_expression"
79
- require "expressir/model/supertype_expressions/oneof_supertype_expression"
3
+ module Expressir
4
+ module Model
5
+ # Marker modules — autoload the same concerns.rb file from each name.
6
+ # The first reference triggers the load; the file defines all eight markers.
7
+ autoload :HasId, "#{__dir__}/model/concerns"
8
+ autoload :HasRemarkItems, "#{__dir__}/model/concerns"
9
+ autoload :HasRemarks, "#{__dir__}/model/concerns"
10
+ autoload :ScopeContainer, "#{__dir__}/model/concerns"
11
+ autoload :HasInformalPropositions, "#{__dir__}/model/concerns"
12
+ autoload :HasWhereRules, "#{__dir__}/model/concerns"
13
+ autoload :TakesInlineRemark, "#{__dir__}/model/concerns"
14
+ autoload :Statement, "#{__dir__}/model/concerns"
15
+
16
+ autoload :ModelElement, "#{__dir__}/model/model_element"
17
+ autoload :Cache, "#{__dir__}/model/cache"
18
+ autoload :ExpFile, "#{__dir__}/model/exp_file"
19
+ autoload :Identifier, "#{__dir__}/model/identifier"
20
+ autoload :Repository, "#{__dir__}/model/repository"
21
+ autoload :RepositoryValidator, "#{__dir__}/model/repository_validator"
22
+ autoload :DependencyResolver, "#{__dir__}/model/dependency_resolver"
23
+ autoload :RemarkFormat, "#{__dir__}/model/remark_format"
24
+ autoload :RemarkPlacement, "#{__dir__}/model/remark_placement"
25
+ autoload :RemarkInfo, "#{__dir__}/model/remark_info"
26
+ autoload :InterfaceValidator, "#{__dir__}/model/interface_validator"
27
+ autoload :SearchEngine, "#{__dir__}/model/search_engine"
28
+
29
+ # Submodules - autoload their namespace files
30
+ autoload :Indexes, "#{__dir__}/model/indexes"
31
+ autoload :DataTypes, "#{__dir__}/model/data_types"
32
+ autoload :Declarations, "#{__dir__}/model/declarations"
33
+ autoload :Expressions, "#{__dir__}/model/expressions"
34
+ autoload :Literals, "#{__dir__}/model/literals"
35
+ autoload :References, "#{__dir__}/model/references"
36
+ autoload :Statements, "#{__dir__}/model/statements"
37
+ autoload :SupertypeExpressions, "#{__dir__}/model/supertype_expressions"
38
+ end
39
+ end