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,318 +0,0 @@
1
- require "yaml"
2
- require "spec_helper"
3
- require "expressir/express/parser"
4
- require "expressir/express/formatter"
5
-
6
- RSpec.describe Expressir::Model::ModelElement do
7
- describe ".to_hash" do
8
- it "exports an object with a formatter (single.exp)" do |example|
9
- print "\n[#{example.description}] "
10
- exp_file = Expressir.root_path.join("spec", "syntax", "single.exp")
11
- yaml_file = Expressir.root_path.join("spec", "syntax", "single_formatted.yaml")
12
-
13
- repo = Expressir::Express::Parser.from_file(exp_file)
14
-
15
- result = YAML.dump(repo.to_hash(root_path: Expressir.root_path, formatter: Expressir::Express::Formatter))
16
- # File.write(yaml_file, result)
17
- expected_result = File.read(yaml_file)
18
-
19
- expect(result).to eq(expected_result)
20
-
21
- # Validate Object Space
22
- GC.start
23
- GC.verify_compaction_references
24
- GC.verify_internal_consistency
25
- end
26
- end
27
-
28
- describe ".from_hash" do
29
- it "parses an object (single.yaml)" do |example|
30
- print "\n[#{example.description}] "
31
- yaml_file = Expressir.root_path.join("spec", "syntax", "single.yaml")
32
-
33
- input = YAML.safe_load(File.read(yaml_file))
34
- repo = Expressir::Model::ModelElement.from_hash(input, root_path: Expressir.root_path)
35
-
36
- result = YAML.dump(repo.to_hash(root_path: Expressir.root_path))
37
- expected_result = File.read(yaml_file)
38
-
39
- expect(result).to eq(expected_result)
40
-
41
- # Validate Object Space
42
- GC.start
43
- GC.verify_compaction_references
44
- GC.verify_internal_consistency
45
- end
46
-
47
- it "parses an object (multiple.yaml)" do |example|
48
- print "\n[#{example.description}] "
49
- yaml_file = Expressir.root_path.join("spec", "syntax", "multiple.yaml")
50
-
51
- input = YAML.safe_load(File.read(yaml_file), permitted_classes: [Symbol]) # For UTF8 symbols
52
- repo = Expressir::Model::ModelElement.from_hash(input, root_path: Expressir.root_path)
53
-
54
- result = YAML.dump(repo.to_hash(root_path: Expressir.root_path))
55
- expected_result = File.read(yaml_file)
56
-
57
- expect(result).to eq(expected_result)
58
-
59
- # Validate Object Space
60
- GC.start
61
- GC.verify_compaction_references
62
- GC.verify_internal_consistency
63
- end
64
-
65
- it "parses an object (syntax.yaml)" do |example|
66
- print "\n[#{example.description}] "
67
- yaml_file = Expressir.root_path.join("spec", "syntax", "syntax.yaml")
68
-
69
- input = YAML.safe_load(File.read(yaml_file), permitted_classes: [Symbol]) # For UTF8 symbols
70
- repo = Expressir::Model::ModelElement.from_hash(input, root_path: Expressir.root_path)
71
-
72
- result = YAML.dump(repo.to_hash(root_path: Expressir.root_path))
73
- expected_result = File.read(yaml_file)
74
-
75
- expect(result).to eq(expected_result)
76
-
77
- GC.start
78
- GC.verify_compaction_references
79
- GC.verify_internal_consistency
80
- end
81
-
82
- it "parses an object (remark.yaml)" do |example|
83
- print "\n[#{example.description}] "
84
- yaml_file = Expressir.root_path.join("spec", "syntax", "remark.yaml")
85
-
86
- input = YAML.safe_load(File.read(yaml_file), permitted_classes: [Symbol]) # For UTF8 symbols
87
- repo = Expressir::Model::ModelElement.from_hash(input, root_path: Expressir.root_path)
88
-
89
- result = YAML.dump(repo.to_hash(root_path: Expressir.root_path))
90
- expected_result = File.read(yaml_file)
91
-
92
- expect(result).to eq(expected_result)
93
-
94
- # Validate Object Space
95
- GC.start
96
- GC.verify_compaction_references
97
- GC.verify_internal_consistency
98
- end
99
- end
100
-
101
- describe ".find" do
102
- it "finds an object (single.exp)" do |example|
103
- print "\n[#{example.description}] "
104
- exp_file = Expressir.root_path.join("spec", "syntax", "single.exp")
105
-
106
- repo = Expressir::Express::Parser.from_file(exp_file)
107
-
108
- # universal scope
109
- expect(repo.find("single_schema")).to be_instance_of(Expressir::Model::Declarations::Schema)
110
- expect(repo.find("single_schema.empty_entity")).to be_instance_of(Expressir::Model::Declarations::Entity)
111
-
112
- # schema scope
113
- schema = repo.schemas.first
114
- expect(schema.find("empty_entity")).to be_instance_of(Expressir::Model::Declarations::Entity)
115
-
116
- # Validate Object Space
117
- GC.start
118
- GC.verify_compaction_references
119
- GC.verify_internal_consistency
120
- end
121
-
122
- it "finds an object (multiple.exp)" do |example|
123
- print "\n[#{example.description}] "
124
- exp_file = Expressir.root_path.join("spec", "syntax", "multiple.exp")
125
-
126
- repo = Expressir::Express::Parser.from_file(exp_file)
127
-
128
- # universal scope
129
- expect(repo.find("multiple_schema")).to be_instance_of(Expressir::Model::Declarations::Schema)
130
- expect(repo.find("multiple_schema.empty_entity")).to be_instance_of(Expressir::Model::Declarations::Entity)
131
- expect(repo.find("multiple_schema.attribute_entity")).to be_instance_of(Expressir::Model::Declarations::Entity)
132
- expect(repo.find("multiple_schema.attribute_entity2")).to be_instance_of(Expressir::Model::Declarations::Entity)
133
- expect(repo.find("multiple_schema.attribute_entity3")).to be_instance_of(Expressir::Model::Declarations::Entity)
134
- expect(repo.find("multiple_schema.attribute_entity4")).to be_instance_of(Expressir::Model::Declarations::Entity)
135
-
136
- # schema scope
137
- schema = repo.schemas.first
138
- expect(schema.find("empty_entity")).to be_instance_of(Expressir::Model::Declarations::Entity)
139
- expect(schema.find("attribute_entity")).to be_instance_of(Expressir::Model::Declarations::Entity)
140
- expect(schema.find("attribute_entity2")).to be_instance_of(Expressir::Model::Declarations::Entity)
141
- expect(schema.find("attribute_entity3")).to be_instance_of(Expressir::Model::Declarations::Entity)
142
- expect(schema.find("attribute_entity4")).to be_instance_of(Expressir::Model::Declarations::Entity)
143
-
144
- # Validate Object Space
145
- GC.start
146
- GC.verify_compaction_references
147
- GC.verify_internal_consistency
148
- end
149
-
150
- it "finds an object (syntax.exp)" do |example|
151
- print "\n[#{example.description}] "
152
- exp_file = Expressir.root_path.join("spec", "syntax", "syntax.exp")
153
-
154
- repo = Expressir::Express::Parser.from_file(exp_file)
155
-
156
- # universal scope
157
- expect(repo.find("syntax_schema")).to be_instance_of(Expressir::Model::Declarations::Schema)
158
- expect(repo.find("syntax_schema.empty_entity")).to be_instance_of(Expressir::Model::Declarations::Entity)
159
-
160
- # schema scope
161
- schema = repo.schemas.first
162
- expect(schema.find("empty_entity")).to be_instance_of(Expressir::Model::Declarations::Entity)
163
-
164
- # Validate Object Space
165
- GC.start
166
- GC.verify_compaction_references
167
- GC.verify_internal_consistency
168
- end
169
-
170
- it "finds an object (remark.exp)" do |example|
171
- print "\n[#{example.description}] "
172
- exp_file = Expressir.root_path.join("spec", "syntax", "remark.exp")
173
-
174
- repo = Expressir::Express::Parser.from_file(exp_file)
175
-
176
- # universal scope
177
- expect(repo.find("remark_schema")).to be_instance_of(Expressir::Model::Declarations::Schema)
178
- expect(repo.find("remark_schema.remark_constant")).to be_instance_of(Expressir::Model::Declarations::Constant)
179
- expect(repo.find("remark_schema.remark_type")).to be_instance_of(Expressir::Model::Declarations::Type)
180
- expect(repo.find("remark_schema.remark_type.WR1")).to be_instance_of(Expressir::Model::Declarations::WhereRule)
181
- expect(repo.find("remark_schema.remark_type.wr:WR1")).to be_instance_of(Expressir::Model::Declarations::WhereRule)
182
- expect(repo.find("remark_schema.remark_type.IP1")).to be_instance_of(Expressir::Model::Declarations::RemarkItem)
183
- expect(repo.find("remark_schema.remark_type.ip:IP1")).to be_instance_of(Expressir::Model::Declarations::RemarkItem)
184
- expect(repo.find("remark_schema.remark_enumeration_item")).to be_instance_of(Expressir::Model::DataTypes::EnumerationItem)
185
- expect(repo.find("remark_schema.remark_entity")).to be_instance_of(Expressir::Model::Declarations::Entity)
186
- expect(repo.find("remark_schema.remark_entity.remark_attribute")).to be_instance_of(Expressir::Model::Declarations::Attribute)
187
- expect(repo.find("remark_schema.remark_entity.remark_derived_attribute")).to be_instance_of(Expressir::Model::Declarations::Attribute)
188
- expect(repo.find("remark_schema.remark_entity.remark_inverse_attribute")).to be_instance_of(Expressir::Model::Declarations::Attribute)
189
- expect(repo.find("remark_schema.remark_entity.UR1")).to be_instance_of(Expressir::Model::Declarations::UniqueRule)
190
- expect(repo.find("remark_schema.remark_entity.WR1")).to be_instance_of(Expressir::Model::Declarations::WhereRule)
191
- expect(repo.find("remark_schema.remark_entity.wr:WR1")).to be_instance_of(Expressir::Model::Declarations::WhereRule)
192
- expect(repo.find("remark_schema.remark_entity.IP1")).to be_instance_of(Expressir::Model::Declarations::RemarkItem)
193
- expect(repo.find("remark_schema.remark_entity.ip:IP1")).to be_instance_of(Expressir::Model::Declarations::RemarkItem)
194
- expect(repo.find("remark_schema.remark_subtype_constraint")).to be_instance_of(Expressir::Model::Declarations::SubtypeConstraint)
195
- expect(repo.find("remark_schema.remark_function")).to be_instance_of(Expressir::Model::Declarations::Function)
196
- expect(repo.find("remark_schema.remark_function.remark_parameter")).to be_instance_of(Expressir::Model::Declarations::Parameter)
197
- expect(repo.find("remark_schema.remark_function.remark_type")).to be_instance_of(Expressir::Model::Declarations::Type)
198
- expect(repo.find("remark_schema.remark_function.remark_enumeration_item")).to be_instance_of(Expressir::Model::DataTypes::EnumerationItem)
199
- expect(repo.find("remark_schema.remark_function.remark_constant")).to be_instance_of(Expressir::Model::Declarations::Constant)
200
- expect(repo.find("remark_schema.remark_function.remark_variable")).to be_instance_of(Expressir::Model::Declarations::Variable)
201
- expect(repo.find("remark_schema.remark_procedure")).to be_instance_of(Expressir::Model::Declarations::Procedure)
202
- expect(repo.find("remark_schema.remark_procedure.remark_parameter")).to be_instance_of(Expressir::Model::Declarations::Parameter)
203
- expect(repo.find("remark_schema.remark_procedure.remark_type")).to be_instance_of(Expressir::Model::Declarations::Type)
204
- expect(repo.find("remark_schema.remark_procedure.remark_enumeration_item")).to be_instance_of(Expressir::Model::DataTypes::EnumerationItem)
205
- expect(repo.find("remark_schema.remark_procedure.remark_constant")).to be_instance_of(Expressir::Model::Declarations::Constant)
206
- expect(repo.find("remark_schema.remark_procedure.remark_variable")).to be_instance_of(Expressir::Model::Declarations::Variable)
207
- expect(repo.find("remark_schema.remark_rule")).to be_instance_of(Expressir::Model::Declarations::Rule)
208
- expect(repo.find("remark_schema.remark_rule.remark_type")).to be_instance_of(Expressir::Model::Declarations::Type)
209
- expect(repo.find("remark_schema.remark_rule.remark_enumeration_item")).to be_instance_of(Expressir::Model::DataTypes::EnumerationItem)
210
- expect(repo.find("remark_schema.remark_rule.remark_constant")).to be_instance_of(Expressir::Model::Declarations::Constant)
211
- expect(repo.find("remark_schema.remark_rule.remark_variable")).to be_instance_of(Expressir::Model::Declarations::Variable)
212
- expect(repo.find("remark_schema.remark_rule.WR1")).to be_instance_of(Expressir::Model::Declarations::WhereRule)
213
- expect(repo.find("remark_schema.remark_rule.wr:WR1")).to be_instance_of(Expressir::Model::Declarations::WhereRule)
214
- expect(repo.find("remark_schema.remark_rule.IP1")).to be_instance_of(Expressir::Model::Declarations::RemarkItem)
215
- expect(repo.find("remark_schema.remark_rule.ip:IP1")).to be_instance_of(Expressir::Model::Declarations::RemarkItem)
216
- expect(repo.find("remark_schema.remark_item")).to be_instance_of(Expressir::Model::Declarations::RemarkItem)
217
-
218
- # schema scope
219
- schema = repo.schemas.first
220
- expect(schema.find("remark_constant")).to be_instance_of(Expressir::Model::Declarations::Constant)
221
- expect(schema.find("remark_type")).to be_instance_of(Expressir::Model::Declarations::Type)
222
- expect(schema.find("remark_type.WR1")).to be_instance_of(Expressir::Model::Declarations::WhereRule)
223
- expect(schema.find("remark_type.wr:WR1")).to be_instance_of(Expressir::Model::Declarations::WhereRule)
224
- expect(schema.find("remark_type.IP1")).to be_instance_of(Expressir::Model::Declarations::RemarkItem)
225
- expect(schema.find("remark_type.ip:IP1")).to be_instance_of(Expressir::Model::Declarations::RemarkItem)
226
- expect(schema.find("remark_enumeration_item")).to be_instance_of(Expressir::Model::DataTypes::EnumerationItem)
227
- expect(schema.find("remark_entity")).to be_instance_of(Expressir::Model::Declarations::Entity)
228
- expect(schema.find("remark_entity.remark_attribute")).to be_instance_of(Expressir::Model::Declarations::Attribute)
229
- expect(schema.find("remark_entity.remark_derived_attribute")).to be_instance_of(Expressir::Model::Declarations::Attribute)
230
- expect(schema.find("remark_entity.remark_inverse_attribute")).to be_instance_of(Expressir::Model::Declarations::Attribute)
231
- expect(schema.find("remark_entity.UR1")).to be_instance_of(Expressir::Model::Declarations::UniqueRule)
232
- expect(schema.find("remark_entity.WR1")).to be_instance_of(Expressir::Model::Declarations::WhereRule)
233
- expect(schema.find("remark_entity.wr:WR1")).to be_instance_of(Expressir::Model::Declarations::WhereRule)
234
- expect(schema.find("remark_entity.IP1")).to be_instance_of(Expressir::Model::Declarations::RemarkItem)
235
- expect(schema.find("remark_entity.ip:IP1")).to be_instance_of(Expressir::Model::Declarations::RemarkItem)
236
- expect(schema.find("remark_subtype_constraint")).to be_instance_of(Expressir::Model::Declarations::SubtypeConstraint)
237
- expect(schema.find("remark_function")).to be_instance_of(Expressir::Model::Declarations::Function)
238
- expect(schema.find("remark_function.remark_parameter")).to be_instance_of(Expressir::Model::Declarations::Parameter)
239
- expect(schema.find("remark_function.remark_type")).to be_instance_of(Expressir::Model::Declarations::Type)
240
- expect(schema.find("remark_function.remark_enumeration_item")).to be_instance_of(Expressir::Model::DataTypes::EnumerationItem)
241
- expect(schema.find("remark_function.remark_constant")).to be_instance_of(Expressir::Model::Declarations::Constant)
242
- expect(schema.find("remark_function.remark_variable")).to be_instance_of(Expressir::Model::Declarations::Variable)
243
- expect(schema.find("remark_procedure")).to be_instance_of(Expressir::Model::Declarations::Procedure)
244
- expect(schema.find("remark_procedure.remark_parameter")).to be_instance_of(Expressir::Model::Declarations::Parameter)
245
- expect(schema.find("remark_procedure.remark_type")).to be_instance_of(Expressir::Model::Declarations::Type)
246
- expect(schema.find("remark_procedure.remark_enumeration_item")).to be_instance_of(Expressir::Model::DataTypes::EnumerationItem)
247
- expect(schema.find("remark_procedure.remark_constant")).to be_instance_of(Expressir::Model::Declarations::Constant)
248
- expect(schema.find("remark_procedure.remark_variable")).to be_instance_of(Expressir::Model::Declarations::Variable)
249
- expect(schema.find("remark_rule")).to be_instance_of(Expressir::Model::Declarations::Rule)
250
- expect(schema.find("remark_rule.remark_type")).to be_instance_of(Expressir::Model::Declarations::Type)
251
- expect(schema.find("remark_rule.remark_enumeration_item")).to be_instance_of(Expressir::Model::DataTypes::EnumerationItem)
252
- expect(schema.find("remark_rule.remark_constant")).to be_instance_of(Expressir::Model::Declarations::Constant)
253
- expect(schema.find("remark_rule.remark_variable")).to be_instance_of(Expressir::Model::Declarations::Variable)
254
- expect(schema.find("remark_rule.WR1")).to be_instance_of(Expressir::Model::Declarations::WhereRule)
255
- expect(schema.find("remark_rule.wr:WR1")).to be_instance_of(Expressir::Model::Declarations::WhereRule)
256
- expect(schema.find("remark_rule.IP1")).to be_instance_of(Expressir::Model::Declarations::RemarkItem)
257
- expect(schema.find("remark_rule.ip:IP1")).to be_instance_of(Expressir::Model::Declarations::RemarkItem)
258
- expect(schema.find("remark_item")).to be_instance_of(Expressir::Model::Declarations::RemarkItem)
259
-
260
- # type scope
261
- type = schema.types.first
262
- expect(type.find("WR1")).to be_instance_of(Expressir::Model::Declarations::WhereRule)
263
- expect(type.find("wr:WR1")).to be_instance_of(Expressir::Model::Declarations::WhereRule)
264
- expect(type.find("IP1")).to be_instance_of(Expressir::Model::Declarations::RemarkItem)
265
- expect(type.find("ip:IP1")).to be_instance_of(Expressir::Model::Declarations::RemarkItem)
266
-
267
- # entity scope
268
- entity = schema.entities.first
269
- expect(entity.find("remark_attribute")).to be_instance_of(Expressir::Model::Declarations::Attribute)
270
- expect(entity.find("remark_derived_attribute")).to be_instance_of(Expressir::Model::Declarations::Attribute)
271
- expect(entity.find("remark_inverse_attribute")).to be_instance_of(Expressir::Model::Declarations::Attribute)
272
- expect(entity.find("UR1")).to be_instance_of(Expressir::Model::Declarations::UniqueRule)
273
- expect(entity.find("WR1")).to be_instance_of(Expressir::Model::Declarations::WhereRule)
274
- expect(entity.find("wr:WR1")).to be_instance_of(Expressir::Model::Declarations::WhereRule)
275
- expect(entity.find("IP1")).to be_instance_of(Expressir::Model::Declarations::RemarkItem)
276
- expect(entity.find("ip:IP1")).to be_instance_of(Expressir::Model::Declarations::RemarkItem)
277
-
278
- # function scope
279
- function = schema.functions.first
280
- expect(function.find("remark_parameter")).to be_instance_of(Expressir::Model::Declarations::Parameter)
281
- expect(function.find("remark_type")).to be_instance_of(Expressir::Model::Declarations::Type)
282
- expect(function.find("remark_enumeration_item")).to be_instance_of(Expressir::Model::DataTypes::EnumerationItem)
283
- expect(function.find("remark_constant")).to be_instance_of(Expressir::Model::Declarations::Constant)
284
- expect(function.find("remark_variable")).to be_instance_of(Expressir::Model::Declarations::Variable)
285
-
286
- # procedure scope
287
- procedure = schema.procedures.first
288
- expect(procedure.find("remark_parameter")).to be_instance_of(Expressir::Model::Declarations::Parameter)
289
- expect(procedure.find("remark_type")).to be_instance_of(Expressir::Model::Declarations::Type)
290
- expect(procedure.find("remark_enumeration_item")).to be_instance_of(Expressir::Model::DataTypes::EnumerationItem)
291
- expect(procedure.find("remark_constant")).to be_instance_of(Expressir::Model::Declarations::Constant)
292
- expect(procedure.find("remark_variable")).to be_instance_of(Expressir::Model::Declarations::Variable)
293
-
294
- # rule scope
295
- rule = schema.rules.first
296
- expect(rule.find("remark_type")).to be_instance_of(Expressir::Model::Declarations::Type)
297
- expect(rule.find("remark_enumeration_item")).to be_instance_of(Expressir::Model::DataTypes::EnumerationItem)
298
- expect(rule.find("remark_constant")).to be_instance_of(Expressir::Model::Declarations::Constant)
299
- expect(rule.find("remark_variable")).to be_instance_of(Expressir::Model::Declarations::Variable)
300
- expect(rule.find("WR1")).to be_instance_of(Expressir::Model::Declarations::WhereRule)
301
- expect(rule.find("wr:WR1")).to be_instance_of(Expressir::Model::Declarations::WhereRule)
302
- expect(rule.find("IP1")).to be_instance_of(Expressir::Model::Declarations::RemarkItem)
303
- expect(rule.find("ip:IP1")).to be_instance_of(Expressir::Model::Declarations::RemarkItem)
304
-
305
- # retry search in parent scope
306
- expect(entity.find("remark_type")).to be_instance_of(Expressir::Model::Declarations::Type)
307
- expect(entity.find("remark_type.WR1")).to be_instance_of(Expressir::Model::Declarations::WhereRule)
308
- expect(entity.find("remark_type.wr:WR1")).to be_instance_of(Expressir::Model::Declarations::WhereRule)
309
- expect(entity.find("remark_type.IP1")).to be_instance_of(Expressir::Model::Declarations::RemarkItem)
310
- expect(entity.find("remark_type.ip:IP1")).to be_instance_of(Expressir::Model::Declarations::RemarkItem)
311
-
312
- # Validate Object Space
313
- GC.start
314
- GC.verify_compaction_references
315
- GC.verify_internal_consistency
316
- end
317
- end
318
- end
data/spec/spec_helper.rb DELETED
@@ -1,24 +0,0 @@
1
- require "bundler/setup"
2
- require "expressir"
3
-
4
- Dir["./spec/support/**/*.rb"].sort.each { |file| require file }
5
-
6
- RSpec.configure do |config|
7
- # Enable flags like --only-failures and --next-failure
8
- config.example_status_persistence_file_path = ".rspec_status"
9
- config.include Expressir::ConsoleHelper
10
-
11
- # Disable RSpec exposing methods globally on `Module` and `main`
12
- config.disable_monkey_patching!
13
-
14
- config.expect_with :rspec do |c|
15
- c.syntax = :expect
16
- end
17
-
18
- config.around(:example) do |ex|
19
- ex.run
20
- rescue SystemExit => e
21
- puts "Got SystemExit: #{e.inspect}."
22
- raise
23
- end
24
- end
@@ -1,29 +0,0 @@
1
- module Expressir
2
- module ConsoleHelper
3
- def capture_stdout(&_block)
4
- original_stdout = $stdout
5
- $stdout = fake = StringIO.new
6
-
7
- begin
8
- yield
9
- ensure
10
- $stdout = original_stdout
11
- end
12
-
13
- fake.string
14
- end
15
-
16
- def capture_stderr(&_block)
17
- original_stderr = $stderr
18
- $stderr = fake = StringIO.new
19
-
20
- begin
21
- yield
22
- ensure
23
- $stderr = original_stderr
24
- end
25
-
26
- fake.string
27
- end
28
- end
29
- end
@@ -1,23 +0,0 @@
1
- SCHEMA multiple_schema;
2
- REFERENCE FROM multiple_schema2;
3
- REFERENCE FROM multiple_schema3 (attribute_entity3);
4
- REFERENCE FROM multiple_schema4 (attribute_entity AS attribute_entity4);
5
- ENTITY test; END_ENTITY;
6
- ENTITY empty_entity; END_ENTITY;
7
- ENTITY attribute_entity; test : BOOLEAN; END_ENTITY;
8
- ENTITY subtype_empty_entity SUBTYPE OF (empty_entity); END_ENTITY;
9
- ENTITY subtype_attribute_entity SUBTYPE OF (attribute_entity); SELF\attribute_entity.test : BOOLEAN; END_ENTITY;
10
- ENTITY subtype_attribute_entity2 SUBTYPE OF (attribute_entity2); SELF\attribute_entity2.test : BOOLEAN; END_ENTITY;
11
- ENTITY subtype_attribute_entity3 SUBTYPE OF (attribute_entity3); SELF\attribute_entity3.test : BOOLEAN; END_ENTITY;
12
- ENTITY subtype_attribute_entity4 SUBTYPE OF (attribute_entity4); SELF\attribute_entity4.test : BOOLEAN; END_ENTITY;
13
- ENTITY subtype_missing_entity SUBTYPE OF (missing_entity); END_ENTITY;
14
- END_SCHEMA;
15
- SCHEMA multiple_schema2;
16
- ENTITY attribute_entity2; test : BOOLEAN; END_ENTITY;
17
- END_SCHEMA;
18
- SCHEMA multiple_schema3;
19
- ENTITY attribute_entity3; test : BOOLEAN; END_ENTITY;
20
- END_SCHEMA;
21
- SCHEMA multiple_schema4;
22
- ENTITY attribute_entity; test : BOOLEAN; END_ENTITY;
23
- END_SCHEMA;
@@ -1,198 +0,0 @@
1
- ---
2
- _class: Expressir::Model::Repository
3
- schemas:
4
- - _class: Expressir::Model::Declarations::Schema
5
- file: spec/syntax/multiple.exp
6
- id: multiple_schema
7
- interfaces:
8
- - _class: Expressir::Model::Declarations::Interface
9
- kind: :REFERENCE
10
- schema:
11
- _class: Expressir::Model::References::SimpleReference
12
- id: multiple_schema2
13
- base_path: multiple_schema2
14
- - _class: Expressir::Model::Declarations::Interface
15
- kind: :REFERENCE
16
- schema:
17
- _class: Expressir::Model::References::SimpleReference
18
- id: multiple_schema3
19
- base_path: multiple_schema3
20
- items:
21
- - _class: Expressir::Model::Declarations::InterfaceItem
22
- ref:
23
- _class: Expressir::Model::References::SimpleReference
24
- id: attribute_entity3
25
- base_path: multiple_schema3.attribute_entity3
26
- - _class: Expressir::Model::Declarations::Interface
27
- kind: :REFERENCE
28
- schema:
29
- _class: Expressir::Model::References::SimpleReference
30
- id: multiple_schema4
31
- base_path: multiple_schema4
32
- items:
33
- - _class: Expressir::Model::Declarations::InterfaceItem
34
- ref:
35
- _class: Expressir::Model::References::SimpleReference
36
- id: attribute_entity
37
- base_path: multiple_schema4.attribute_entity
38
- id: attribute_entity4
39
- entities:
40
- - _class: Expressir::Model::Declarations::Entity
41
- id: test
42
- - _class: Expressir::Model::Declarations::Entity
43
- id: empty_entity
44
- - _class: Expressir::Model::Declarations::Entity
45
- id: attribute_entity
46
- attributes:
47
- - _class: Expressir::Model::Declarations::Attribute
48
- id: test
49
- kind: :EXPLICIT
50
- type:
51
- _class: Expressir::Model::DataTypes::Boolean
52
- - _class: Expressir::Model::Declarations::Entity
53
- id: subtype_empty_entity
54
- subtype_of:
55
- - _class: Expressir::Model::References::SimpleReference
56
- id: empty_entity
57
- base_path: multiple_schema.empty_entity
58
- - _class: Expressir::Model::Declarations::Entity
59
- id: subtype_attribute_entity
60
- subtype_of:
61
- - _class: Expressir::Model::References::SimpleReference
62
- id: attribute_entity
63
- base_path: multiple_schema.attribute_entity
64
- attributes:
65
- - _class: Expressir::Model::Declarations::Attribute
66
- kind: :EXPLICIT
67
- supertype_attribute:
68
- _class: Expressir::Model::References::AttributeReference
69
- ref:
70
- _class: Expressir::Model::References::GroupReference
71
- ref:
72
- _class: Expressir::Model::References::SimpleReference
73
- id: SELF
74
- entity:
75
- _class: Expressir::Model::References::SimpleReference
76
- id: attribute_entity
77
- base_path: multiple_schema.attribute_entity
78
- attribute:
79
- _class: Expressir::Model::References::SimpleReference
80
- id: test
81
- type:
82
- _class: Expressir::Model::DataTypes::Boolean
83
- - _class: Expressir::Model::Declarations::Entity
84
- id: subtype_attribute_entity2
85
- subtype_of:
86
- - _class: Expressir::Model::References::SimpleReference
87
- id: attribute_entity2
88
- base_path: multiple_schema2.attribute_entity2
89
- attributes:
90
- - _class: Expressir::Model::Declarations::Attribute
91
- kind: :EXPLICIT
92
- supertype_attribute:
93
- _class: Expressir::Model::References::AttributeReference
94
- ref:
95
- _class: Expressir::Model::References::GroupReference
96
- ref:
97
- _class: Expressir::Model::References::SimpleReference
98
- id: SELF
99
- entity:
100
- _class: Expressir::Model::References::SimpleReference
101
- id: attribute_entity2
102
- base_path: multiple_schema2.attribute_entity2
103
- attribute:
104
- _class: Expressir::Model::References::SimpleReference
105
- id: test
106
- type:
107
- _class: Expressir::Model::DataTypes::Boolean
108
- - _class: Expressir::Model::Declarations::Entity
109
- id: subtype_attribute_entity3
110
- subtype_of:
111
- - _class: Expressir::Model::References::SimpleReference
112
- id: attribute_entity3
113
- base_path: multiple_schema3.attribute_entity3
114
- attributes:
115
- - _class: Expressir::Model::Declarations::Attribute
116
- kind: :EXPLICIT
117
- supertype_attribute:
118
- _class: Expressir::Model::References::AttributeReference
119
- ref:
120
- _class: Expressir::Model::References::GroupReference
121
- ref:
122
- _class: Expressir::Model::References::SimpleReference
123
- id: SELF
124
- entity:
125
- _class: Expressir::Model::References::SimpleReference
126
- id: attribute_entity3
127
- base_path: multiple_schema3.attribute_entity3
128
- attribute:
129
- _class: Expressir::Model::References::SimpleReference
130
- id: test
131
- type:
132
- _class: Expressir::Model::DataTypes::Boolean
133
- - _class: Expressir::Model::Declarations::Entity
134
- id: subtype_attribute_entity4
135
- subtype_of:
136
- - _class: Expressir::Model::References::SimpleReference
137
- id: attribute_entity4
138
- base_path: multiple_schema4.attribute_entity
139
- attributes:
140
- - _class: Expressir::Model::Declarations::Attribute
141
- kind: :EXPLICIT
142
- supertype_attribute:
143
- _class: Expressir::Model::References::AttributeReference
144
- ref:
145
- _class: Expressir::Model::References::GroupReference
146
- ref:
147
- _class: Expressir::Model::References::SimpleReference
148
- id: SELF
149
- entity:
150
- _class: Expressir::Model::References::SimpleReference
151
- id: attribute_entity4
152
- base_path: multiple_schema4.attribute_entity
153
- attribute:
154
- _class: Expressir::Model::References::SimpleReference
155
- id: test
156
- type:
157
- _class: Expressir::Model::DataTypes::Boolean
158
- - _class: Expressir::Model::Declarations::Entity
159
- id: subtype_missing_entity
160
- subtype_of:
161
- - _class: Expressir::Model::References::SimpleReference
162
- id: missing_entity
163
- - _class: Expressir::Model::Declarations::Schema
164
- file: spec/syntax/multiple.exp
165
- id: multiple_schema2
166
- entities:
167
- - _class: Expressir::Model::Declarations::Entity
168
- id: attribute_entity2
169
- attributes:
170
- - _class: Expressir::Model::Declarations::Attribute
171
- id: test
172
- kind: :EXPLICIT
173
- type:
174
- _class: Expressir::Model::DataTypes::Boolean
175
- - _class: Expressir::Model::Declarations::Schema
176
- file: spec/syntax/multiple.exp
177
- id: multiple_schema3
178
- entities:
179
- - _class: Expressir::Model::Declarations::Entity
180
- id: attribute_entity3
181
- attributes:
182
- - _class: Expressir::Model::Declarations::Attribute
183
- id: test
184
- kind: :EXPLICIT
185
- type:
186
- _class: Expressir::Model::DataTypes::Boolean
187
- - _class: Expressir::Model::Declarations::Schema
188
- file: spec/syntax/multiple.exp
189
- id: multiple_schema4
190
- entities:
191
- - _class: Expressir::Model::Declarations::Entity
192
- id: attribute_entity
193
- attributes:
194
- - _class: Expressir::Model::Declarations::Attribute
195
- id: test
196
- kind: :EXPLICIT
197
- type:
198
- _class: Expressir::Model::DataTypes::Boolean
@@ -1,71 +0,0 @@
1
- SCHEMA multiple_schema;
2
-
3
- REFERENCE FROM multiple_schema2;
4
- REFERENCE FROM multiple_schema3
5
- (attribute_entity3);
6
- REFERENCE FROM multiple_schema4
7
- (attribute_entity AS attribute_entity4);
8
-
9
- ENTITY test;
10
- END_ENTITY;
11
-
12
- ENTITY empty_entity;
13
- END_ENTITY;
14
-
15
- ENTITY attribute_entity;
16
- test : BOOLEAN;
17
- END_ENTITY;
18
-
19
- ENTITY subtype_empty_entity
20
- SUBTYPE OF (empty_entity);
21
- END_ENTITY;
22
-
23
- ENTITY subtype_attribute_entity
24
- SUBTYPE OF (attribute_entity);
25
- SELF\attribute_entity.test : BOOLEAN;
26
- END_ENTITY;
27
-
28
- ENTITY subtype_attribute_entity2
29
- SUBTYPE OF (attribute_entity2);
30
- SELF\attribute_entity2.test : BOOLEAN;
31
- END_ENTITY;
32
-
33
- ENTITY subtype_attribute_entity3
34
- SUBTYPE OF (attribute_entity3);
35
- SELF\attribute_entity3.test : BOOLEAN;
36
- END_ENTITY;
37
-
38
- ENTITY subtype_attribute_entity4
39
- SUBTYPE OF (attribute_entity4);
40
- SELF\attribute_entity4.test : BOOLEAN;
41
- END_ENTITY;
42
-
43
- ENTITY subtype_missing_entity
44
- SUBTYPE OF (missing_entity);
45
- END_ENTITY;
46
-
47
- END_SCHEMA;
48
-
49
- SCHEMA multiple_schema2;
50
-
51
- ENTITY attribute_entity2;
52
- test : BOOLEAN;
53
- END_ENTITY;
54
-
55
- END_SCHEMA;
56
-
57
- SCHEMA multiple_schema3;
58
-
59
- ENTITY attribute_entity3;
60
- test : BOOLEAN;
61
- END_ENTITY;
62
-
63
- END_SCHEMA;
64
-
65
- SCHEMA multiple_schema4;
66
-
67
- ENTITY attribute_entity;
68
- test : BOOLEAN;
69
- END_ENTITY;
70
-
71
- END_SCHEMA;