expressir 2.1.6 → 2.1.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a9c09d989cf664f6fb54d70d6d94c8faed0174d1123ff510999650185d465be0
4
- data.tar.gz: 51473be1f440a3e7ac4d3542be23d0061c283b7d645be197fba0f0f10b3e7bcb
3
+ metadata.gz: a6581a76699cdae03a6f241de18d11d2e203b05217cde67c11b3c8eff2a46471
4
+ data.tar.gz: eb4f57c1ca685146d1df2c6cc38ef8564399f95bd90b90d42a00a4577b1bc283
5
5
  SHA512:
6
- metadata.gz: 26fe94a7dce80fdce7103dcd92b7498e6cb777de874f9449b88035152115c11cf4bab70c9720d14c22070517a7378b9d77034cb4e76e3eed29a16e21257ddbe7
7
- data.tar.gz: 7197262c7eba33aa9272bd427f1ba392a4e71da2eb930ce2867e9693172efc98916cd4b00029c7a2d40467226fedb8c38313b54d3d7373e925fbbe90efb446ff
6
+ metadata.gz: a5ab59cc6adf7a3062cb862641bdbd31e3540892c7ddc07b495edc082a2cba09e2a20701d7699e01971bb49dc333ec9905b74a43ee1e6d8a583b5a3215728cc7
7
+ data.tar.gz: df94efe4eacc86b5fea8d313737031dcb022552c748aca9b57ee5574305e68e560a4561f32293302afa528cfb7c7e4c52de2e820d375886c77459bc8b917cded
@@ -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.7".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.7
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-23 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: []