expressir 0.2.17-arm64-darwin → 0.2.25-arm64-darwin

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 (94) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake.yml +5 -0
  3. data/.github/workflows/release.yml +31 -3
  4. data/README.adoc +3 -3
  5. data/exe/format +45 -29
  6. data/lib/expressir/express_exp/2.4/express_parser.bundle +0 -0
  7. data/lib/expressir/express_exp/2.5/express_parser.bundle +0 -0
  8. data/lib/expressir/express_exp/2.6/express_parser.bundle +0 -0
  9. data/lib/expressir/express_exp/2.7/express_parser.bundle +0 -0
  10. data/lib/expressir/express_exp/3.0/express_parser.bundle +0 -0
  11. data/lib/expressir/express_exp/cache.rb +48 -0
  12. data/lib/expressir/express_exp/formatter.rb +2 -2
  13. data/lib/expressir/express_exp/hyperlink_formatter.rb +10 -15
  14. data/lib/expressir/express_exp/model_visitor.rb +23 -0
  15. data/lib/expressir/express_exp/parser.rb +18 -3
  16. data/lib/expressir/express_exp/resolve_references_model_visitor.rb +33 -0
  17. data/lib/expressir/express_exp/visitor.rb +19 -18
  18. data/lib/expressir/model.rb +3 -1
  19. data/lib/expressir/model/attribute.rb +12 -5
  20. data/lib/expressir/model/cache.rb +13 -0
  21. data/lib/expressir/model/constant.rb +9 -2
  22. data/lib/expressir/model/entity.rb +10 -8
  23. data/lib/expressir/model/enumeration_item.rb +7 -0
  24. data/lib/expressir/model/expressions/aggregate_initializer.rb +1 -1
  25. data/lib/expressir/model/expressions/aggregate_item.rb +2 -2
  26. data/lib/expressir/model/expressions/attribute_reference.rb +2 -2
  27. data/lib/expressir/model/expressions/binary_expression.rb +3 -3
  28. data/lib/expressir/model/expressions/call.rb +2 -2
  29. data/lib/expressir/model/expressions/entity_constructor.rb +2 -2
  30. data/lib/expressir/model/expressions/group_reference.rb +2 -2
  31. data/lib/expressir/model/expressions/index_reference.rb +3 -3
  32. data/lib/expressir/model/expressions/interval.rb +5 -5
  33. data/lib/expressir/model/expressions/query_expression.rb +5 -3
  34. data/lib/expressir/model/expressions/simple_reference.rb +5 -1
  35. data/lib/expressir/model/expressions/unary_expression.rb +2 -2
  36. data/lib/expressir/model/function.rb +13 -11
  37. data/lib/expressir/model/identifier.rb +6 -3
  38. data/lib/expressir/model/interface.rb +3 -3
  39. data/lib/expressir/model/interface_item.rb +2 -2
  40. data/lib/expressir/model/interfaced_item.rb +9 -8
  41. data/lib/expressir/model/literals/binary.rb +1 -1
  42. data/lib/expressir/model/literals/integer.rb +1 -1
  43. data/lib/expressir/model/literals/logical.rb +1 -1
  44. data/lib/expressir/model/literals/real.rb +1 -1
  45. data/lib/expressir/model/literals/string.rb +2 -2
  46. data/lib/expressir/model/model_element.rb +46 -21
  47. data/lib/expressir/model/parameter.rb +9 -2
  48. data/lib/expressir/model/procedure.rb +12 -10
  49. data/lib/expressir/model/{informal_proposition.rb → remark_item.rb} +3 -6
  50. data/lib/expressir/model/repository.rb +1 -1
  51. data/lib/expressir/model/rule.rb +14 -12
  52. data/lib/expressir/model/schema.rb +13 -11
  53. data/lib/expressir/model/statements/alias.rb +5 -3
  54. data/lib/expressir/model/statements/assignment.rb +2 -2
  55. data/lib/expressir/model/statements/call.rb +2 -2
  56. data/lib/expressir/model/statements/case.rb +3 -3
  57. data/lib/expressir/model/statements/case_action.rb +2 -2
  58. data/lib/expressir/model/statements/compound.rb +1 -1
  59. data/lib/expressir/model/statements/if.rb +3 -3
  60. data/lib/expressir/model/statements/repeat.rb +9 -7
  61. data/lib/expressir/model/statements/return.rb +1 -1
  62. data/lib/expressir/model/subtype_constraint.rb +11 -4
  63. data/lib/expressir/model/type.rb +6 -4
  64. data/lib/expressir/model/types/aggregate.rb +8 -1
  65. data/lib/expressir/model/types/array.rb +5 -5
  66. data/lib/expressir/model/types/bag.rb +3 -3
  67. data/lib/expressir/model/types/binary.rb +2 -2
  68. data/lib/expressir/model/types/enumeration.rb +4 -4
  69. data/lib/expressir/model/types/generic.rb +7 -0
  70. data/lib/expressir/model/types/generic_entity.rb +7 -0
  71. data/lib/expressir/model/types/list.rb +4 -4
  72. data/lib/expressir/model/types/real.rb +1 -1
  73. data/lib/expressir/model/types/select.rb +5 -5
  74. data/lib/expressir/model/types/set.rb +3 -3
  75. data/lib/expressir/model/types/string.rb +2 -2
  76. data/lib/expressir/model/unique.rb +8 -1
  77. data/lib/expressir/model/variable.rb +9 -2
  78. data/lib/expressir/model/where.rb +8 -1
  79. data/lib/expressir/version.rb +1 -1
  80. data/original/examples/syntax/multiple.yaml +18 -0
  81. data/original/examples/syntax/remark.exp +12 -10
  82. data/original/examples/syntax/remark.yaml +24 -3
  83. data/original/examples/syntax/remark_formatted.exp +3 -1
  84. data/original/examples/syntax/single.exp +1 -0
  85. data/original/examples/syntax/single.yaml +7 -0
  86. data/original/examples/syntax/single_formatted.exp +4 -0
  87. data/original/examples/syntax/single_formatted.yaml +15 -0
  88. data/original/examples/syntax/syntax.yaml +82 -0
  89. data/original/examples/syntax/syntax_hyperlink_formatted.exp +902 -0
  90. data/spec/expressir/express_exp/cache_spec.rb +64 -0
  91. data/spec/expressir/express_exp/formatter_spec.rb +17 -0
  92. data/spec/expressir/express_exp/parser_spec.rb +9 -9
  93. data/spec/expressir/model/model_element_spec.rb +32 -29
  94. metadata +9 -3
@@ -1,5 +1,7 @@
1
1
  require 'expressir/model/model_element'
2
2
 
3
+ require 'expressir/model/cache'
4
+
3
5
  require 'expressir/model/identifier'
4
6
 
5
7
  require 'expressir/model/attribute'
@@ -7,12 +9,12 @@ require 'expressir/model/constant'
7
9
  require 'expressir/model/entity'
8
10
  require 'expressir/model/enumeration_item'
9
11
  require 'expressir/model/function'
10
- require 'expressir/model/informal_proposition'
11
12
  require 'expressir/model/interface'
12
13
  require 'expressir/model/interface_item'
13
14
  require 'expressir/model/interfaced_item'
14
15
  require 'expressir/model/parameter'
15
16
  require 'expressir/model/procedure'
17
+ require 'expressir/model/remark_item'
16
18
  require 'expressir/model/repository'
17
19
  require 'expressir/model/rule'
18
20
  require 'expressir/model/schema'
@@ -7,15 +7,16 @@ module Expressir
7
7
  DERIVED = :DERIVED
8
8
  INVERSE = :INVERSE
9
9
 
10
- attr_accessor :kind
11
- attr_accessor :supertype_attribute
12
- attr_accessor :optional
13
- attr_accessor :type
14
- attr_accessor :expression
10
+ model_attr_accessor :kind
11
+ model_attr_accessor :supertype_attribute
12
+ model_attr_accessor :optional
13
+ model_attr_accessor :type
14
+ model_attr_accessor :expression
15
15
 
16
16
  def initialize(options = {})
17
17
  @id = options[:id]
18
18
  @remarks = options.fetch(:remarks, [])
19
+ @remark_items = options.fetch(:remark_items, [])
19
20
  @source = options[:source]
20
21
 
21
22
  @kind = options[:kind]
@@ -26,6 +27,12 @@ module Expressir
26
27
 
27
28
  super
28
29
  end
30
+
31
+ def children
32
+ [
33
+ *remark_items
34
+ ]
35
+ end
29
36
  end
30
37
  end
31
38
  end
@@ -0,0 +1,13 @@
1
+ module Expressir
2
+ module Model
3
+ class Cache < ModelElement
4
+ model_attr_accessor :version
5
+ model_attr_accessor :content
6
+
7
+ def initialize(options = {})
8
+ @version = options[:version]
9
+ @content = options[:content]
10
+ end
11
+ end
12
+ end
13
+ end
@@ -3,12 +3,13 @@ module Expressir
3
3
  class Constant < ModelElement
4
4
  include Identifier
5
5
 
6
- attr_accessor :type
7
- attr_accessor :expression
6
+ model_attr_accessor :type
7
+ model_attr_accessor :expression
8
8
 
9
9
  def initialize(options = {})
10
10
  @id = options[:id]
11
11
  @remarks = options.fetch(:remarks, [])
12
+ @remark_items = options.fetch(:remark_items, [])
12
13
  @source = options[:source]
13
14
 
14
15
  @type = options[:type]
@@ -16,6 +17,12 @@ module Expressir
16
17
 
17
18
  super
18
19
  end
20
+
21
+ def children
22
+ [
23
+ *remark_items
24
+ ]
25
+ end
19
26
  end
20
27
  end
21
28
  end
@@ -3,17 +3,18 @@ module Expressir
3
3
  class Entity < ModelElement
4
4
  include Identifier
5
5
 
6
- attr_accessor :abstract
7
- attr_accessor :supertype_expression
8
- attr_accessor :subtype_of
9
- attr_accessor :attributes
10
- attr_accessor :unique
11
- attr_accessor :where
12
- attr_accessor :informal_propositions
6
+ model_attr_accessor :abstract
7
+ model_attr_accessor :supertype_expression
8
+ model_attr_accessor :subtype_of
9
+ model_attr_accessor :attributes
10
+ model_attr_accessor :unique
11
+ model_attr_accessor :where
12
+ model_attr_accessor :informal_propositions
13
13
 
14
14
  def initialize(options = {})
15
15
  @id = options[:id]
16
16
  @remarks = options.fetch(:remarks, [])
17
+ @remark_items = options.fetch(:remark_items, [])
17
18
  @source = options[:source]
18
19
 
19
20
  @abstract = options[:abstract]
@@ -32,7 +33,8 @@ module Expressir
32
33
  *attributes,
33
34
  *unique,
34
35
  *where,
35
- *informal_propositions
36
+ *informal_propositions,
37
+ *remark_items
36
38
  ]
37
39
  end
38
40
  end
@@ -6,10 +6,17 @@ module Expressir
6
6
  def initialize(options = {})
7
7
  @id = options[:id]
8
8
  @remarks = options.fetch(:remarks, [])
9
+ @remark_items = options.fetch(:remark_items, [])
9
10
  @source = options[:source]
10
11
 
11
12
  super
12
13
  end
14
+
15
+ def children
16
+ [
17
+ *remark_items
18
+ ]
19
+ end
13
20
  end
14
21
  end
15
22
  end
@@ -2,7 +2,7 @@ module Expressir
2
2
  module Model
3
3
  module Expressions
4
4
  class AggregateInitializer < ModelElement
5
- attr_accessor :items
5
+ model_attr_accessor :items
6
6
 
7
7
  def initialize(options = {})
8
8
  @items = options.fetch(:items, [])
@@ -2,8 +2,8 @@ module Expressir
2
2
  module Model
3
3
  module Expressions
4
4
  class AggregateItem < ModelElement
5
- attr_accessor :expression
6
- attr_accessor :repetition
5
+ model_attr_accessor :expression
6
+ model_attr_accessor :repetition
7
7
 
8
8
  def initialize(options = {})
9
9
  @expression = options[:expression]
@@ -2,8 +2,8 @@ module Expressir
2
2
  module Model
3
3
  module Expressions
4
4
  class AttributeReference < ModelElement
5
- attr_accessor :ref
6
- attr_accessor :attribute
5
+ model_attr_accessor :ref
6
+ model_attr_accessor :attribute
7
7
 
8
8
  def initialize(options = {})
9
9
  @ref = options[:ref]
@@ -25,9 +25,9 @@ module Expressir
25
25
  SUBTRACTION = :SUBTRACTION
26
26
  XOR = :XOR
27
27
 
28
- attr_accessor :operator
29
- attr_accessor :operand1
30
- attr_accessor :operand2
28
+ model_attr_accessor :operator
29
+ model_attr_accessor :operand1
30
+ model_attr_accessor :operand2
31
31
 
32
32
  def initialize(options = {})
33
33
  @operator = options[:operator]
@@ -2,8 +2,8 @@ module Expressir
2
2
  module Model
3
3
  module Expressions
4
4
  class Call < ModelElement
5
- attr_accessor :ref
6
- attr_accessor :parameters
5
+ model_attr_accessor :ref
6
+ model_attr_accessor :parameters
7
7
 
8
8
  def initialize(options = {})
9
9
  @ref = options[:ref]
@@ -2,8 +2,8 @@ module Expressir
2
2
  module Model
3
3
  module Expressions
4
4
  class EntityConstructor < ModelElement
5
- attr_accessor :entity
6
- attr_accessor :parameters
5
+ model_attr_accessor :entity
6
+ model_attr_accessor :parameters
7
7
 
8
8
  def initialize(options = {})
9
9
  @entity = options[:entity]
@@ -2,8 +2,8 @@ module Expressir
2
2
  module Model
3
3
  module Expressions
4
4
  class GroupReference < ModelElement
5
- attr_accessor :ref
6
- attr_accessor :entity
5
+ model_attr_accessor :ref
6
+ model_attr_accessor :entity
7
7
 
8
8
  def initialize(options = {})
9
9
  @ref = options[:ref]
@@ -2,9 +2,9 @@ module Expressir
2
2
  module Model
3
3
  module Expressions
4
4
  class IndexReference < ModelElement
5
- attr_accessor :ref
6
- attr_accessor :index1
7
- attr_accessor :index2
5
+ model_attr_accessor :ref
6
+ model_attr_accessor :index1
7
+ model_attr_accessor :index2
8
8
 
9
9
  def initialize(options = {})
10
10
  @ref = options[:ref]
@@ -2,11 +2,11 @@ module Expressir
2
2
  module Model
3
3
  module Expressions
4
4
  class Interval < ModelElement
5
- attr_accessor :low
6
- attr_accessor :operator1
7
- attr_accessor :item
8
- attr_accessor :operator2
9
- attr_accessor :high
5
+ model_attr_accessor :low
6
+ model_attr_accessor :operator1
7
+ model_attr_accessor :item
8
+ model_attr_accessor :operator2
9
+ model_attr_accessor :high
10
10
 
11
11
  def initialize(options = {})
12
12
  @low = options[:low]
@@ -4,12 +4,13 @@ module Expressir
4
4
  class QueryExpression < ModelElement
5
5
  include Identifier
6
6
 
7
- attr_accessor :aggregate_source
8
- attr_accessor :expression
7
+ model_attr_accessor :aggregate_source
8
+ model_attr_accessor :expression
9
9
 
10
10
  def initialize(options = {})
11
11
  @id = options[:id]
12
12
  @remarks = options.fetch(:remarks, [])
13
+ @remark_items = options.fetch(:remark_items, [])
13
14
  @source = options[:source]
14
15
 
15
16
  @aggregate_source = options[:aggregate_source]
@@ -20,7 +21,8 @@ module Expressir
20
21
 
21
22
  def children
22
23
  [
23
- self
24
+ self,
25
+ *remark_items
24
26
  ]
25
27
  end
26
28
  end
@@ -2,11 +2,15 @@ module Expressir
2
2
  module Model
3
3
  module Expressions
4
4
  class SimpleReference < ModelElement
5
- attr_accessor :id
5
+ model_attr_accessor :id
6
+
7
+ model_attr_accessor :base_path
6
8
 
7
9
  def initialize(options = {})
8
10
  @id = options[:id]
9
11
 
12
+ @base_path = options[:base_path]
13
+
10
14
  super
11
15
  end
12
16
  end
@@ -6,8 +6,8 @@ module Expressir
6
6
  NOT = :NOT
7
7
  PLUS = :PLUS
8
8
 
9
- attr_accessor :operator
10
- attr_accessor :operand
9
+ model_attr_accessor :operator
10
+ model_attr_accessor :operand
11
11
 
12
12
  def initialize(options = {})
13
13
  @operator = options[:operator]
@@ -3,20 +3,21 @@ module Expressir
3
3
  class Function < ModelElement
4
4
  include Identifier
5
5
 
6
- attr_accessor :parameters
7
- attr_accessor :return_type
8
- attr_accessor :types
9
- attr_accessor :entities
10
- attr_accessor :subtype_constraints
11
- attr_accessor :functions
12
- attr_accessor :procedures
13
- attr_accessor :constants
14
- attr_accessor :variables
15
- attr_accessor :statements
6
+ model_attr_accessor :parameters
7
+ model_attr_accessor :return_type
8
+ model_attr_accessor :types
9
+ model_attr_accessor :entities
10
+ model_attr_accessor :subtype_constraints
11
+ model_attr_accessor :functions
12
+ model_attr_accessor :procedures
13
+ model_attr_accessor :constants
14
+ model_attr_accessor :variables
15
+ model_attr_accessor :statements
16
16
 
17
17
  def initialize(options = {})
18
18
  @id = options[:id]
19
19
  @remarks = options.fetch(:remarks, [])
20
+ @remark_items = options.fetch(:remark_items, [])
20
21
  @source = options[:source]
21
22
 
22
23
  @parameters = options.fetch(:parameters, [])
@@ -47,7 +48,8 @@ module Expressir
47
48
  *functions,
48
49
  *procedures,
49
50
  *constants,
50
- *variables
51
+ *variables,
52
+ *remark_items
51
53
  ]
52
54
  end
53
55
  end
@@ -1,9 +1,12 @@
1
1
  module Expressir
2
2
  module Model
3
3
  module Identifier
4
- attr_accessor :id
5
- attr_accessor :remarks
6
- attr_accessor :source
4
+ def self.included(mod)
5
+ mod.model_attr_accessor :id
6
+ mod.model_attr_accessor :remarks
7
+ mod.model_attr_accessor :remark_items
8
+ mod.model_attr_accessor :source
9
+ end
7
10
  end
8
11
  end
9
12
  end
@@ -4,9 +4,9 @@ module Expressir
4
4
  USE = :USE
5
5
  REFERENCE = :REFERENCE
6
6
 
7
- attr_accessor :kind
8
- attr_accessor :schema
9
- attr_accessor :items
7
+ model_attr_accessor :kind
8
+ model_attr_accessor :schema
9
+ model_attr_accessor :items
10
10
 
11
11
  def initialize(options = {})
12
12
  @kind = options[:kind]
@@ -1,8 +1,8 @@
1
1
  module Expressir
2
2
  module Model
3
3
  class InterfaceItem < ModelElement
4
- attr_accessor :ref
5
- attr_accessor :id
4
+ model_attr_accessor :ref
5
+ model_attr_accessor :id
6
6
 
7
7
  def initialize(options = {})
8
8
  @ref = options[:ref]
@@ -1,25 +1,26 @@
1
1
  module Expressir
2
2
  module Model
3
3
  class InterfacedItem < ModelElement
4
- include Identifier
4
+ model_attr_accessor :id
5
+ model_attr_accessor :remarks
6
+ model_attr_accessor :remark_items
5
7
 
6
- undef :source
7
- undef :source=
8
-
9
- attr_accessor :base_item
8
+ model_attr_accessor :base_item
10
9
 
11
10
  def initialize(options = {})
12
11
  @id = options[:id]
13
12
  @remarks = options.fetch(:remarks, [])
14
- # @source = options[:source]
13
+ @remark_items = options.fetch(:remark_items, [])
15
14
 
16
15
  @base_item = options[:base_item]
17
16
 
18
17
  super
19
18
  end
20
19
 
21
- def path
22
- base_item.path
20
+ def children
21
+ [
22
+ *remark_items
23
+ ]
23
24
  end
24
25
  end
25
26
  end