expressir 2.4.35-arm-linux → 2.4.37-arm-linux

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/conformance.yml +34 -0
  3. data/.gitignore +3 -0
  4. data/Gemfile +1 -1
  5. data/TODO.sota/00-overview.md +57 -0
  6. data/TODO.sota/01-type-checking.md +115 -0
  7. data/TODO.sota/02-evaluator.md +86 -0
  8. data/TODO.sota/03-conformance.md +53 -0
  9. data/TODO.sota/04-lsp.md +70 -0
  10. data/TODO.sota/05-interop.md +55 -0
  11. data/TODO.sota/06-dialects.md +57 -0
  12. data/TODO.sota/07-reference-artifacts.md +55 -0
  13. data/docs/_guides/interop/index.adoc +25 -0
  14. data/docs/_guides/interop/json-schema.adoc +88 -0
  15. data/docs/_guides/interop/owl-rdf.adoc +87 -0
  16. data/docs/_guides/reference/checker-notes.adoc +55 -0
  17. data/docs/_guides/reference/checker.adoc +36 -0
  18. data/docs/_guides/reference/evaluator.adoc +40 -0
  19. data/docs/_guides/reference/grammar-crosswalk.adoc +299 -0
  20. data/docs/_guides/reference/index.adoc +22 -0
  21. data/docs/_guides/reference/lsp.adoc +41 -0
  22. data/docs/_guides/reference/p21.adoc +30 -0
  23. data/docs/_guides/reference/shtolo.adoc +36 -0
  24. data/exe/expressir-lsp +6 -0
  25. data/expressir.gemspec +2 -2
  26. data/lib/expressir/3.2/expressir_core.so +0 -0
  27. data/lib/expressir/3.3/expressir_core.so +0 -0
  28. data/lib/expressir/3.4/expressir_core.so +0 -0
  29. data/lib/expressir/4.0/expressir_core.so +0 -0
  30. data/lib/expressir/cli.rb +18 -0
  31. data/lib/expressir/commands/check.rb +3 -1
  32. data/lib/expressir/commands/export_json_schema.rb +29 -0
  33. data/lib/expressir/commands/export_owl.rb +26 -0
  34. data/lib/expressir/commands/validate.rb +3 -0
  35. data/lib/expressir/commands.rb +2 -0
  36. data/lib/expressir/conformance/trend.rb +100 -0
  37. data/lib/expressir/conformance.rb +8 -0
  38. data/lib/expressir/eval/environment.rb +83 -0
  39. data/lib/expressir/eval/expression.rb +610 -0
  40. data/lib/expressir/eval/interpreter.rb +316 -0
  41. data/lib/expressir/eval/rules.rb +88 -0
  42. data/lib/expressir/eval/values.rb +74 -0
  43. data/lib/expressir/eval.rb +17 -0
  44. data/lib/expressir/express/builders/expression_builder.rb +9 -1
  45. data/lib/expressir/express/checker.rb +779 -2
  46. data/lib/expressir/express/dialect.rb +44 -0
  47. data/lib/expressir/express/formatters/expressions_formatter.rb +4 -1
  48. data/lib/expressir/express/parser.rb +9 -4
  49. data/lib/expressir/express.rb +1 -0
  50. data/lib/expressir/interop/json_schema.rb +195 -0
  51. data/lib/expressir/interop/owl.rb +216 -0
  52. data/lib/expressir/interop.rb +13 -0
  53. data/lib/expressir/lsp/document.rb +226 -0
  54. data/lib/expressir/lsp/server.rb +184 -0
  55. data/lib/expressir/lsp/workspace.rb +402 -0
  56. data/lib/expressir/lsp.rb +11 -0
  57. data/lib/expressir/mapping/refpath.rb +65 -4
  58. data/lib/expressir/reference/grammar_crosswalk.rb +122 -0
  59. data/lib/expressir/reference/grammar_crosswalk.yml +800 -0
  60. data/lib/expressir/reference/note_catalog.rb +54 -0
  61. data/lib/expressir/reference.rb +10 -0
  62. data/lib/expressir/version.rb +1 -1
  63. data/lib/expressir.rb +4 -0
  64. data/lib/tasks/conformance.rake +27 -0
  65. data/lib/tasks/reference.rake +25 -0
  66. metadata +50 -4
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Expressir
4
+ module Reference
5
+ # Catalog of Checker note ids, generated from the checker source so
6
+ # the published guide cannot drift from the implementation.
7
+ class NoteCatalog
8
+ CHECKER_PATH = File.expand_path("../express/checker.rb", __dir__)
9
+ NOTE_CALL = /note!\(:([a-z0-9_]+)/
10
+
11
+ class << self
12
+ def checker_path
13
+ CHECKER_PATH
14
+ end
15
+
16
+ def entries
17
+ File.read(CHECKER_PATH).scan(NOTE_CALL).flatten.tally.sort.to_h
18
+ end
19
+
20
+ def ids
21
+ entries.keys
22
+ end
23
+
24
+ def render_adoc
25
+ lines = [
26
+ "= Checker note-id catalog",
27
+ "",
28
+ "// Generated from lib/expressir/express/checker.rb by",
29
+ "// `rake reference:notes`. Do not edit by hand; the reference",
30
+ "// spec fails when this file is stale.",
31
+ "",
32
+ "== Purpose",
33
+ "",
34
+ "Every note id the Checker can raise, with the number of call",
35
+ "sites in the implementation. New checks use `:check_*` ids;",
36
+ "the conformance-derived ids (`:check_expr_*`, `:check_dialect_*`)",
37
+ "cite their clause in the note message.",
38
+ "",
39
+ '[cols="3,1", options="header"]',
40
+ "|===",
41
+ "| Note id | Call sites",
42
+ "",
43
+ *entries.map { |id, count| "| `#{id}` | #{count}" },
44
+ "|===",
45
+ "",
46
+ "The catalog covers #{ids.size} note ids.",
47
+ "",
48
+ ]
49
+ lines.join("\n")
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Expressir
4
+ # Citable reference artifacts generated from the implementation:
5
+ # the grammar cross-walk and the checker note-id catalog.
6
+ module Reference
7
+ autoload :GrammarCrosswalk, "#{__dir__}/reference/grammar_crosswalk"
8
+ autoload :NoteCatalog, "#{__dir__}/reference/note_catalog"
9
+ end
10
+ end
@@ -3,6 +3,6 @@ module Expressir
3
3
  # autoload it (Ruby autoload only works for module/class constants, not
4
4
  # for string constants like `Expressir::VERSION`).
5
5
  module Version
6
- VERSION = "2.4.35".freeze
6
+ VERSION = "2.4.37".freeze
7
7
  end
8
8
  end
data/lib/expressir.rb CHANGED
@@ -31,6 +31,7 @@ module Expressir
31
31
  autoload :Version, "#{__dir__}/expressir/version"
32
32
  autoload :Mapping, "#{__dir__}/expressir/mapping"
33
33
  autoload :P21, "#{__dir__}/expressir/p21"
34
+ autoload :Reference, "#{__dir__}/expressir/reference"
34
35
 
35
36
  # Error classes — autoload the same errors.rb file from each name.
36
37
  # The first reference triggers the load; the file defines all 21 classes.
@@ -75,9 +76,12 @@ module Expressir
75
76
  autoload :Model, "#{__dir__}/expressir/model"
76
77
  autoload :Commands, "#{__dir__}/expressir/commands"
77
78
  autoload :Changes, "#{__dir__}/expressir/changes"
79
+ autoload :Conformance, "#{__dir__}/expressir/conformance"
78
80
  autoload :Package, "#{__dir__}/expressir/package"
79
81
  autoload :Manifest, "#{__dir__}/expressir/manifest"
80
82
  autoload :Eengine, "#{__dir__}/expressir/eengine"
83
+ autoload :Interop, "#{__dir__}/expressir/interop"
84
+ autoload :Lsp, "#{__dir__}/expressir/lsp"
81
85
  autoload :SchemaManifest, "#{__dir__}/expressir/schema_manifest"
82
86
  autoload :SchemaManifestEntry, "#{__dir__}/expressir/schema_manifest_entry"
83
87
 
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ desc "Property-based conformance harness over the full corpus " \
4
+ "(parse → format → parse idempotence)"
5
+ task :conformance do
6
+ ENV["EXPRESSIR_CONFORMANCE"] = "1"
7
+ sh "bundle exec rspec spec/expressir/express/formatter_roundtrip_conformance_spec.rb"
8
+ end
9
+
10
+ namespace :conformance do
11
+ desc "Measure parse, diagnostic and idempotence rates over the corpus " \
12
+ "and write a JSON trend artifact"
13
+ task :trend do
14
+ require "expressir"
15
+
16
+ stepmod = ENV["STEPMOD_DIR"] ||
17
+ File.expand_path("~/src/mn/iso-10303-stepmod")
18
+ corpus = File.join(stepmod, "data/resources")
19
+ files = Dir[File.join(corpus, "**/*.exp")]
20
+ .select { |file| File.size(file) < 250_000 }
21
+ output = ENV["CONFORMANCE_TREND_OUT"] || "conformance-trend.json"
22
+ report = Expressir::Conformance::Trend.run(files, output: output)
23
+ puts "wrote #{output} " \
24
+ "(parse #{report['parse_rate']}, idempotence " \
25
+ "#{report['idempotence_rate']}, diagnostics #{report['diagnostic_rate']})"
26
+ end
27
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ namespace :reference do
4
+ desc "Regenerate the grammar cross-walk guide"
5
+ task :crosswalk do
6
+ require "expressir"
7
+
8
+ path = Expressir.root_path.join(
9
+ "docs/_guides/reference/grammar-crosswalk.adoc",
10
+ )
11
+ File.write(path, Expressir::Reference::GrammarCrosswalk.render_adoc)
12
+ puts "wrote #{path}"
13
+ end
14
+
15
+ desc "Regenerate the checker note-id catalog"
16
+ task :notes do
17
+ require "expressir"
18
+
19
+ path = Expressir.root_path.join(
20
+ "docs/_guides/reference/checker-notes.adoc",
21
+ )
22
+ File.write(path, Expressir::Reference::NoteCatalog.render_adoc)
23
+ puts "wrote #{path}"
24
+ end
25
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: expressir
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.35
4
+ version: 2.4.37
5
5
  platform: arm-linux
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-10-16 00:00:00.000000000 Z
11
+ date: 2026-10-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: base64
@@ -86,14 +86,14 @@ dependencies:
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 0.8.76
89
+ version: 0.8.114
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 0.8.76
96
+ version: 0.8.114
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: moxml
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -232,12 +232,14 @@ email:
232
232
  - open.source@ribose.com
233
233
  executables:
234
234
  - expressir
235
+ - expressir-lsp
235
236
  extensions: []
236
237
  extra_rdoc_files: []
237
238
  files:
238
239
  - ".cargo/config.toml"
239
240
  - ".github/scripts/test_installed_gem.rb"
240
241
  - ".github/workflows/codeql.yml"
242
+ - ".github/workflows/conformance.yml"
241
243
  - ".github/workflows/docs.yml"
242
244
  - ".github/workflows/links.yml"
243
245
  - ".github/workflows/native-gems.yml"
@@ -333,6 +335,14 @@ files:
333
335
  - TODO.parity-ee/19-architecture.md
334
336
  - TODO.parity-ee/parity-matrix.md
335
337
  - TODO.refpath-v2/00-overview.md
338
+ - TODO.sota/00-overview.md
339
+ - TODO.sota/01-type-checking.md
340
+ - TODO.sota/02-evaluator.md
341
+ - TODO.sota/03-conformance.md
342
+ - TODO.sota/04-lsp.md
343
+ - TODO.sota/05-interop.md
344
+ - TODO.sota/06-dialects.md
345
+ - TODO.sota/07-reference-artifacts.md
336
346
  - TODO.suma-improvements/00-overview.md
337
347
  - TODO.suma-improvements/01-prebuilt-platform-gems.md
338
348
  - TODO.suma-improvements/02-suma-e2e.md
@@ -366,6 +376,9 @@ files:
366
376
  - docs/_guides/cli/validate-schemas.adoc
367
377
  - docs/_guides/formatter/formatter-architecture.adoc
368
378
  - docs/_guides/index.adoc
379
+ - docs/_guides/interop/index.adoc
380
+ - docs/_guides/interop/json-schema.adoc
381
+ - docs/_guides/interop/owl-rdf.adoc
369
382
  - docs/_guides/ler/creating-packages.adoc
370
383
  - docs/_guides/ler/index.adoc
371
384
  - docs/_guides/ler/loading-packages.adoc
@@ -382,6 +395,14 @@ files:
382
395
  - docs/_guides/manifests/index.adoc
383
396
  - docs/_guides/manifests/resolving-manifests.adoc
384
397
  - docs/_guides/manifests/validating-manifests.adoc
398
+ - docs/_guides/reference/checker-notes.adoc
399
+ - docs/_guides/reference/checker.adoc
400
+ - docs/_guides/reference/evaluator.adoc
401
+ - docs/_guides/reference/grammar-crosswalk.adoc
402
+ - docs/_guides/reference/index.adoc
403
+ - docs/_guides/reference/lsp.adoc
404
+ - docs/_guides/reference/p21.adoc
405
+ - docs/_guides/reference/shtolo.adoc
385
406
  - docs/_guides/ruby-api/formatting-schemas.adoc
386
407
  - docs/_guides/ruby-api/index.adoc
387
408
  - docs/_guides/ruby-api/parsing-files.adoc
@@ -421,6 +442,7 @@ files:
421
442
  - exe/expressir
422
443
  - exe/expressir-format
423
444
  - exe/expressir-format-test
445
+ - exe/expressir-lsp
424
446
  - expressir.gemspec
425
447
  - lib/expressir.rb
426
448
  - lib/expressir/3.2/expressir_core.so
@@ -445,6 +467,8 @@ files:
445
467
  - lib/expressir/commands/clean.rb
446
468
  - lib/expressir/commands/coverage.rb
447
469
  - lib/expressir/commands/expand.rb
470
+ - lib/expressir/commands/export_json_schema.rb
471
+ - lib/expressir/commands/export_owl.rb
448
472
  - lib/expressir/commands/file_violations.rb
449
473
  - lib/expressir/commands/fix.rb
450
474
  - lib/expressir/commands/flatten.rb
@@ -462,6 +486,8 @@ files:
462
486
  - lib/expressir/commands/version_command.rb
463
487
  - lib/expressir/commands/xsd.rb
464
488
  - lib/expressir/config.rb
489
+ - lib/expressir/conformance.rb
490
+ - lib/expressir/conformance/trend.rb
465
491
  - lib/expressir/coverage.rb
466
492
  - lib/expressir/eengine.rb
467
493
  - lib/expressir/eengine/arm_compare_report.rb
@@ -470,6 +496,12 @@ files:
470
496
  - lib/expressir/eengine/mim_compare_report.rb
471
497
  - lib/expressir/eengine/modified_object.rb
472
498
  - lib/expressir/errors.rb
499
+ - lib/expressir/eval.rb
500
+ - lib/expressir/eval/environment.rb
501
+ - lib/expressir/eval/expression.rb
502
+ - lib/expressir/eval/interpreter.rb
503
+ - lib/expressir/eval/rules.rb
504
+ - lib/expressir/eval/values.rb
473
505
  - lib/expressir/express.rb
474
506
  - lib/expressir/express/adoc_hyperlink_formatter.rb
475
507
  - lib/expressir/express/adoc_source_formatter.rb
@@ -515,6 +547,7 @@ files:
515
547
  - lib/expressir/express/checker.rb
516
548
  - lib/expressir/express/concatenator.rb
517
549
  - lib/expressir/express/core.rb
550
+ - lib/expressir/express/dialect.rb
518
551
  - lib/expressir/express/error.rb
519
552
  - lib/expressir/express/formatter.rb
520
553
  - lib/expressir/express/formatters.rb
@@ -558,7 +591,14 @@ files:
558
591
  - lib/expressir/express/source_formatter.rb
559
592
  - lib/expressir/express/streaming_builder.rb
560
593
  - lib/expressir/express/xsd.rb
594
+ - lib/expressir/interop.rb
595
+ - lib/expressir/interop/json_schema.rb
596
+ - lib/expressir/interop/owl.rb
561
597
  - lib/expressir/liquid.rb
598
+ - lib/expressir/lsp.rb
599
+ - lib/expressir/lsp/document.rb
600
+ - lib/expressir/lsp/server.rb
601
+ - lib/expressir/lsp/workspace.rb
562
602
  - lib/expressir/manifest.rb
563
603
  - lib/expressir/manifest/resolver.rb
564
604
  - lib/expressir/manifest/validator.rb
@@ -670,9 +710,15 @@ files:
670
710
  - lib/expressir/package/builder.rb
671
711
  - lib/expressir/package/metadata.rb
672
712
  - lib/expressir/package/reader.rb
713
+ - lib/expressir/reference.rb
714
+ - lib/expressir/reference/grammar_crosswalk.rb
715
+ - lib/expressir/reference/grammar_crosswalk.yml
716
+ - lib/expressir/reference/note_catalog.rb
673
717
  - lib/expressir/schema_manifest.rb
674
718
  - lib/expressir/schema_manifest_entry.rb
675
719
  - lib/expressir/version.rb
720
+ - lib/tasks/conformance.rake
721
+ - lib/tasks/reference.rake
676
722
  - lib/tasks/verify_remarks.rake
677
723
  - rakelib/native.rake
678
724
  - rakelib/oracle.rake