expressir 2.1.6 → 2.1.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a9c09d989cf664f6fb54d70d6d94c8faed0174d1123ff510999650185d465be0
4
- data.tar.gz: 51473be1f440a3e7ac4d3542be23d0061c283b7d645be197fba0f0f10b3e7bcb
3
+ metadata.gz: dfec9983e31d78c1f51c3a600a795eca7758b81033f85b5cee68d6e7645e4017
4
+ data.tar.gz: 95ad30e749fa1f7b46f88548ccad361aa69a022439fd6192db224d09ae075683
5
5
  SHA512:
6
- metadata.gz: 26fe94a7dce80fdce7103dcd92b7498e6cb777de874f9449b88035152115c11cf4bab70c9720d14c22070517a7378b9d77034cb4e76e3eed29a16e21257ddbe7
7
- data.tar.gz: 7197262c7eba33aa9272bd427f1ba392a4e71da2eb930ce2867e9693172efc98916cd4b00029c7a2d40467226fedb8c38313b54d3d7373e925fbbe90efb446ff
6
+ metadata.gz: 8f33d2434f2f7002831276ef2b22ac150e84ffaa49854113cc91a28329947ec122f3191eca213d2b5bca22b9e8d7f9d97677adc62b0c8a7a7fe7562ad7027342
7
+ data.tar.gz: 30a85936b26673328a27103886c17f90a7011702d7250fb08088b4f40e41634f7ec44c6845b0de1b0675d559b3d462e1994a128f07563a8f6b1ce88d7368a62d
@@ -873,12 +873,17 @@ module Expressir
873
873
  end
874
874
 
875
875
  def format_expressions_function_call(node)
876
- [
877
- format(node.function),
878
- "(",
879
- node.parameters.map { |x| format(x) }.join(", "),
880
- ")",
881
- ].join("")
876
+ params = if node.parameters.nil?
877
+ []
878
+ else
879
+ [
880
+ "(",
881
+ node.parameters.map { |x| format(x) }.join(", "),
882
+ ")",
883
+ ]
884
+ end
885
+
886
+ [format(node.function), params].flatten.join("")
882
887
  end
883
888
 
884
889
  def format_expressions_interval(node)
@@ -50,7 +50,7 @@ module Expressir
50
50
  end
51
51
  rule(:abstractSupertype) { (tABSTRACT >> tSUPERTYPE >> op_delim).as(:abstractSupertype) }
52
52
  rule(:actualParameterList) do
53
- (op_leftparen >> (parameter >> (op_comma >> parameter).repeat).as(:listOf_parameter) >> op_rightparen)
53
+ (op_leftparen >> (parameter >> (op_comma >> parameter).repeat).as(:listOf_parameter).maybe >> op_rightparen)
54
54
  .as(:actualParameterList)
55
55
  end
56
56
  rule(:addLikeOp) { (op_plus | op_minus | tOR | tXOR).as(:addLikeOp) }
@@ -340,7 +340,7 @@ module Expressir
340
340
  rule(:simpleExpression) { (term >> (addLikeOp.as(:operator) >> term).as(:item).repeat.as(:rhs)).as(:simpleExpression) }
341
341
  rule(:simpleFactor) do
342
342
  (
343
- simpleFactorExpression | aggregateInitializer | entityConstructor | interval | queryExpression |
343
+ simpleFactorExpression | aggregateInitializer | entityConstructor | interval | queryExpression | stringLiteral |
344
344
  simpleFactorUnaryExpression | enumerationReference
345
345
  ).as(:simpleFactor)
346
346
  end
@@ -424,9 +424,15 @@ module Expressir
424
424
  # @param [Boolean] skip_references skip resolving references
425
425
  # @param [Boolean] include_source attach original source code to model elements
426
426
  # @return [Model::Repository]
427
- def self.from_file(file, skip_references: nil, include_source: nil)
427
+ def self.from_file(file, skip_references: nil, include_source: nil) # rubocop:disable Metrics/AbcSize
428
428
  source = File.read file
429
- ast = Parser.new.parse source
429
+
430
+ begin
431
+ ast = Parser.new.parse source
432
+ rescue Parslet::ParseFailed => e
433
+ puts "Parslet::ParseFailed:"
434
+ puts e.parse_failure_cause.ascii_tree
435
+ end
430
436
 
431
437
  visitor = Expressir::Express::Visitor.new(source, include_source: include_source)
432
438
  transformed = visitor.visit_ast ast, :top
@@ -204,6 +204,8 @@ module Expressir
204
204
  end
205
205
 
206
206
  def node_find(node, path)
207
+ return nil if node.is_a?(String)
208
+
207
209
  if node.is_a?(Enumerable)
208
210
  node.find { |item| item.find(path) }
209
211
  else
@@ -1062,7 +1064,7 @@ module Expressir
1062
1064
  ctx__actual_parameter_list = ctx.actual_parameter_list
1063
1065
 
1064
1066
  function = visit_if(ctx__built_in_function || ctx__function_ref)
1065
- parameters = visit_if(ctx__actual_parameter_list, [])
1067
+ parameters = visit_if(ctx__actual_parameter_list, nil)
1066
1068
 
1067
1069
  Model::Expressions::FunctionCall.new(
1068
1070
  function: function,
@@ -14,7 +14,7 @@ module Expressir
14
14
  end
15
15
 
16
16
  def parameters
17
- return [] unless @model.parameters
17
+ return nil unless @model.parameters
18
18
 
19
19
  @model.parameters.map do |item|
20
20
  drop_klass_by_model(item)
@@ -12,7 +12,7 @@ module Expressir
12
12
  # @option options [Array<Expression>] :parameters
13
13
  def initialize(options = {})
14
14
  @function = options[:function]
15
- @parameters = options[:parameters] || []
15
+ @parameters = options[:parameters]
16
16
 
17
17
  super
18
18
  end
@@ -1,3 +1,3 @@
1
1
  module Expressir
2
- VERSION = "2.1.6".freeze
2
+ VERSION = "2.1.8".freeze
3
3
  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.1.6
4
+ version: 2.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-12-10 00:00:00.000000000 Z
11
+ date: 2025-01-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: liquid
@@ -261,7 +261,7 @@ metadata:
261
261
  source_code_uri: https://github.com/lutaml/expressir
262
262
  changelog_uri: https://github.com/lutaml/expressir/releases
263
263
  rubygems_mfa_required: 'true'
264
- post_install_message:
264
+ post_install_message:
265
265
  rdoc_options: []
266
266
  require_paths:
267
267
  - lib
@@ -277,7 +277,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
277
277
  version: '0'
278
278
  requirements: []
279
279
  rubygems_version: 3.3.27
280
- signing_key:
280
+ signing_key:
281
281
  specification_version: 4
282
282
  summary: EXPRESS parser and toolkit for Ruby
283
283
  test_files: []