expressir 2.4.29-x86_64-linux → 2.4.31-x86_64-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.
- checksums.yaml +4 -4
- data/.github/scripts/test_installed_gem.rb +18 -4
- data/.github/workflows/native-gems.yml +4 -1
- data/expressir.gemspec +5 -5
- data/lib/expressir/3.2/expressir_core.so +0 -0
- data/lib/expressir/3.3/expressir_core.so +0 -0
- data/lib/expressir/3.4/expressir_core.so +0 -0
- data/lib/expressir/4.0/expressir_core.so +0 -0
- data/lib/expressir/commands/parity_inputs.rb +6 -1
- data/lib/expressir/commands.rb +1 -1
- data/lib/expressir/express/core.rb +1 -0
- data/lib/expressir/express/grammar/parser.rb +29 -1
- data/lib/expressir/version.rb +1 -1
- metadata +19 -19
- /data/lib/expressir/commands/{version.rb → version_command.rb} +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 48ddbee40a47febda3a26577196114e5d64a41dbd53ead30b70a496fac792798
|
|
4
|
+
data.tar.gz: 2aa5f102ed661e63bf59768b052c9160f81f9534f9065e8b4b8d4db9dd9e5bd3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8636b926948dcd0a7d6e4f0d0ec18f0bb168ace9b7668574b0881597c077d5f36937f1f167e5957e1ffa9498288800465b86660e6e19b2403ce5fd9141474946
|
|
7
|
+
data.tar.gz: 55a118765bed43bda7eb42ec1d563a6cc41bb0edfafdb3f925ec670c73115eb5a1714be0279fc6309a467aeb0e840b618e1456346ae8f374fd2661e18ea7430b
|
|
@@ -5,8 +5,19 @@
|
|
|
5
5
|
# active and the parser must handle the standard and #462 forms.
|
|
6
6
|
require "expressir"
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
if Gem.win_platform? && !Expressir::Express::Core::NATIVE_AVAILABLE
|
|
9
|
+
# Interim expressir#487 guard: native is intentionally disabled on
|
|
10
|
+
# windows until the ancestor-walk fix (#499) merges and the guard
|
|
11
|
+
# reverts. The platform gem must still SHIP a loadable extension -
|
|
12
|
+
# that is this leg's contract while the guard stands.
|
|
13
|
+
gem_dir = Gem.loaded_specs["expressir"].gem_dir
|
|
14
|
+
shipped = Dir.glob(File.join(gem_dir, "**", "expressir_core.{so,dll}"))
|
|
15
|
+
abort "FAIL: expressir_core not shipped in the platform gem" if shipped.empty?
|
|
16
|
+
puts "native binding: deferred (windows guard, expressir#487)"
|
|
17
|
+
else
|
|
18
|
+
abort "FAIL: NATIVE_AVAILABLE is false" unless Expressir::Express::Core::NATIVE_AVAILABLE
|
|
19
|
+
puts "native binding: active"
|
|
20
|
+
end
|
|
10
21
|
|
|
11
22
|
repo = Expressir::Express::Parser.from_exp(
|
|
12
23
|
"SCHEMA smoke; ENTITY e; a : STRING; END_ENTITY; END_SCHEMA;",
|
|
@@ -28,7 +39,10 @@ puts "#462 form: ok"
|
|
|
28
39
|
|
|
29
40
|
# The platform gems force-build the Rust compiled-set writer; a leg that
|
|
30
41
|
# shipped a non-loadable expressir_core would otherwise pass this smoke.
|
|
31
|
-
|
|
32
|
-
|
|
42
|
+
# Windows under the #487 guard runs the pure-Ruby fallback instead.
|
|
43
|
+
unless Gem.win_platform? && !Expressir::Express::Core::NATIVE_AVAILABLE
|
|
44
|
+
abort "FAIL: core_set_available is false" unless Expressir::Express::Parser.core_set_available?
|
|
45
|
+
puts "compiled-set core: ok"
|
|
46
|
+
end
|
|
33
47
|
|
|
34
48
|
puts "SMOKE OK"
|
|
@@ -197,5 +197,8 @@ jobs:
|
|
|
197
197
|
- name: Push to rubygems
|
|
198
198
|
run: |
|
|
199
199
|
for gem in pkg/expressir-*.gem; do
|
|
200
|
-
gem
|
|
200
|
+
# Idempotent: a gem already on rubygems (e.g. the source gem
|
|
201
|
+
# shipped by release.yml ahead of the platform run) is a skip,
|
|
202
|
+
# not a failure.
|
|
203
|
+
gem push "$gem" || echo "::warning::$(basename "$gem") already published or rejected; continuing"
|
|
201
204
|
done
|
data/expressir.gemspec
CHANGED
|
@@ -42,18 +42,18 @@ Gem::Specification.new do |spec|
|
|
|
42
42
|
spec.extensions = ["ext/expressir_core/extconf.rb"]
|
|
43
43
|
spec.add_dependency "rb_sys", "~> 0.9.130"
|
|
44
44
|
|
|
45
|
-
spec.add_dependency "base64"
|
|
45
|
+
spec.add_dependency "base64", ">= 0.1.0"
|
|
46
46
|
spec.add_dependency "benchmark"
|
|
47
47
|
spec.add_dependency "benchmark-ips"
|
|
48
48
|
spec.add_dependency "csv"
|
|
49
|
-
spec.add_dependency "liquid"
|
|
49
|
+
spec.add_dependency "liquid", "~> 5"
|
|
50
50
|
spec.add_dependency "lutaml-model", "~> 0.8.76"
|
|
51
51
|
spec.add_dependency "moxml"
|
|
52
|
-
spec.add_dependency "nokogiri"
|
|
52
|
+
spec.add_dependency "nokogiri", "~> 1.19"
|
|
53
53
|
spec.add_dependency "paint"
|
|
54
|
-
spec.add_dependency "parsanol", "~> 1.3.9", ">= 1.3.
|
|
54
|
+
spec.add_dependency "parsanol", "~> 1.3.9", ">= 1.3.89"
|
|
55
55
|
spec.add_dependency "ruby-progressbar", "~> 1.11"
|
|
56
|
-
spec.add_dependency "rubyzip"
|
|
56
|
+
spec.add_dependency "rubyzip", "~> 3.7"
|
|
57
57
|
spec.add_dependency "table_tennis"
|
|
58
58
|
spec.add_dependency "thor", "~> 1.0"
|
|
59
59
|
# Native YAML/JSON engine (lutaml-model opt-in by bundle contents)
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -113,7 +113,12 @@ module Expressir
|
|
|
113
113
|
# Nearest ancestor directory NAMED `schemas`, or nil.
|
|
114
114
|
def ancestor_schemas_dir(root_path)
|
|
115
115
|
dir = File.dirname(File.expand_path(root_path))
|
|
116
|
-
|
|
116
|
+
# dirname reaches a fixed point at the filesystem root: "/" on
|
|
117
|
+
# POSIX, "D:/" (or a UNC root) on windows. Comparing against "/"
|
|
118
|
+
# alone spun forever on windows - every rake run since this
|
|
119
|
+
# shipped (e0f6651, 2026-09-24) burned the full 6h runner
|
|
120
|
+
# budget in the first expand example (#487).
|
|
121
|
+
until dir == "/" || dir == File.dirname(dir)
|
|
117
122
|
return dir if File.basename(dir) == "schemas"
|
|
118
123
|
|
|
119
124
|
dir = File.dirname(dir)
|
data/lib/expressir/commands.rb
CHANGED
|
@@ -21,7 +21,7 @@ module Expressir
|
|
|
21
21
|
autoload :Changes, "#{__dir__}/commands/changes"
|
|
22
22
|
autoload :ChangesValidate, "#{__dir__}/commands/changes_validate"
|
|
23
23
|
autoload :ChangesImportEengine, "#{__dir__}/commands/changes_import_eengine"
|
|
24
|
-
autoload :Version, "#{__dir__}/commands/
|
|
24
|
+
autoload :Version, "#{__dir__}/commands/version_command"
|
|
25
25
|
autoload :Package, "#{__dir__}/commands/package"
|
|
26
26
|
autoload :Manifest, "#{__dir__}/commands/manifest"
|
|
27
27
|
autoload :MappingValidate, "#{__dir__}/commands/mapping_validate"
|
|
@@ -7,6 +7,7 @@ module Expressir
|
|
|
7
7
|
# Ruby bridge to the expressir-core Rust crate (parse + model
|
|
8
8
|
# extraction). Available when the native extension is built;
|
|
9
9
|
# callers fall back to the pure-Ruby parser otherwise.
|
|
10
|
+
#
|
|
10
11
|
module Core
|
|
11
12
|
NATIVE_AVAILABLE = begin
|
|
12
13
|
require "expressir/expressir_core"
|
|
@@ -27,6 +27,28 @@ module Expressir
|
|
|
27
27
|
# Files above this use parse_fresh which has no packrat cache
|
|
28
28
|
LARGE_FILE_THRESHOLD = 1024 * 1024 # 1 MB
|
|
29
29
|
|
|
30
|
+
# Whitespace rides the engine's injected trivia (parsanol-ruby
|
|
31
|
+
# #180's source-preserving mode, 1.3.82+): each unit records
|
|
32
|
+
# verbatim under :space and attaches to the next Named capture.
|
|
33
|
+
# Remarks stay OUT of the skip rule — they are product data,
|
|
34
|
+
# captured by the tailRemark/embeddedRemark rules and attached
|
|
35
|
+
# by RemarkScanner; tail remarks attach backward, the engine's
|
|
36
|
+
# next-capture channel is the wrong direction for them.
|
|
37
|
+
rule(:trivia) { match[" \r\n\t\f"].repeat(1) }
|
|
38
|
+
# exempt (parsanol#195, shipped 1.3.89): token rules whose bodies
|
|
39
|
+
# manage their own internals — injection before a char-class tail
|
|
40
|
+
# repetition absorbs the following token across whitespace
|
|
41
|
+
# ("RULE r FOR" parsed as one simpleId). simpleId additionally
|
|
42
|
+
# matches as a single quantified Re, which needs no exemption;
|
|
43
|
+
# the two mechanisms agree and stay for defense in depth.
|
|
44
|
+
# The whitespace/remark rules manage their own trivia end to end
|
|
45
|
+
# (they ARE the trivia surface for remarks); injection around
|
|
46
|
+
# them breaks consecutive remark lines on the Ruby engine
|
|
47
|
+
# ("-- X\n--\nSCHEMA ..." failed - the #487 windows follow-up,
|
|
48
|
+
# parsanol-ruby#195 family).
|
|
49
|
+
skip(:trivia, whitespace: :space,
|
|
50
|
+
exempt: %i[simpleId digits spaces space embeddedRemark tailRemark])
|
|
51
|
+
|
|
30
52
|
# Get cached parser instance (thread-safe)
|
|
31
53
|
# Reusing the parser avoids the overhead of reinitializing all rule definitions
|
|
32
54
|
def self.cached_parser
|
|
@@ -604,7 +626,13 @@ module Expressir
|
|
|
604
626
|
(unaryOp >> simpleFactorExpression).as(:simpleFactorUnaryExpression)
|
|
605
627
|
end
|
|
606
628
|
rule(:simpleId) do
|
|
607
|
-
|
|
629
|
+
# One quantified Re, not lead >> tail-repeat: under skip
|
|
630
|
+
# injection the DSL interleaves trivia before the tail
|
|
631
|
+
# repetition, so a two-atom ident would absorb the following
|
|
632
|
+
# whitespace-separated identifier ("RULE r FOR (e)" parses
|
|
633
|
+
# "r FOR" as one simpleId). A quantified Re consumes the
|
|
634
|
+
# whole identifier in a single step — parsanol GH-69.
|
|
635
|
+
anyKeyword.absent? >> cts(match("[a-zA-Z_][a-zA-Z0-9_]*").as(:str)).as(:simpleId)
|
|
608
636
|
end
|
|
609
637
|
rule(:simpleStringLiteral) do
|
|
610
638
|
cts((str("'") >> (str("'").absent? >> any).repeat >> str("'")).as(:str)).as(:simpleStringLiteral)
|
data/lib/expressir/version.rb
CHANGED
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.
|
|
4
|
+
version: 2.4.31
|
|
5
5
|
platform: x86_64-linux
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-10-
|
|
11
|
+
date: 2026-10-12 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: base64
|
|
@@ -16,14 +16,14 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version:
|
|
19
|
+
version: 0.1.0
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version:
|
|
26
|
+
version: 0.1.0
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: benchmark
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -70,16 +70,16 @@ dependencies:
|
|
|
70
70
|
name: liquid
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
|
72
72
|
requirements:
|
|
73
|
-
- - "
|
|
73
|
+
- - "~>"
|
|
74
74
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: '
|
|
75
|
+
version: '5'
|
|
76
76
|
type: :runtime
|
|
77
77
|
prerelease: false
|
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
79
|
requirements:
|
|
80
|
-
- - "
|
|
80
|
+
- - "~>"
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: '
|
|
82
|
+
version: '5'
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
84
84
|
name: lutaml-model
|
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -112,16 +112,16 @@ dependencies:
|
|
|
112
112
|
name: nokogiri
|
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
|
114
114
|
requirements:
|
|
115
|
-
- - "
|
|
115
|
+
- - "~>"
|
|
116
116
|
- !ruby/object:Gem::Version
|
|
117
|
-
version: '
|
|
117
|
+
version: '1.19'
|
|
118
118
|
type: :runtime
|
|
119
119
|
prerelease: false
|
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
121
|
requirements:
|
|
122
|
-
- - "
|
|
122
|
+
- - "~>"
|
|
123
123
|
- !ruby/object:Gem::Version
|
|
124
|
-
version: '
|
|
124
|
+
version: '1.19'
|
|
125
125
|
- !ruby/object:Gem::Dependency
|
|
126
126
|
name: paint
|
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -145,7 +145,7 @@ dependencies:
|
|
|
145
145
|
version: 1.3.9
|
|
146
146
|
- - ">="
|
|
147
147
|
- !ruby/object:Gem::Version
|
|
148
|
-
version: 1.3.
|
|
148
|
+
version: 1.3.89
|
|
149
149
|
type: :runtime
|
|
150
150
|
prerelease: false
|
|
151
151
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -155,7 +155,7 @@ dependencies:
|
|
|
155
155
|
version: 1.3.9
|
|
156
156
|
- - ">="
|
|
157
157
|
- !ruby/object:Gem::Version
|
|
158
|
-
version: 1.3.
|
|
158
|
+
version: 1.3.89
|
|
159
159
|
- !ruby/object:Gem::Dependency
|
|
160
160
|
name: ruby-progressbar
|
|
161
161
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -174,16 +174,16 @@ dependencies:
|
|
|
174
174
|
name: rubyzip
|
|
175
175
|
requirement: !ruby/object:Gem::Requirement
|
|
176
176
|
requirements:
|
|
177
|
-
- - "
|
|
177
|
+
- - "~>"
|
|
178
178
|
- !ruby/object:Gem::Version
|
|
179
|
-
version: '
|
|
179
|
+
version: '3.7'
|
|
180
180
|
type: :runtime
|
|
181
181
|
prerelease: false
|
|
182
182
|
version_requirements: !ruby/object:Gem::Requirement
|
|
183
183
|
requirements:
|
|
184
|
-
- - "
|
|
184
|
+
- - "~>"
|
|
185
185
|
- !ruby/object:Gem::Version
|
|
186
|
-
version: '
|
|
186
|
+
version: '3.7'
|
|
187
187
|
- !ruby/object:Gem::Dependency
|
|
188
188
|
name: table_tennis
|
|
189
189
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -448,7 +448,7 @@ files:
|
|
|
448
448
|
- lib/expressir/commands/validate.rb
|
|
449
449
|
- lib/expressir/commands/validate_ascii.rb
|
|
450
450
|
- lib/expressir/commands/validate_load.rb
|
|
451
|
-
- lib/expressir/commands/
|
|
451
|
+
- lib/expressir/commands/version_command.rb
|
|
452
452
|
- lib/expressir/commands/xsd.rb
|
|
453
453
|
- lib/expressir/config.rb
|
|
454
454
|
- lib/expressir/coverage.rb
|
|
File without changes
|