expressir 1.2.4-x86_64-darwin → 1.2.7-x86_64-darwin

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/.cross_rubies +0 -6
  3. data/.github/workflows/rake.yml +200 -21
  4. data/.gitignore +7 -2
  5. data/.gitmodules +3 -0
  6. data/.rubocop.yml +13 -4
  7. data/README.adoc +8 -0
  8. data/Rakefile +4 -1
  9. data/bin/console +0 -1
  10. data/bin/rspec +3 -3
  11. data/exe/expressir +4 -2
  12. data/exe/format +1 -1
  13. data/exe/format-test +25 -25
  14. data/exe/generate-parser +16 -13
  15. data/expressir.gemspec +12 -10
  16. data/lib/expressir/config.rb +1 -1
  17. data/lib/expressir/express/2.7/express_parser.bundle +0 -0
  18. data/lib/expressir/express/3.0/express_parser.bundle +0 -0
  19. data/lib/expressir/express/3.1/express_parser.bundle +0 -0
  20. data/lib/expressir/express/parser.rb +3 -4
  21. data/lib/expressir/express/visitor.rb +7 -5
  22. data/lib/expressir/model.rb +78 -78
  23. data/lib/expressir/version.rb +1 -1
  24. data/rakelib/antlr4-native.rake +161 -0
  25. data/rakelib/cross-ruby.rake +213 -162
  26. data/spec/acceptance/version_spec.rb +17 -2
  27. data/spec/expressir/express/cache_spec.rb +23 -5
  28. data/spec/expressir/express/formatter_spec.rb +54 -8
  29. data/spec/expressir/express/parser_spec.rb +47 -11
  30. data/spec/expressir/model/model_element_spec.rb +198 -146
  31. data/spec/spec_helper.rb +7 -0
  32. metadata +54 -63
  33. data/demo.rb +0 -18
  34. data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.exp +0 -9589
  35. data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.owl +0 -36619
  36. data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.xml +0 -13294
  37. data/original/examples/employment/eclipse/.project +0 -17
  38. data/original/examples/employment/eclipse/Export/Employment.png +0 -0
  39. data/original/examples/employment/eclipse/Express/employment_schema.exp +0 -33
  40. data/original/examples/employment/eclipse/Express/employment_schema.xmi +0 -77
  41. data/original/examples/employment/eclipse/Express/employment_schema.xml +0 -93
  42. data/original/examples/employment/eclipse/Models/Employment.uml +0 -4
  43. data/original/examples/employment/eclipse/Models/Employment.umldi +0 -240
  44. data/original/examples/employment/eclipse/readme.txt +0 -7
  45. data/original/examples/employment/employment_schema.exp +0 -33
  46. data/original/examples/employment/employment_schema.rb +0 -232
  47. data/original/examples/employment/employment_schema.xml +0 -93
  48. data/original/examples/employment/employment_schema___module.rb +0 -46
  49. data/original/examples/employment/employment_schema___p28attr.rb +0 -126
  50. data/original/examples/employment/employment_schema___p28inst.rb +0 -26
  51. data/original/examples/employment/example_employment_data.xml +0 -1
  52. data/original/examples/employment/example_employment_data_copy.xml +0 -1
  53. data/original/examples/employment/example_employment_reader.rb +0 -30
  54. data/original/examples/employment/example_employment_writer.rb +0 -51
  55. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.exp +0 -3710
  56. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.owl +0 -35880
  57. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.xmi +0 -15357
  58. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.xml +0 -9468
  59. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.exp +0 -8404
  60. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.owl +0 -43147
  61. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.xmi +0 -18341
  62. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.xml +0 -11632
  63. data/original/exp2ruby.rb +0 -525
  64. data/original/expsm.rb +0 -34
  65. data/original/mapping_owl.rb +0 -1018
  66. data/original/mapping_sysml.rb +0 -2281
  67. data/original/mapping_uml2.rb +0 -599
  68. data/original/mapping_uml2_eclipse.rb +0 -433
  69. data/original/reeper.rb +0 -134
  70. data/spec/expressr_spec.rb +0 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 596253e028087e7bd843297fd101f9a8787688753d8b4c8482e00e64c823e4c8
4
- data.tar.gz: 0e752d5ab11ba75e8286511346d4c40649e6fff4f4b1aa0b7ed8cfc95502873e
3
+ metadata.gz: 6030a88e2347a914a26a027154e318d376b7eb351b2f0e0c8d4d4245f6cf8b2d
4
+ data.tar.gz: 017a19262e9c57df4937713ab56da4245c9d57b4caa1a8d737d0b69be3ba7e85
5
5
  SHA512:
6
- metadata.gz: 81c916894ca43b0445bd17e6ad9ba3a73aa68b16c3d0875f3fd193eb7e1eca3e49388f3743d0ed57672d0d67b5cf8b5f87c9a5c9c1ace54f52a46f2136e22b3c
7
- data.tar.gz: 542550cac5af1a44c39c4a638888559e55a194832e025a22e6b6614584eb349950172d2ebef80be4b460dcdcf4024f77fcbb226de65614706c9d0b933e60d4d2
6
+ metadata.gz: 52ebe9c49d76e588c0a4cb29e3c4c2dbb9781d2eb85b27ddf2b78beaa740e47adf0d838b45f98065863b5fe9b7b1b05869616ed5e447ac5663e1868109cad910
7
+ data.tar.gz: eb83287a57d97f429b3f8c0a959049c2393da4d34aa7050b5e7be7a868d258e1225e26cd789634a83b197bfedc32db6cfcb2269d63cdf9143852d299be990292
data/.cross_rubies CHANGED
@@ -1,20 +1,14 @@
1
- 3.1.0:i686-w64-mingw32
2
1
  3.1.0:x86_64-w64-mingw32
3
- 3.1.0:i686-linux-gnu
4
2
  3.1.0:x86_64-linux-gnu
5
3
  3.1.0:aarch64-linux-gnu
6
4
  3.1.0:x86_64-darwin
7
5
  3.1.0:arm64-darwin
8
- 3.0.0:i686-w64-mingw32
9
6
  3.0.0:x86_64-w64-mingw32
10
- 3.0.0:i686-linux-gnu
11
7
  3.0.0:x86_64-linux-gnu
12
8
  3.0.0:aarch64-linux-gnu
13
9
  3.0.0:x86_64-darwin
14
10
  3.0.0:arm64-darwin
15
- 2.7.0:i686-w64-mingw32
16
11
  2.7.0:x86_64-w64-mingw32
17
- 2.7.0:i686-linux-gnu
18
12
  2.7.0:x86_64-linux-gnu
19
13
  2.7.0:aarch64-linux-gnu
20
14
  2.7.0:x86_64-darwin
@@ -6,30 +6,38 @@ on:
6
6
  pull_request:
7
7
 
8
8
  jobs:
9
+ rubocop:
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - name: Checkout
13
+ uses: actions/checkout@v3
14
+ with:
15
+ submodules: recursive
16
+
17
+ - name: Install Ruby
18
+ uses: ruby/setup-ruby@v1
19
+ with:
20
+ ruby-version: 3.0
21
+ bundler-cache: true
22
+
23
+ - name: Bundle
24
+ run: bundle install --jobs 4 --retry 3
25
+
26
+ - name: Rubocop
27
+ run: bundle exec rake rubocop
28
+
9
29
  rake:
10
30
  name: test on ruby-${{ matrix.ruby }} ${{ matrix.os }}
11
- runs-on: ${{ matrix.os }}
12
- continue-on-error: ${{ matrix.experimental }}
31
+ runs-on: ${{ matrix.os }}
13
32
  strategy:
14
33
  fail-fast: false
15
34
  matrix:
16
35
  ruby: [ '3.1', '3.0', '2.7' ]
17
36
  os: [ ubuntu-latest, windows-latest, macos-latest ]
18
- experimental: [ false ]
19
- include:
20
- - ruby: 'head'
21
- os: 'ubuntu-latest'
22
- experimental: true
23
- - ruby: 'head'
24
- os: 'windows-latest'
25
- experimental: true
26
- - ruby: 'head'
27
- os: 'macos-latest'
28
- experimental: true
29
37
 
30
38
  steps:
31
39
  - name: Checkout
32
- uses: actions/checkout@v2
40
+ uses: actions/checkout@v3
33
41
  with:
34
42
  submodules: recursive
35
43
 
@@ -55,18 +63,18 @@ jobs:
55
63
  run: bundle exec rake compile
56
64
 
57
65
  - name: Run tests
58
- run: bundle exec rake
66
+ run: |
67
+ bundle exec rake
68
+ cat .rspec_status
59
69
 
60
70
  # test release workflow
61
- pack:
71
+ pack-ruby:
62
72
  runs-on: ubuntu-latest
63
73
  strategy:
64
74
  fail-fast: false
65
- matrix:
66
- host: [ linux, windows, darwin ]
67
75
  steps:
68
76
  - name: Checkout
69
- uses: actions/checkout@v2
77
+ uses: actions/checkout@v3
70
78
  with:
71
79
  submodules: recursive
72
80
 
@@ -81,16 +89,36 @@ jobs:
81
89
  run: bundle install --jobs 4 --retry 3
82
90
 
83
91
  - name: Build gem without native extension
84
- if: matrix.host == 'linux'
85
92
  run: gem build expressir.gemspec
86
93
 
87
94
  - name: Package gem without native extension
88
- if: matrix.host == 'linux'
89
95
  uses: actions/upload-artifact@v2
90
96
  with:
91
97
  name: pkg-ruby
92
98
  path: expressir-*.gem
93
99
 
100
+ pack:
101
+ runs-on: ubuntu-latest
102
+ strategy:
103
+ fail-fast: false
104
+ matrix:
105
+ host: [ linux, windows, darwin ]
106
+ steps:
107
+ - name: Checkout
108
+ uses: actions/checkout@v3
109
+ with:
110
+ submodules: recursive
111
+
112
+ - name: Setup Ruby
113
+ uses: ruby/setup-ruby@v1
114
+ with:
115
+ ruby-version: '3.0'
116
+ # bundler-cache: true important to not use cache because it leads to "cannot find -lrice"
117
+ # more info https://github.com/lutaml/expressir/runs/2097658383?check_suite_focus=true#step:7:2126
118
+
119
+ - name: Bundle
120
+ run: bundle install --jobs 4 --retry 3
121
+
94
122
  - name: Enable swap
95
123
  run: |
96
124
  sudo fallocate -l 15g /compile.swap
@@ -107,3 +135,154 @@ jobs:
107
135
  with:
108
136
  name: pkg-${{ matrix.host }}
109
137
  path: pkg/*.gem
138
+
139
+ verify-ruby:
140
+ name: verify ruby gem on ruby-${{ matrix.ruby }} ${{ matrix.os }}
141
+ needs: pack-ruby
142
+ runs-on: ${{ matrix.os }}
143
+ strategy:
144
+ fail-fast: false
145
+ matrix:
146
+ ruby: [ '3.1', '3.0', '2.7' ]
147
+ os: [ ubuntu-latest, windows-latest, macos-latest ]
148
+ steps:
149
+ - name: Install Ruby
150
+ uses: ruby/setup-ruby@v1
151
+ with:
152
+ ruby-version: ${{ matrix.ruby }}
153
+ bundler-cache: true
154
+
155
+ - name: Checkout
156
+ uses: actions/checkout@v3
157
+ with:
158
+ submodules: recursive
159
+
160
+ - name: Bundle
161
+ run: bundle install --jobs 4 --retry 3
162
+
163
+ - name: Download packaged gem
164
+ uses: actions/download-artifact@v2
165
+ with:
166
+ name: pkg-ruby
167
+ path: pkg
168
+
169
+ - name: Install gem
170
+ run: gem install -l pkg/expressir-*.gem
171
+
172
+ - name: Verify
173
+ run: |
174
+ cd $(ruby -e "puts RbConfig::TOPDIR + '\/lib\/ruby\/gems\/' + RbConfig::CONFIG['ruby_version'] + '\/gems\/expressir*'")
175
+ ruby bin/rspec
176
+ cat .rspec_status || echo ".rspec_status was not found"
177
+
178
+ verify-darwin:
179
+ name: verify MacOS binary gem on ruby-${{ matrix.ruby }}
180
+ needs: pack
181
+ runs-on: macos-latest
182
+ strategy:
183
+ fail-fast: false
184
+ matrix:
185
+ ruby: [ '3.1', '3.0', '2.7' ]
186
+ steps:
187
+ - name: Install Ruby
188
+ uses: ruby/setup-ruby@v1
189
+ with:
190
+ ruby-version: ${{ matrix.ruby }}
191
+ bundler-cache: true
192
+
193
+ - name: Checkout
194
+ uses: actions/checkout@v3
195
+
196
+ - name: Bundle
197
+ run: bundle install --jobs 4 --retry 3
198
+
199
+ - name: Download packaged gem
200
+ uses: actions/download-artifact@v2
201
+ with:
202
+ name: pkg-darwin
203
+ path: pkg
204
+
205
+ - name: Install binary gem
206
+ run: gem install -l pkg/expressir-*-$(ruby -e "puts RUBY_PLATFORM.sub(/darwin\d{2}$/, 'darwin')").gem
207
+ # MacOS with have something like x86_64-darwin19, others just x86_64-linux
208
+
209
+ - name: Verify
210
+ run: |
211
+ cd $(ruby -e "puts RbConfig::TOPDIR + '\/lib\/ruby\/gems\/' + RbConfig::CONFIG['ruby_version'] + '\/gems\/expressir*'")
212
+ ruby bin/rspec
213
+ cat .rspec_status || echo ".rspec_status was not found"
214
+
215
+ verify-linux:
216
+ name: verify Linux binary gem on ruby-${{ matrix.ruby }}
217
+ needs: pack
218
+ runs-on: ubuntu-latest
219
+ strategy:
220
+ fail-fast: false
221
+ matrix:
222
+ ruby: [ '3.1', '3.0', '2.7' ]
223
+ steps:
224
+ - name: Install Ruby
225
+ uses: ruby/setup-ruby@v1
226
+ with:
227
+ ruby-version: ${{ matrix.ruby }}
228
+ bundler-cache: true
229
+
230
+ - name: Checkout
231
+ uses: actions/checkout@v3
232
+
233
+ - name: Bundle
234
+ run: bundle install --jobs 4 --retry 3
235
+
236
+ - name: Download packaged gem
237
+ uses: actions/download-artifact@v2
238
+ with:
239
+ name: pkg-linux
240
+ path: pkg
241
+
242
+ - name: Install binary gem
243
+ run: gem install -l pkg/expressir-*-$(ruby -e "puts RUBY_PLATFORM").gem
244
+
245
+ - name: Verify
246
+ run: |
247
+ cd $(ruby -e "puts RbConfig::TOPDIR + '\/lib\/ruby\/gems\/' + RbConfig::CONFIG['ruby_version'] + '\/gems\/expressir*'")
248
+ ruby bin/rspec
249
+ cat .rspec_status || echo ".rspec_status was not found"
250
+
251
+ verify-windows:
252
+ name: verify Windows binary gem on ruby-${{ matrix.ruby }}
253
+ needs: pack
254
+ continue-on-error: true
255
+ runs-on: windows-latest
256
+ strategy:
257
+ fail-fast: false
258
+ # Ruby 3.1 fails
259
+ # https://github.com/lutaml/expressir/issues/103
260
+ matrix:
261
+ ruby: [ '3.1', '3.0', '2.7' ]
262
+ steps:
263
+ - name: Install Ruby
264
+ uses: ruby/setup-ruby@v1
265
+ with:
266
+ ruby-version: ${{ matrix.ruby }}
267
+ bundler-cache: true
268
+
269
+ - name: Checkout
270
+ uses: actions/checkout@v3
271
+
272
+ - name: Bundle
273
+ run: bundle install --jobs 4 --retry 3
274
+
275
+ - name: Download packaged gem
276
+ uses: actions/download-artifact@v2
277
+ with:
278
+ name: pkg-windows
279
+ path: pkg
280
+
281
+ - name: Install binary gem
282
+ run: gem install -l pkg/expressir-*-$(ruby -e "puts RUBY_PLATFORM").gem
283
+
284
+ - name: Verify
285
+ run: |
286
+ cd $(ruby -e "puts RbConfig::TOPDIR + '\/lib\/ruby\/gems\/' + RbConfig::CONFIG['ruby_version'] + '\/gems\/expressir*'")
287
+ ruby bin/rspec
288
+ cat .rspec_status || echo ".rspec_status was not found"
data/.gitignore CHANGED
@@ -8,11 +8,16 @@
8
8
  /tmp/
9
9
  /Gemfile.lock
10
10
  /.idea
11
+ /.vscode
11
12
  /lib/expressir/express/express_parser.bundle
13
+ /lib/expressir/express/express_parser.so
14
+ /lib/expressir/express/*/express_parser.bundle
15
+ /lib/expressir/express/*/express_parser.so
12
16
  /spec/syntax/*-pretty.exp
17
+ /ext/express-parser/rice-embed
13
18
 
14
19
  # rspec failure tracking
15
20
  .rspec_status
16
21
 
17
- /ext/express-parser/rice-embed
18
- /lib/expressir/express/express_parser.so
22
+ # rubocop guide
23
+ .rubocop-https---*
data/.gitmodules CHANGED
@@ -1,3 +1,6 @@
1
1
  [submodule "ext/express-parser/antlr4-upstream"]
2
2
  path = ext/express-parser/antlr4-upstream
3
3
  url = https://github.com/antlr/antlr4
4
+ [submodule "ext/express-grammar"]
5
+ path = ext/express-grammar
6
+ url = https://github.com/lutaml/express-grammar
data/.rubocop.yml CHANGED
@@ -1,8 +1,17 @@
1
1
  inherit_from:
2
2
  - https://raw.githubusercontent.com/riboseinc/oss-guides/master/ci/rubocop.yml
3
3
 
4
- # local repo-specific modifications
5
- # ...
6
-
7
4
  AllCops:
8
- TargetRubyVersion: 2.4
5
+ TargetRubyVersion: 2.6
6
+ SuggestExtensions: false
7
+ Exclude:
8
+ - 'vendor/**/*'
9
+ - 'expressir.gemspec'
10
+ - 'tmp/**/*'
11
+ - 'pkg/**/*'
12
+ - 'exe/format-test'
13
+ - 'lib/expressir/express/**/*'
14
+ - 'lib/expressir/model/**/*'
15
+
16
+ Layout/LineLength:
17
+ Max: 160
data/README.adoc CHANGED
@@ -75,6 +75,14 @@ Run the test suite
75
75
  bin/rspec
76
76
  ----
77
77
 
78
+ === Grammar updates
79
+ EXPRESS grammar is lined as git submodule to ext/express-grammar
80
+ Shoudl you update it, run ```rake generate```. This command will generate source code for updated native extension using antlr4-native gem.
81
+ Please note that we create several classes on top of antlr4-native output so using embedded rake task is a real requirement.
82
+
83
+ When new extension is gnerated and tested plase check in updated C++ files to git (```rake generate``` is NOT a CI step,
84
+ extension source files are pulled from the repo).
85
+
78
86
  == Installation
79
87
 
80
88
  Add this line to your application's `Gemfile`:
data/Rakefile CHANGED
@@ -1,14 +1,17 @@
1
1
  require "bundler/gem_tasks"
2
2
  require "rspec/core/rake_task"
3
3
  require "rake/extensiontask"
4
+ require "rubocop/rake_task"
4
5
  require "yard"
5
6
 
6
7
  RSpec::Core::RakeTask.new(:spec)
7
8
 
8
- task :default => :spec
9
+ task default: :spec
9
10
 
10
11
  GEMSPEC = Gem::Specification.load("expressir.gemspec")
11
12
 
13
+ RuboCop::RakeTask.new
14
+
12
15
  Gem::PackageTask.new(GEMSPEC).define
13
16
 
14
17
  YARD::Rake::YardocTask.new
data/bin/console CHANGED
@@ -9,4 +9,3 @@ require "reeper"
9
9
  # (If you use this, don't forget to add pry to your Gemfile!)
10
10
  require "pry"
11
11
  Pry.start
12
-
data/bin/rspec CHANGED
@@ -10,12 +10,12 @@
10
10
 
11
11
  require "pathname"
12
12
  ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
13
- Pathname.new(__FILE__).realpath)
13
+ Pathname.new(__FILE__).realpath)
14
14
 
15
- bundle_binstub = File.expand_path("../bundle", __FILE__)
15
+ bundle_binstub = File.expand_path("bundle", __dir__)
16
16
 
17
17
  if File.file?(bundle_binstub)
18
- if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
18
+ if /This file was generated by Bundler/.match?(File.read(bundle_binstub, 300))
19
19
  load(bundle_binstub)
20
20
  else
21
21
  abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
data/exe/expressir CHANGED
@@ -11,8 +11,10 @@ $:.unshift File.expand_path("../../lib", bin_file)
11
11
  # Fixes https://github.com/rubygems/rubygems/issues/1420
12
12
  require "rubygems/specification"
13
13
 
14
- class Gem::Specification
15
- def this; self; end
14
+ module Gem
15
+ class Specification
16
+ def this; self; end
17
+ end
16
18
  end
17
19
 
18
20
  # start up the CLI
data/exe/format CHANGED
@@ -15,4 +15,4 @@ formatter = Class.new(Expressir::Express::Formatter) do
15
15
  end
16
16
  result = repository.to_hash(formatter: formatter, skip_empty: true)
17
17
 
18
- puts YAML.dump(result)
18
+ puts YAML.dump(result)
data/exe/format-test CHANGED
@@ -24,30 +24,30 @@ exp_files = [
24
24
  # '../iso-10303-stepmod/data/resources/iso13584_expressions_schema/iso13584_expressions_schema.exp',
25
25
  # annotated-express test (12s)
26
26
  # see https://github.com/metanorma/annotated-express/blob/master/data/documents/resources/fundamentals_of_product_description_and_support/sections/04-schemas.adoc
27
- '../iso-10303-stepmod/data/resources/action_schema/action_schema_annotated.exp',
28
- '../iso-10303-stepmod/data/resources/application_context_schema/application_context_schema_annotated.exp',
29
- '../iso-10303-stepmod/data/resources/approval_schema/approval_schema_annotated.exp',
30
- '../iso-10303-stepmod/data/resources/basic_attribute_schema/basic_attribute_schema_annotated.exp',
31
- '../iso-10303-stepmod/data/resources/certification_schema/certification_schema_annotated.exp',
32
- '../iso-10303-stepmod/data/resources/contract_schema/contract_schema_annotated.exp',
33
- '../iso-10303-stepmod/data/resources/date_time_schema/date_time_schema_annotated.exp',
34
- '../iso-10303-stepmod/data/resources/document_schema/document_schema.exp',
35
- '../iso-10303-stepmod/data/resources/effectivity_schema/effectivity_schema_annotated.exp',
36
- '../iso-10303-stepmod/data/resources/experience_schema/experience_schema_annotated.exp',
37
- '../iso-10303-stepmod/data/resources/external_reference_schema/external_reference_schema_annotated.exp',
38
- '../iso-10303-stepmod/data/resources/group_schema/group_schema_annotated.exp',
39
- '../iso-10303-stepmod/data/resources/language_schema/language_schema_annotated.exp',
40
- '../iso-10303-stepmod/data/resources/location_schema/location_schema_annotated.exp',
41
- '../iso-10303-stepmod/data/resources/management_resources_schema/management_resources_schema_annotated.exp',
42
- '../iso-10303-stepmod/data/resources/measure_schema/measure_schema_annotated.exp',
43
- '../iso-10303-stepmod/data/resources/person_organization_schema/person_organization_schema_annotated.exp',
44
- '../iso-10303-stepmod/data/resources/process_property_schema/process_property_schema_annotated.exp',
45
- '../iso-10303-stepmod/data/resources/product_definition_schema/product_definition_schema_annotated.exp',
46
- '../iso-10303-stepmod/data/resources/product_property_definition_schema/product_property_definition_schema_annotated.exp',
47
- '../iso-10303-stepmod/data/resources/product_property_representation_schema/product_property_representation_schema_annotated.exp',
48
- '../iso-10303-stepmod/data/resources/qualifications_schema/qualifications_schema_annotated.exp',
49
- '../iso-10303-stepmod/data/resources/security_classification_schema/security_classification_schema_annotated.exp',
50
- '../iso-10303-stepmod/data/resources/support_resource_schema/support_resource_schema_annotated.exp',
27
+ "../iso-10303-stepmod/data/resources/action_schema/action_schema_annotated.exp",
28
+ "../iso-10303-stepmod/data/resources/application_context_schema/application_context_schema_annotated.exp",
29
+ "../iso-10303-stepmod/data/resources/approval_schema/approval_schema_annotated.exp",
30
+ "../iso-10303-stepmod/data/resources/basic_attribute_schema/basic_attribute_schema_annotated.exp",
31
+ "../iso-10303-stepmod/data/resources/certification_schema/certification_schema_annotated.exp",
32
+ "../iso-10303-stepmod/data/resources/contract_schema/contract_schema_annotated.exp",
33
+ "../iso-10303-stepmod/data/resources/date_time_schema/date_time_schema_annotated.exp",
34
+ "../iso-10303-stepmod/data/resources/document_schema/document_schema.exp",
35
+ "../iso-10303-stepmod/data/resources/effectivity_schema/effectivity_schema_annotated.exp",
36
+ "../iso-10303-stepmod/data/resources/experience_schema/experience_schema_annotated.exp",
37
+ "../iso-10303-stepmod/data/resources/external_reference_schema/external_reference_schema_annotated.exp",
38
+ "../iso-10303-stepmod/data/resources/group_schema/group_schema_annotated.exp",
39
+ "../iso-10303-stepmod/data/resources/language_schema/language_schema_annotated.exp",
40
+ "../iso-10303-stepmod/data/resources/location_schema/location_schema_annotated.exp",
41
+ "../iso-10303-stepmod/data/resources/management_resources_schema/management_resources_schema_annotated.exp",
42
+ "../iso-10303-stepmod/data/resources/measure_schema/measure_schema_annotated.exp",
43
+ "../iso-10303-stepmod/data/resources/person_organization_schema/person_organization_schema_annotated.exp",
44
+ "../iso-10303-stepmod/data/resources/process_property_schema/process_property_schema_annotated.exp",
45
+ "../iso-10303-stepmod/data/resources/product_definition_schema/product_definition_schema_annotated.exp",
46
+ "../iso-10303-stepmod/data/resources/product_property_definition_schema/product_property_definition_schema_annotated.exp",
47
+ "../iso-10303-stepmod/data/resources/product_property_representation_schema/product_property_representation_schema_annotated.exp",
48
+ "../iso-10303-stepmod/data/resources/qualifications_schema/qualifications_schema_annotated.exp",
49
+ "../iso-10303-stepmod/data/resources/security_classification_schema/security_classification_schema_annotated.exp",
50
+ "../iso-10303-stepmod/data/resources/support_resource_schema/support_resource_schema_annotated.exp",
51
51
  # full test (6m18s + 8s = 6m26s)
52
52
  # *`bundle exec ../stepmod-utils/exe/stepmod-find-express-files ../iso-10303-stepmod`.strip.split("\n").map{|file| File.exists?(file.sub(/\.exp$/, '_annotated.exp')) ? file.sub(/\.exp$/, '_annotated.exp') : file}
53
53
  ]
@@ -78,4 +78,4 @@ end
78
78
  result = repository.to_hash(formatter: formatter, skip_empty: true)
79
79
  puts "Repository.to_hash time: #{(Time.now - start).round(2)}s"
80
80
 
81
- # puts YAML.dump(result)
81
+ # puts YAML.dump(result)
data/exe/generate-parser CHANGED
@@ -1,29 +1,30 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'fileutils'
4
- require 'antlr4-native'
3
+ require "fileutils"
4
+ require "antlr4-native"
5
5
 
6
6
  grammar_file = ARGV.shift
7
7
 
8
8
  # ANTLR does weird things if the grammar file isn't in the current working directory
9
- temp_grammar_file = File.join(FileUtils.pwd(), File.basename(grammar_file))
9
+ temp_grammar_file = File.join(FileUtils.pwd, File.basename(grammar_file))
10
10
  FileUtils.cp(grammar_file, temp_grammar_file)
11
11
 
12
12
  # generate parser
13
13
  generator = Antlr4Native::Generator.new(
14
14
  grammar_files: [File.basename(temp_grammar_file)],
15
- output_dir: 'ext',
16
- parser_root_method: 'syntax'
15
+ output_dir: "ext",
16
+ parser_root_method: "syntax",
17
17
  )
18
18
  generator.generate
19
19
 
20
20
  # fix issues with generated parser
21
- parser_source_file = File.join(*%w(ext express-parser express_parser.cpp))
22
- parser_source_lines = File.read(parser_source_file).split(/\n/)
21
+ parser_source_file = File.join("ext", "express-parser", "express_parser.cpp")
22
+ parser_source_lines = File.read(parser_source_file).split("\n")
23
23
 
24
24
  # - add ParserProxy tokens method, simple compensation for missing exposed BufferedTokenStream
25
- i = parser_source_lines.index{|x| x == ' Object syntax() {'}
26
- parser_source_lines[i + 6] += "\n" + <<~CPP.split(/\n/).map{|x| x != "" ? " " + x : x}.join("\n") + "\n"
25
+ i = parser_source_lines.index { |x| x == " Object syntax() {" }
26
+ parser_source_lines[i + 6] += <<~CPP.split("\n").map { |x| x == "" ? x : " #{x}" }.join("\n")
27
+
27
28
  Array getTokens() {
28
29
  Array a;
29
30
 
@@ -35,14 +36,16 @@ parser_source_lines[i + 6] += "\n" + <<~CPP.split(/\n/).map{|x| x != "" ? " " +
35
36
 
36
37
  return a;
37
38
  }
39
+
38
40
  CPP
39
- i = parser_source_lines.index{|x| x == ' .define_method("syntax", &ParserProxy::syntax)'}
40
- parser_source_lines[i] += "\n" + <<~CPP.split(/\n/).map{|x| x != "" ? " " + x : x}.join("\n")
41
+ i = parser_source_lines.index { |x| x == ' .define_method("syntax", &ParserProxy::syntax, Return().keepAlive())' }
42
+ parser_source_lines[i] += <<~CPP.split("\n").map { |x| x == "" ? x : " #{x}" }.join("\n")
43
+
41
44
  .define_method("tokens", &ParserProxy::getTokens)
42
45
  CPP
43
46
 
44
47
  # write fixed parser file
45
- File.write(parser_source_file, parser_source_lines.join("\n") + "\n")
48
+ File.write(parser_source_file, "#{parser_source_lines.join("\n")}\n")
46
49
 
47
50
  # cleanup
48
- FileUtils.rm(temp_grammar_file)
51
+ FileUtils.rm(temp_grammar_file)
data/expressir.gemspec CHANGED
@@ -17,10 +17,10 @@ Gem::Specification.new do |spec|
17
17
  spec.metadata["source_code_uri"] = spec.homepage
18
18
  spec.metadata["changelog_uri"] = "https://github.com/lutaml/expressir/releases"
19
19
 
20
- spec.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
20
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.6.0")
21
21
 
22
22
  spec.files = `git ls-files`.split("\n")\
23
- + Dir.glob('ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/**/*')
23
+ + Dir.glob("ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/**/*")
24
24
 
25
25
  spec.test_files = `git ls-files -- {spec}/*`.split("\n")
26
26
 
@@ -30,17 +30,19 @@ Gem::Specification.new do |spec|
30
30
 
31
31
  spec.extensions = File.join(*%w(ext express-parser extconf.rb))
32
32
 
33
- spec.add_runtime_dependency "thor", "~> 1.0"
34
33
  spec.add_runtime_dependency "rice", "~> 4.0.3"
34
+ spec.add_runtime_dependency "thor", "~> 1.0"
35
+ spec.add_development_dependency "antlr4-native", "~> 2.1.0"
35
36
  spec.add_development_dependency "asciidoctor", "~> 2.0.13"
36
- spec.add_development_dependency "antlr4-native", "~> 1.1.0"
37
- spec.add_development_dependency "bundler", "~> 2.0"
38
- spec.add_development_dependency "pry", "~> 0.12.2"
37
+ spec.add_development_dependency "bundler", "~> 2.3"
39
38
  spec.add_development_dependency "byebug", "~> 11.1"
39
+ spec.add_development_dependency "pry", "~> 0.12.2"
40
40
  spec.add_development_dependency "rake", "~> 13.0"
41
- spec.add_development_dependency "rake-compiler", "~> 1.1"
42
- spec.add_development_dependency "rake-compiler-dock", "~> 1.1"
43
- spec.add_development_dependency "rspec", "~> 3.0"
44
- spec.add_development_dependency "yard", "~> 0.9.26"
41
+ spec.add_development_dependency "rake-compiler", "~> 1.2"
42
+ spec.add_development_dependency "rake-compiler-dock", "~> 1.2.1"
43
+ spec.add_development_dependency "rspec", "~> 3.11"
44
+ spec.add_development_dependency "rubocop", "1.5.2"
45
+ spec.add_development_dependency "rubocop-performance", "~> 1.0"
45
46
  spec.add_development_dependency "webrick", "~> 1.7.0"
47
+ spec.add_development_dependency "yard", "~> 0.9.26"
46
48
  end
@@ -15,7 +15,7 @@ module Expressir
15
15
  attr_accessor :logs
16
16
 
17
17
  def initialize
18
- @logs ||= %i(error)
18
+ @logs = %i(error)
19
19
  end
20
20
  end
21
21
 
@@ -31,13 +31,12 @@ module Expressir
31
31
  # @param [Boolean] include_source attach original source code to model elements
32
32
  # @return [Model::Repository]
33
33
  def self.from_file(file, skip_references: nil, include_source: nil)
34
- input = File.read(file)
35
34
 
36
35
  # An important note re memory management
37
- # parse, syntax, visitor methods return complex tree structures created in netive (C++) extension
36
+ # parse, syntax, visitor methods return complex tree structures created in native (C++) extension
38
37
  # visit method references nodes and leaves of this structures but it is totally untransparent for Ruby GarbageCllector
39
- # so in this class we keep those C++ structure marked for GC so theu are not freed
40
- @parser = ::ExpressParser::Parser.parse(input)
38
+ # so in this class we keep those C++ structure marked for GC so they are not freed
39
+ @parser = ::ExpressParser::ParserExt.new(file.to_s)
41
40
  @parse_tree = @parser.syntax()
42
41
 
43
42
  @visitor = Visitor.new(@parser.tokens, include_source: include_source)