expressir 2.1.30 → 2.2.0

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 (165) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/docs.yml +99 -0
  3. data/.github/workflows/links.yml +100 -0
  4. data/.github/workflows/rake.yml +4 -0
  5. data/.github/workflows/release.yml +11 -0
  6. data/.github/workflows/validate_schemas.yml +1 -1
  7. data/.gitignore +3 -0
  8. data/.rubocop.yml +1 -1
  9. data/.rubocop_todo.yml +267 -53
  10. data/Gemfile +2 -1
  11. data/README.adoc +993 -55
  12. data/docs/Gemfile +12 -0
  13. data/docs/_config.yml +141 -0
  14. data/docs/_guides/changes/changes-format.adoc +778 -0
  15. data/docs/_guides/changes/importing-eengine.adoc +898 -0
  16. data/docs/_guides/changes/index.adoc +396 -0
  17. data/docs/_guides/changes/programmatic-usage.adoc +1038 -0
  18. data/docs/_guides/changes/validating-changes.adoc +681 -0
  19. data/docs/_guides/cli/benchmark-performance.adoc +834 -0
  20. data/docs/_guides/cli/coverage-analysis.adoc +921 -0
  21. data/docs/_guides/cli/format-schemas.adoc +547 -0
  22. data/docs/_guides/cli/index.adoc +8 -0
  23. data/docs/_guides/cli/managing-changes.adoc +927 -0
  24. data/docs/_guides/cli/validate-ascii.adoc +645 -0
  25. data/docs/_guides/cli/validate-schemas.adoc +534 -0
  26. data/docs/_guides/formatter/formatter-architecture.adoc +401 -0
  27. data/docs/_guides/index.adoc +165 -0
  28. data/docs/_guides/ler/creating-packages.adoc +664 -0
  29. data/docs/_guides/ler/index.adoc +305 -0
  30. data/docs/_guides/ler/loading-packages.adoc +707 -0
  31. data/docs/_guides/ler/package-formats.adoc +748 -0
  32. data/docs/_guides/ler/querying-packages.adoc +826 -0
  33. data/docs/_guides/ler/validating-packages.adoc +750 -0
  34. data/docs/_guides/liquid/basic-templates.adoc +813 -0
  35. data/docs/_guides/liquid/documentation-generation.adoc +1042 -0
  36. data/docs/_guides/liquid/drops-reference.adoc +829 -0
  37. data/docs/_guides/liquid/filters-and-tags.adoc +912 -0
  38. data/docs/_guides/liquid/index.adoc +468 -0
  39. data/docs/_guides/manifests/creating-manifests.adoc +483 -0
  40. data/docs/_guides/manifests/index.adoc +307 -0
  41. data/docs/_guides/manifests/resolving-manifests.adoc +557 -0
  42. data/docs/_guides/manifests/validating-manifests.adoc +713 -0
  43. data/docs/_guides/ruby-api/formatting-schemas.adoc +605 -0
  44. data/docs/_guides/ruby-api/index.adoc +257 -0
  45. data/docs/_guides/ruby-api/parsing-files.adoc +421 -0
  46. data/docs/_guides/ruby-api/search-engine.adoc +609 -0
  47. data/docs/_guides/ruby-api/working-with-repository.adoc +577 -0
  48. data/docs/_pages/data-model.adoc +665 -0
  49. data/docs/_pages/express-language.adoc +506 -0
  50. data/docs/_pages/getting-started.adoc +414 -0
  51. data/docs/_pages/index.adoc +116 -0
  52. data/docs/_pages/introduction.adoc +256 -0
  53. data/docs/_pages/ler-packages.adoc +837 -0
  54. data/docs/_pages/parsers.adoc +709 -0
  55. data/docs/_pages/schema-manifests.adoc +431 -0
  56. data/docs/_references/index.adoc +228 -0
  57. data/docs/_tutorials/creating-ler-package.adoc +735 -0
  58. data/docs/_tutorials/documentation-coverage.adoc +795 -0
  59. data/docs/_tutorials/index.adoc +221 -0
  60. data/docs/_tutorials/liquid-templates.adoc +806 -0
  61. data/docs/_tutorials/parsing-your-first-schema.adoc +522 -0
  62. data/docs/_tutorials/querying-schemas.adoc +751 -0
  63. data/docs/_tutorials/working-with-multiple-schemas.adoc +676 -0
  64. data/docs/index.adoc +242 -0
  65. data/docs/lychee.toml +87 -0
  66. data/examples/demo_ler_usage.sh +86 -0
  67. data/examples/ler/README.md +111 -0
  68. data/examples/ler/simple_example.ler +0 -0
  69. data/examples/ler/simple_schema.exp +33 -0
  70. data/examples/ler_build.rb +75 -0
  71. data/examples/ler_cli.rb +79 -0
  72. data/examples/ler_demo_complete.rb +276 -0
  73. data/examples/ler_query.rb +91 -0
  74. data/examples/ler_query_examples.rb +305 -0
  75. data/examples/ler_stats.rb +81 -0
  76. data/examples/phase3_demo.rb +159 -0
  77. data/examples/query_demo_simple.rb +131 -0
  78. data/expressir.gemspec +4 -2
  79. data/lib/expressir/benchmark.rb +6 -6
  80. data/lib/expressir/cli.rb +21 -4
  81. data/lib/expressir/commands/format.rb +28 -0
  82. data/lib/expressir/commands/manifest.rb +427 -0
  83. data/lib/expressir/commands/package.rb +1274 -0
  84. data/lib/expressir/commands/validate.rb +70 -37
  85. data/lib/expressir/commands/validate_ascii.rb +607 -0
  86. data/lib/expressir/commands/validate_load.rb +88 -0
  87. data/lib/expressir/coverage.rb +15 -11
  88. data/lib/expressir/express/builder.rb +350 -0
  89. data/lib/expressir/express/builders/attribute_decl_builder.rb +38 -0
  90. data/lib/expressir/express/builders/built_in_builder.rb +88 -0
  91. data/lib/expressir/express/builders/constant_builder.rb +115 -0
  92. data/lib/expressir/express/builders/declaration_builder.rb +24 -0
  93. data/lib/expressir/express/builders/derive_clause_builder.rb +16 -0
  94. data/lib/expressir/express/builders/derived_attr_builder.rb +28 -0
  95. data/lib/expressir/express/builders/domain_rule_builder.rb +21 -0
  96. data/lib/expressir/express/builders/entity_decl_builder.rb +108 -0
  97. data/lib/expressir/express/builders/explicit_attr_builder.rb +52 -0
  98. data/lib/expressir/express/builders/expression_builder.rb +453 -0
  99. data/lib/expressir/express/builders/function_decl_builder.rb +84 -0
  100. data/lib/expressir/express/builders/helpers.rb +148 -0
  101. data/lib/expressir/express/builders/interface_builder.rb +171 -0
  102. data/lib/expressir/express/builders/inverse_attr_builder.rb +45 -0
  103. data/lib/expressir/express/builders/inverse_attr_type_builder.rb +36 -0
  104. data/lib/expressir/express/builders/inverse_clause_builder.rb +16 -0
  105. data/lib/expressir/express/builders/literal_builder.rb +107 -0
  106. data/lib/expressir/express/builders/procedure_decl_builder.rb +80 -0
  107. data/lib/expressir/express/builders/qualifier_builder.rb +128 -0
  108. data/lib/expressir/express/builders/reference_builder.rb +27 -0
  109. data/lib/expressir/express/builders/rule_decl_builder.rb +95 -0
  110. data/lib/expressir/express/builders/schema_body_decl_builder.rb +22 -0
  111. data/lib/expressir/express/builders/schema_decl_builder.rb +62 -0
  112. data/lib/expressir/express/builders/schema_version_builder.rb +40 -0
  113. data/lib/expressir/express/builders/simple_id_builder.rb +26 -0
  114. data/lib/expressir/express/builders/statement_builder.rb +250 -0
  115. data/lib/expressir/express/builders/subtype_constraint_builder.rb +188 -0
  116. data/lib/expressir/express/builders/syntax_builder.rb +19 -0
  117. data/lib/expressir/express/builders/token_builder.rb +15 -0
  118. data/lib/expressir/express/builders/type_builder.rb +264 -0
  119. data/lib/expressir/express/builders/type_decl_builder.rb +32 -0
  120. data/lib/expressir/express/builders/unique_clause_builder.rb +22 -0
  121. data/lib/expressir/express/builders/unique_rule_builder.rb +36 -0
  122. data/lib/expressir/express/builders/where_clause_builder.rb +22 -0
  123. data/lib/expressir/express/builders.rb +43 -0
  124. data/lib/expressir/express/error.rb +18 -2
  125. data/lib/expressir/express/formatter.rb +23 -1509
  126. data/lib/expressir/express/formatters/data_types_formatter.rb +317 -0
  127. data/lib/expressir/express/formatters/declarations_formatter.rb +689 -0
  128. data/lib/expressir/express/formatters/expressions_formatter.rb +160 -0
  129. data/lib/expressir/express/formatters/literals_formatter.rb +46 -0
  130. data/lib/expressir/express/formatters/references_formatter.rb +42 -0
  131. data/lib/expressir/express/formatters/remark_formatter.rb +296 -0
  132. data/lib/expressir/express/formatters/remark_item_formatter.rb +25 -0
  133. data/lib/expressir/express/formatters/statements_formatter.rb +224 -0
  134. data/lib/expressir/express/formatters/supertype_expressions_formatter.rb +48 -0
  135. data/lib/expressir/express/parser.rb +155 -7
  136. data/lib/expressir/express/pretty_formatter.rb +624 -0
  137. data/lib/expressir/express/remark_attacher.rb +1155 -0
  138. data/lib/expressir/express/resolve_references_model_visitor.rb +1 -0
  139. data/lib/expressir/express/streaming_builder.rb +467 -0
  140. data/lib/expressir/express/transformer/remark_handling.rb +196 -0
  141. data/lib/expressir/manifest/resolver.rb +213 -0
  142. data/lib/expressir/manifest/validator.rb +195 -0
  143. data/lib/expressir/model/declarations/entity.rb +6 -0
  144. data/lib/expressir/model/dependency_resolver.rb +270 -0
  145. data/lib/expressir/model/identifier.rb +1 -1
  146. data/lib/expressir/model/indexes/entity_index.rb +103 -0
  147. data/lib/expressir/model/indexes/reference_index.rb +148 -0
  148. data/lib/expressir/model/indexes/type_index.rb +149 -0
  149. data/lib/expressir/model/interface_validator.rb +384 -0
  150. data/lib/expressir/model/model_element.rb +30 -2
  151. data/lib/expressir/model/remark_info.rb +51 -0
  152. data/lib/expressir/model/repository.rb +400 -5
  153. data/lib/expressir/model/repository_validator.rb +295 -0
  154. data/lib/expressir/model/search_engine.rb +574 -0
  155. data/lib/expressir/model.rb +4 -94
  156. data/lib/expressir/package/builder.rb +200 -0
  157. data/lib/expressir/package/metadata.rb +81 -0
  158. data/lib/expressir/package/reader.rb +165 -0
  159. data/lib/expressir/schema_manifest.rb +11 -1
  160. data/lib/expressir/version.rb +1 -1
  161. data/lib/expressir.rb +20 -3
  162. metadata +168 -9
  163. data/docs/benchmarking.adoc +0 -107
  164. data/docs/liquid_drops.adoc +0 -1547
  165. data/lib/expressir/express/visitor.rb +0 -2815
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8b14a8f31cc94d89bc7229adf4ceb23a0180bc9bdf36e01024b7f1b27b638a9f
4
- data.tar.gz: 249f65e92a803eac2a10a9c0717104e4e194d19b7fe30374f733e48b8807ab01
3
+ metadata.gz: 50f641491331a6faa4d3d4f1e85ad279e97b3aeb98bedb93d323feff1cb8ac51
4
+ data.tar.gz: 1fd6c283f17387d978a8af4b425fcbef8cbb90e6515d8c56a8841a70310317dc
5
5
  SHA512:
6
- metadata.gz: 7dbf61a6903ef0317b98fcbfd3b5056258b263001e81cf9150aa52a3712e7b040e2289fb8b779d1843428617f5b29002de4deb79775aa0e28182488d14ca8f2f
7
- data.tar.gz: c1c6057d4618d4caf1c6af8ad39cf3c165e3ecbebc6894ffc98b47c777ec19b3a0c6c91798fcb055be3a8cc6d1e46bc69e128de87db1a512f9069d6281e3c19f
6
+ metadata.gz: 95330409badd0fd0991db258eca184f0e4e2c08c53bd6356f01b7cedbd6a8500972509bc235c896d3ca5e25329251c492dbea5b13138a20c85beeb29ad607bee
7
+ data.tar.gz: b009c202b816d473e80ffc326ff3f0ca9d4841a754313f8332dc8dde8fcc8add7f0025af9a3ad1ed1009e3cf32da4b3c1bcbbfd76298a0e6e25236af21c52307
@@ -0,0 +1,99 @@
1
+ name: Deploy Documentation
2
+
3
+ on:
4
+ push:
5
+ branches: [main, master]
6
+ paths:
7
+ - 'docs/**'
8
+ - '.github/workflows/docs.yml'
9
+ pull_request:
10
+ branches: [main, master]
11
+ paths:
12
+ - 'docs/**'
13
+ workflow_dispatch:
14
+
15
+ # Allow only one concurrent deployment
16
+ concurrency:
17
+ group: "pages"
18
+ cancel-in-progress: true
19
+
20
+ jobs:
21
+ build:
22
+ runs-on: ubuntu-latest
23
+
24
+ steps:
25
+ - name: Checkout repository
26
+ uses: actions/checkout@v4
27
+
28
+ - name: Setup Ruby
29
+ uses: ruby/setup-ruby@v1
30
+ with:
31
+ ruby-version: '3.2'
32
+ bundler-cache: false
33
+ working-directory: docs
34
+
35
+ - name: Cache gems
36
+ uses: actions/cache@v4
37
+ with:
38
+ path: docs/vendor/bundle
39
+ key: ${{ runner.os }}-gems-${{ hashFiles('docs/Gemfile.lock') }}
40
+ restore-keys: |
41
+ ${{ runner.os }}-gems-
42
+
43
+ - name: Install dependencies
44
+ working-directory: docs
45
+ run: |
46
+ bundle config path vendor/bundle
47
+ bundle install --jobs 4 --retry 3
48
+
49
+ - name: Build Jekyll site
50
+ working-directory: docs
51
+ run: bundle exec jekyll build --trace
52
+ env:
53
+ JEKYLL_ENV: production
54
+
55
+ - name: Test built site
56
+ working-directory: docs
57
+ run: |
58
+ if [ ! -f "_site/index.html" ]; then
59
+ echo "Error: index.html not found in _site/"
60
+ exit 1
61
+ fi
62
+ echo "Site built successfully"
63
+ echo "Site contains $(find _site -type f | wc -l) files"
64
+
65
+ - name: Upload artifact
66
+ uses: actions/upload-pages-artifact@v3
67
+ with:
68
+ path: docs/_site
69
+
70
+ deploy:
71
+ # Only deploy on push to main/master, not on PRs
72
+ if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master')
73
+
74
+ needs: build
75
+
76
+ permissions:
77
+ pages: write
78
+ id-token: write
79
+ contents: write
80
+
81
+ environment:
82
+ name: github-pages
83
+ url: ${{ steps.deployment.outputs.page_url }}
84
+
85
+ runs-on: ubuntu-latest
86
+
87
+ steps:
88
+ - name: Deploy to GitHub Pages
89
+ id: deployment
90
+ uses: actions/deploy-pages@v4
91
+
92
+ - name: Comment on commit
93
+ if: success()
94
+ uses: peter-evans/commit-comment@v3
95
+ with:
96
+ body: |
97
+ :white_check_mark: Documentation deployed successfully!
98
+
99
+ View at: ${{ steps.deployment.outputs.page_url }}
@@ -0,0 +1,100 @@
1
+ name: Check Links
2
+
3
+ on:
4
+ push:
5
+ branches: [main, master]
6
+ paths:
7
+ - 'docs/**'
8
+ - '.github/workflows/links.yml'
9
+ - 'lychee.toml'
10
+ pull_request:
11
+ branches: [main, master]
12
+ paths:
13
+ - 'docs/**'
14
+ schedule:
15
+ # Run weekly on Monday at 9:00 UTC
16
+ - cron: '0 9 * * 1'
17
+ workflow_dispatch:
18
+
19
+ jobs:
20
+ link-check:
21
+ runs-on: ubuntu-latest
22
+
23
+ steps:
24
+ - name: Checkout repository
25
+ uses: actions/checkout@v4
26
+
27
+ - name: Setup Ruby
28
+ uses: ruby/setup-ruby@v1
29
+ with:
30
+ ruby-version: '3.2'
31
+ bundler-cache: false
32
+ working-directory: docs
33
+
34
+ - name: Cache gems
35
+ uses: actions/cache@v4
36
+ with:
37
+ path: docs/vendor/bundle
38
+ key: ${{ runner.os }}-gems-${{ hashFiles('docs/Gemfile.lock') }}
39
+ restore-keys: |
40
+ ${{ runner.os }}-gems-
41
+
42
+ - name: Install dependencies
43
+ working-directory: docs
44
+ run: |
45
+ bundle config path vendor/bundle
46
+ bundle install --jobs 4 --retry 3
47
+
48
+ - name: Build Jekyll site
49
+ working-directory: docs
50
+ run: bundle exec jekyll build --trace
51
+ env:
52
+ JEKYLL_ENV: production
53
+
54
+ - name: Check links with lychee
55
+ uses: lycheeverse/lychee-action@v1
56
+ with:
57
+ args: |
58
+ --config docs/lychee.toml
59
+ --verbose
60
+ --no-progress
61
+ --format markdown
62
+ 'docs/_site/**/*.html'
63
+ fail: true
64
+ output: link-check-report.md
65
+
66
+ - name: Upload link check report
67
+ if: always()
68
+ uses: actions/upload-artifact@v4
69
+ with:
70
+ name: link-check-report
71
+ path: link-check-report.md
72
+ retention-days: 30
73
+
74
+ - name: Comment on PR with results
75
+ if: failure() && github.event_name == 'pull_request'
76
+ uses: marocchino/sticky-pull-request-comment@v2
77
+ with:
78
+ header: link-check
79
+ path: link-check-report.md
80
+
81
+ - name: Create issue for broken links
82
+ if: failure() && github.event_name == 'schedule'
83
+ uses: peter-evans/create-issue-from-file@v5
84
+ with:
85
+ title: Broken links detected in documentation
86
+ content-filepath: link-check-report.md
87
+ labels: |
88
+ documentation
89
+ bug
90
+ automated
91
+
92
+ - name: Summary
93
+ if: always()
94
+ run: |
95
+ echo "## Link Check Results" >> $GITHUB_STEP_SUMMARY
96
+ if [ -f "link-check-report.md" ]; then
97
+ cat link-check-report.md >> $GITHUB_STEP_SUMMARY
98
+ else
99
+ echo "No broken links found! :white_check_mark:" >> $GITHUB_STEP_SUMMARY
100
+ fi
@@ -2,6 +2,10 @@
2
2
  # See https://github.com/metanorma/cimas
3
3
  name: rake
4
4
 
5
+ permissions:
6
+ contents: read
7
+ pull-requests: write
8
+
5
9
  on:
6
10
  push:
7
11
  branches: [ master, main ]
@@ -1,5 +1,11 @@
1
1
  name: release
2
2
 
3
+ permissions:
4
+ contents: write
5
+ packages: write
6
+ pull-requests: write
7
+ id-token: write
8
+
3
9
  on:
4
10
  workflow_dispatch:
5
11
  inputs:
@@ -15,6 +21,11 @@ on:
15
21
  jobs:
16
22
  release:
17
23
  uses: metanorma/ci/.github/workflows/rubygems-release.yml@main
24
+ permissions:
25
+ id-token: write
26
+ contents: write
27
+ packages: write
28
+ pull-requests: write
18
29
  with:
19
30
  next_version: ${{ github.event.inputs.next_version }}
20
31
  release_command: rake release
@@ -44,5 +44,5 @@ jobs:
44
44
 
45
45
  - name: Validate schemas ${{ matrix.test-group }}
46
46
  run: |
47
- yq '.schemas[].path | sub("schemas", "iso-10303/schemas")' ${{ matrix.test-group }} | xargs bundle exec ./exe/expressir validate
47
+ yq '.schemas[].path | sub("schemas", "iso-10303/schemas")' ${{ matrix.test-group }} | xargs bundle exec ./exe/expressir validate load
48
48
 
data/.gitignore CHANGED
@@ -21,3 +21,6 @@
21
21
 
22
22
  # rubocop guide
23
23
  .rubocop-https---*
24
+ _site/
25
+
26
+ Gemfile.lock
data/.rubocop.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  inherit_from:
2
- - https://raw.githubusercontent.com/riboseinc/oss-guides/master/ci/rubocop.yml
2
+ - https://raw.githubusercontent.com/riboseinc/oss-guides/main/ci/rubocop.yml
3
3
  - .rubocop_todo.yml
4
4
 
5
5
  plugins:
data/.rubocop_todo.yml CHANGED
@@ -1,23 +1,64 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2025-10-16 03:45:37 UTC using RuboCop version 1.81.1.
3
+ # on 2026-03-05 05:14:10 UTC using RuboCop version 1.85.0.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
7
7
  # versions of RuboCop, may require this file to be generated again.
8
8
 
9
- # Offense count: 562
9
+ # Offense count: 1
10
+ Gemspec/RequiredRubyVersion:
11
+ Exclude:
12
+ - 'expressir.gemspec'
13
+
14
+ # Offense count: 1
15
+ # This cop supports safe autocorrection (--autocorrect).
16
+ # Configuration parameters: AllowForAlignment, AllowBeforeTrailingComments, ForceEqualSignAlignment.
17
+ Layout/ExtraSpacing:
18
+ Exclude:
19
+ - 'lib/expressir/benchmark.rb'
20
+
21
+ # Offense count: 993
10
22
  # This cop supports safe autocorrection (--autocorrect).
11
- # Configuration parameters: Max, AllowHeredoc, AllowURI, AllowQualifiedName, URISchemes, IgnoreCopDirectives, AllowedPatterns, SplitStrings.
23
+ # Configuration parameters: Max, AllowHeredoc, AllowURI, AllowQualifiedName, URISchemes, AllowRBSInlineAnnotation, AllowCopDirectives, AllowedPatterns, SplitStrings.
12
24
  # URISchemes: http, https
13
25
  Layout/LineLength:
14
26
  Enabled: false
15
27
 
16
- # Offense count: 1
28
+ # Offense count: 8
17
29
  # Configuration parameters: IgnoreLiteralBranches, IgnoreConstantBranches, IgnoreDuplicateElseBranch.
18
30
  Lint/DuplicateBranch:
19
31
  Exclude:
32
+ - 'lib/expressir/commands/package.rb'
20
33
  - 'lib/expressir/coverage.rb'
34
+ - 'lib/expressir/express/builder.rb'
35
+ - 'lib/expressir/express/formatters/declarations_formatter.rb'
36
+ - 'lib/expressir/express/remark_attacher.rb'
37
+ - 'lib/expressir/model/search_engine.rb'
38
+
39
+ # Offense count: 2
40
+ Lint/DuplicateCaseCondition:
41
+ Exclude:
42
+ - 'lib/expressir/commands/package.rb'
43
+ - 'lib/expressir/express/formatter.rb'
44
+
45
+ # Offense count: 1
46
+ Lint/DuplicateMethods:
47
+ Exclude:
48
+ - 'lib/expressir/commands/validate_ascii.rb'
49
+
50
+ # Offense count: 1
51
+ # This cop supports safe autocorrection (--autocorrect).
52
+ Lint/ScriptPermission:
53
+ Exclude:
54
+ - 'regenerate_yaml.rb'
55
+
56
+ # Offense count: 2
57
+ # Configuration parameters: AllowedPatterns.
58
+ # AllowedPatterns: (?-mix:(exactly|at_least|at_most)\(\d+\)\.times)
59
+ Lint/UnreachableLoop:
60
+ Exclude:
61
+ - 'lib/expressir/model/dependency_resolver.rb'
21
62
 
22
63
  # Offense count: 2
23
64
  # This cop supports safe autocorrection (--autocorrect).
@@ -28,66 +69,79 @@ Lint/UnusedMethodArgument:
28
69
  - 'lib/expressir/express/cache.rb'
29
70
  - 'lib/expressir/express/parser.rb'
30
71
 
31
- # Offense count: 84
72
+ # Offense count: 227
32
73
  # Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes, Max.
33
74
  Metrics/AbcSize:
34
75
  Enabled: false
35
76
 
36
- # Offense count: 1
77
+ # Offense count: 8
37
78
  # Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns, inherit_mode.
38
79
  # AllowedMethods: refine
39
80
  Metrics/BlockLength:
40
- Max: 46
81
+ Max: 98
41
82
 
42
- # Offense count: 61
83
+ # Offense count: 11
84
+ # Configuration parameters: CountBlocks, CountModifierForms.
85
+ Metrics/BlockNesting:
86
+ Max: 6
87
+
88
+ # Offense count: 189
43
89
  # Configuration parameters: AllowedMethods, AllowedPatterns, Max.
44
90
  Metrics/CyclomaticComplexity:
45
- Exclude:
46
- - 'lib/expressir/benchmark.rb'
47
- - 'lib/expressir/changes/schema_change.rb'
48
- - 'lib/expressir/commands/changes_import_eengine.rb'
49
- - 'lib/expressir/commands/changes_validate.rb'
50
- - 'lib/expressir/commands/coverage.rb'
51
- - 'lib/expressir/coverage.rb'
52
- - 'lib/expressir/express/formatter.rb'
53
- - 'lib/expressir/express/model_visitor.rb'
54
- - 'lib/expressir/express/parser.rb'
55
- - 'lib/expressir/express/visitor.rb'
56
- - 'lib/expressir/model/declarations/schema.rb'
57
- - 'lib/expressir/model/model_element.rb'
58
- - 'spec/support/model_element_helper.rb'
91
+ Enabled: false
59
92
 
60
- # Offense count: 114
93
+ # Offense count: 276
61
94
  # Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns.
62
95
  Metrics/MethodLength:
63
- Max: 106
96
+ Max: 193
64
97
 
65
- # Offense count: 48
98
+ # Offense count: 6
99
+ # Configuration parameters: CountKeywordArgs, MaxOptionalParameters.
100
+ Metrics/ParameterLists:
101
+ Max: 8
102
+
103
+ # Offense count: 162
66
104
  # Configuration parameters: AllowedMethods, AllowedPatterns, Max.
67
105
  Metrics/PerceivedComplexity:
106
+ Enabled: false
107
+
108
+ # Offense count: 4
109
+ # Configuration parameters: MinNameLength, AllowNamesEndingInNumbers, AllowedNames, ForbiddenNames.
110
+ # AllowedNames: as, at, by, cc, db, id, if, in, io, ip, of, on, os, pp, to
111
+ Naming/MethodParameterName:
68
112
  Exclude:
69
- - 'lib/expressir/benchmark.rb'
70
- - 'lib/expressir/changes/schema_change.rb'
71
- - 'lib/expressir/commands/changes_import_eengine.rb'
72
- - 'lib/expressir/commands/changes_validate.rb'
73
- - 'lib/expressir/commands/coverage.rb'
74
- - 'lib/expressir/coverage.rb'
75
- - 'lib/expressir/express/formatter.rb'
76
- - 'lib/expressir/express/visitor.rb'
77
- - 'lib/expressir/model/declarations/schema.rb'
78
- - 'lib/expressir/model/model_element.rb'
113
+ - 'lib/expressir/model/repository_validator.rb'
79
114
 
80
- # Offense count: 135
81
- # Configuration parameters: EnforcedStyle, AllowedIdentifiers, AllowedPatterns, ForbiddenIdentifiers, ForbiddenPatterns.
82
- # SupportedStyles: snake_case, camelCase
83
- Naming/VariableName:
115
+ # Offense count: 3
116
+ # Configuration parameters: Mode, AllowedMethods, AllowedPatterns, AllowBangMethods, WaywardPredicates.
117
+ # AllowedMethods: call
118
+ # WaywardPredicates: infinite?, nonzero?
119
+ Naming/PredicateMethod:
84
120
  Exclude:
85
- - 'lib/expressir/express/visitor.rb'
121
+ - 'lib/expressir/model/indexes/reference_index.rb'
122
+ - 'lib/expressir/model/search_engine.rb'
123
+
124
+ # Offense count: 11
125
+ # Configuration parameters: EnforcedStyle, CheckMethodNames, CheckSymbols, AllowedIdentifiers, AllowedPatterns.
126
+ # SupportedStyles: snake_case, normalcase, non_integer
127
+ # AllowedIdentifiers: TLS1_1, TLS1_2, capture3, iso8601, rfc1123_date, rfc822, rfc2822, rfc3339, x86_64
128
+ Naming/VariableNumber:
129
+ Exclude:
130
+ - 'lib/expressir/commands/validate_ascii.rb'
131
+ - 'spec/expressir/commands/validate_ascii_spec.rb'
132
+ - 'spec/expressir/express/pretty_formatter_spec.rb'
133
+
134
+ # Offense count: 2
135
+ # Configuration parameters: MinSize.
136
+ Performance/CollectionLiteralInLoop:
137
+ Exclude:
138
+ - 'lib/expressir/express/streaming_builder.rb'
86
139
 
87
140
  # Offense count: 5
88
141
  Performance/FixedSize:
89
142
  Exclude:
90
- - 'lib/expressir/express/formatter.rb'
143
+ - 'lib/expressir/express/formatters/data_types_formatter.rb'
144
+ - 'lib/expressir/express/formatters/declarations_formatter.rb'
91
145
 
92
146
  # Offense count: 6
93
147
  Performance/MapMethodChain:
@@ -96,12 +150,48 @@ Performance/MapMethodChain:
96
150
  - 'spec/expressir/commands/coverage_ignore_files_spec.rb'
97
151
  - 'spec/expressir/coverage_spec.rb'
98
152
 
99
- # Offense count: 126
153
+ # Offense count: 1
154
+ RSpec/AnyInstance:
155
+ Exclude:
156
+ - 'spec/expressir/commands/package_edge_cases_spec.rb'
157
+
158
+ # Offense count: 11
159
+ # Configuration parameters: Prefixes, AllowedPatterns.
160
+ # Prefixes: when, with, without
161
+ RSpec/ContextWording:
162
+ Exclude:
163
+ - 'spec/expressir/commands/manifest_spec.rb'
164
+ - 'spec/expressir/commands/package_nil_guards_spec.rb'
165
+ - 'spec/expressir/commands/validate_ascii_spec.rb'
166
+ - 'spec/expressir/model/repository_spec.rb'
167
+
168
+ # Offense count: 1
169
+ # Configuration parameters: IgnoredMetadata.
170
+ RSpec/DescribeClass:
171
+ Exclude:
172
+ - '**/spec/features/**/*'
173
+ - '**/spec/requests/**/*'
174
+ - '**/spec/routing/**/*'
175
+ - '**/spec/system/**/*'
176
+ - '**/spec/views/**/*'
177
+ - 'spec/expressir/integration/package_roundtrip_spec.rb'
178
+
179
+ # Offense count: 6
180
+ RSpec/DescribeMethod:
181
+ Exclude:
182
+ - 'spec/expressir/commands/package_edge_cases_spec.rb'
183
+ - 'spec/expressir/commands/package_fixtures_spec.rb'
184
+ - 'spec/expressir/commands/package_nil_guards_spec.rb'
185
+ - 'spec/expressir/commands/package_nil_scenarios_spec.rb'
186
+ - 'spec/expressir/model/repository_statistics_spec.rb'
187
+ - 'spec/expressir/model/search_engine_advanced_spec.rb'
188
+
189
+ # Offense count: 465
100
190
  # Configuration parameters: CountAsOne.
101
191
  RSpec/ExampleLength:
102
192
  Max: 123
103
193
 
104
- # Offense count: 14
194
+ # Offense count: 51
105
195
  # Configuration parameters: Max, AllowedIdentifiers, AllowedPatterns.
106
196
  RSpec/IndexedLet:
107
197
  Exclude:
@@ -111,27 +201,106 @@ RSpec/IndexedLet:
111
201
  - 'spec/expressir/model/data_types/real_spec.rb'
112
202
  - 'spec/expressir/model/data_types/set_spec.rb'
113
203
  - 'spec/expressir/model/data_types/string_spec.rb'
204
+ - 'spec/expressir/model/indexes/entity_index_spec.rb'
205
+ - 'spec/expressir/model/indexes/reference_index_spec.rb'
206
+ - 'spec/expressir/model/indexes/type_index_spec.rb'
207
+ - 'spec/expressir/model/repository_spec.rb'
208
+ - 'spec/expressir/model/repository_statistics_spec.rb'
209
+ - 'spec/expressir/model/repository_validator_spec.rb'
210
+ - 'spec/expressir/model/search_engine_advanced_spec.rb'
211
+
212
+ # Offense count: 1
213
+ # Configuration parameters: AssignmentOnly.
214
+ RSpec/InstanceVariable:
215
+ Exclude:
216
+ - 'spec/expressir/model/interface_validator_spec.rb'
217
+
218
+ # Offense count: 1
219
+ # This cop supports safe autocorrection (--autocorrect).
220
+ RSpec/IteratedExpectation:
221
+ Exclude:
222
+ - 'spec/expressir/model/search_engine_advanced_spec.rb'
114
223
 
115
- # Offense count: 257
224
+ # Offense count: 2
225
+ # Configuration parameters: EnforcedStyle.
226
+ # SupportedStyles: have_received, receive
227
+ RSpec/MessageSpies:
228
+ Exclude:
229
+ - 'spec/expressir/model/repository_validator_spec.rb'
230
+ - 'spec/expressir/model/search_engine_spec.rb'
231
+
232
+ # Offense count: 580
116
233
  RSpec/MultipleExpectations:
117
234
  Max: 114
118
235
 
119
- # Offense count: 21
236
+ # Offense count: 117
120
237
  # Configuration parameters: AllowSubject.
121
238
  RSpec/MultipleMemoizedHelpers:
122
- Max: 13
239
+ Max: 19
123
240
 
124
241
  # Offense count: 5
125
- RSpec/PendingWithoutReason:
242
+ # Configuration parameters: AllowedGroups.
243
+ RSpec/NestedGroups:
244
+ Max: 4
245
+
246
+ # Offense count: 35
247
+ # This cop supports unsafe autocorrection (--autocorrect-all).
248
+ RSpec/Output:
126
249
  Exclude:
127
- - 'spec/expressir/model/declarations/remark_item_spec.rb'
128
- - 'spec/expressir/model/declarations/rule_spec.rb'
129
- - 'spec/expressir/model/declarations/schema_spec.rb'
250
+ - 'spec/acceptance/version_spec.rb'
251
+ - 'spec/expressir/express/cache_spec.rb'
252
+ - 'spec/expressir/express/formatter_spec.rb'
253
+ - 'spec/expressir/express/parser_spec.rb'
254
+ - 'spec/expressir/model/model_element_spec.rb'
255
+ - 'spec/spec_helper.rb'
130
256
 
131
- # Offense count: 2
257
+ # Offense count: 28
258
+ # This cop supports unsafe autocorrection (--autocorrect-all).
259
+ RSpec/ReceiveMessages:
260
+ Exclude:
261
+ - 'spec/expressir/model/search_engine_advanced_spec.rb'
262
+
263
+ # Offense count: 1
264
+ RSpec/RemoveConst:
265
+ Exclude:
266
+ - 'spec/expressir/commands/package_nil_scenarios_spec.rb'
267
+
268
+ # Offense count: 20
132
269
  RSpec/RepeatedExample:
133
270
  Exclude:
271
+ - 'spec/expressir/commands/package_fixtures_spec.rb'
134
272
  - 'spec/expressir/model/data_types/logical_spec.rb'
273
+ - 'spec/expressir/model/indexes/entity_index_spec.rb'
274
+ - 'spec/expressir/model/indexes/type_index_spec.rb'
275
+ - 'spec/expressir/model/interface_validator_spec.rb'
276
+
277
+ # Offense count: 7
278
+ # Configuration parameters: CustomTransform, IgnoreMethods, IgnoreMetadata, InflectorPath, EnforcedInflector.
279
+ # SupportedInflectors: default, active_support
280
+ RSpec/SpecFilePathFormat:
281
+ Exclude:
282
+ - '**/spec/routing/**/*'
283
+ - 'spec/expressir/commands/package_edge_cases_spec.rb'
284
+ - 'spec/expressir/commands/package_fixtures_spec.rb'
285
+ - 'spec/expressir/commands/package_nil_guards_spec.rb'
286
+ - 'spec/expressir/commands/package_nil_scenarios_spec.rb'
287
+ - 'spec/expressir/express/visitor/remark_attacher_spec.rb'
288
+ - 'spec/expressir/model/repository_statistics_spec.rb'
289
+ - 'spec/expressir/model/search_engine_advanced_spec.rb'
290
+
291
+ # Offense count: 48
292
+ # Configuration parameters: IgnoreNameless, IgnoreSymbolicNames.
293
+ RSpec/VerifiedDoubles:
294
+ Exclude:
295
+ - 'spec/expressir/commands/package_nil_guards_spec.rb'
296
+ - 'spec/expressir/commands/package_nil_scenarios_spec.rb'
297
+ - 'spec/expressir/express/pretty_formatter_spec.rb'
298
+ - 'spec/expressir/model/search_engine_advanced_spec.rb'
299
+
300
+ # Offense count: 4
301
+ Security/MarshalLoad:
302
+ Exclude:
303
+ - 'lib/expressir/package/reader.rb'
135
304
 
136
305
  # Offense count: 1
137
306
  # This cop supports safe autocorrection (--autocorrect).
@@ -141,7 +310,52 @@ Style/EmptyElse:
141
310
  Exclude:
142
311
  - 'lib/expressir/commands/changes_validate.rb'
143
312
 
313
+ # Offense count: 4
314
+ # This cop supports safe autocorrection (--autocorrect).
315
+ # Configuration parameters: MaxUnannotatedPlaceholdersAllowed, Mode, AllowedMethods, AllowedPatterns.
316
+ # SupportedStyles: annotated, template, unannotated
317
+ Style/FormatStringToken:
318
+ EnforcedStyle: unannotated
319
+
320
+ # Offense count: 1
321
+ # Configuration parameters: MinBranchesCount.
322
+ Style/HashLikeCase:
323
+ Exclude:
324
+ - 'lib/expressir/express/remark_attacher.rb'
325
+
326
+ # Offense count: 1
327
+ Style/OpenStructUse:
328
+ Exclude:
329
+ - 'spec/expressir/commands/package_tree_spec.rb'
330
+
331
+ # Offense count: 2
332
+ # This cop supports unsafe autocorrection (--autocorrect-all).
333
+ Style/PartitionInsteadOfDoubleSelect:
334
+ Exclude:
335
+ - 'lib/expressir/express/transformer/remark_handling.rb'
336
+ - 'spec/expressir/model/search_engine_advanced_spec.rb'
337
+
338
+ # Offense count: 2
339
+ # This cop supports safe autocorrection (--autocorrect).
340
+ Style/RedundantParentheses:
341
+ Exclude:
342
+ - 'lib/expressir/express/parser.rb'
343
+
344
+ # Offense count: 33
345
+ # This cop supports unsafe autocorrection (--autocorrect-all).
346
+ Style/SelectByKind:
347
+ Exclude:
348
+ - 'lib/expressir/express/builders/function_decl_builder.rb'
349
+ - 'lib/expressir/express/builders/procedure_decl_builder.rb'
350
+ - 'lib/expressir/express/builders/rule_decl_builder.rb'
351
+ - 'lib/expressir/express/builders/schema_decl_builder.rb'
352
+ - 'lib/expressir/model/search_engine.rb'
353
+ - 'spec/expressir/coverage_spec.rb'
354
+ - 'spec/expressir/model/declarations/schema_spec.rb'
355
+
144
356
  # Offense count: 1
145
- Style/MissingRespondToMissing:
357
+ # This cop supports safe autocorrection (--autocorrect).
358
+ # Configuration parameters: AllowModifier.
359
+ Style/SoleNestedConditional:
146
360
  Exclude:
147
- - 'lib/expressir/express/visitor.rb'
361
+ - 'lib/expressir/model/search_engine.rb'
data/Gemfile CHANGED
@@ -6,7 +6,8 @@ source "https://rubygems.org"
6
6
  gemspec
7
7
 
8
8
  gem "canon"
9
- gem "pry"
9
+ gem "lutaml-model", github: "lutaml/lutaml-model", branch: "main"
10
+ gem "openssl", "~> 3.0"
10
11
  gem "rake"
11
12
  gem "rspec"
12
13
  gem "rubocop"