expressir 0.2.18 → 0.2.26

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 (96) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake.yml +7 -1
  3. data/.github/workflows/release.yml +31 -3
  4. data/README.adoc +3 -3
  5. data/exe/format +2 -49
  6. data/exe/format-test +81 -0
  7. data/ext/express-parser/extconf.rb +2 -0
  8. data/lib/expressir/express_exp/cache.rb +48 -0
  9. data/lib/expressir/express_exp/formatter.rb +2 -2
  10. data/lib/expressir/express_exp/hyperlink_formatter.rb +10 -15
  11. data/lib/expressir/express_exp/model_visitor.rb +23 -0
  12. data/lib/expressir/express_exp/parser.rb +14 -6
  13. data/lib/expressir/express_exp/resolve_references_model_visitor.rb +29 -0
  14. data/lib/expressir/express_exp/visitor.rb +19 -18
  15. data/lib/expressir/model.rb +3 -1
  16. data/lib/expressir/model/attribute.rb +12 -5
  17. data/lib/expressir/model/cache.rb +13 -0
  18. data/lib/expressir/model/constant.rb +9 -2
  19. data/lib/expressir/model/entity.rb +10 -8
  20. data/lib/expressir/model/enumeration_item.rb +7 -0
  21. data/lib/expressir/model/expressions/aggregate_initializer.rb +1 -1
  22. data/lib/expressir/model/expressions/aggregate_item.rb +2 -2
  23. data/lib/expressir/model/expressions/attribute_reference.rb +2 -2
  24. data/lib/expressir/model/expressions/binary_expression.rb +3 -3
  25. data/lib/expressir/model/expressions/call.rb +2 -2
  26. data/lib/expressir/model/expressions/entity_constructor.rb +2 -2
  27. data/lib/expressir/model/expressions/group_reference.rb +2 -2
  28. data/lib/expressir/model/expressions/index_reference.rb +3 -3
  29. data/lib/expressir/model/expressions/interval.rb +5 -5
  30. data/lib/expressir/model/expressions/query_expression.rb +5 -3
  31. data/lib/expressir/model/expressions/simple_reference.rb +5 -1
  32. data/lib/expressir/model/expressions/unary_expression.rb +2 -2
  33. data/lib/expressir/model/function.rb +13 -11
  34. data/lib/expressir/model/identifier.rb +6 -3
  35. data/lib/expressir/model/interface.rb +3 -3
  36. data/lib/expressir/model/interface_item.rb +2 -2
  37. data/lib/expressir/model/interfaced_item.rb +9 -8
  38. data/lib/expressir/model/literals/binary.rb +1 -1
  39. data/lib/expressir/model/literals/integer.rb +1 -1
  40. data/lib/expressir/model/literals/logical.rb +1 -1
  41. data/lib/expressir/model/literals/real.rb +1 -1
  42. data/lib/expressir/model/literals/string.rb +2 -2
  43. data/lib/expressir/model/model_element.rb +47 -26
  44. data/lib/expressir/model/parameter.rb +9 -2
  45. data/lib/expressir/model/procedure.rb +12 -10
  46. data/lib/expressir/model/{informal_proposition.rb → remark_item.rb} +3 -6
  47. data/lib/expressir/model/repository.rb +1 -1
  48. data/lib/expressir/model/rule.rb +14 -12
  49. data/lib/expressir/model/schema.rb +15 -11
  50. data/lib/expressir/model/statements/alias.rb +5 -3
  51. data/lib/expressir/model/statements/assignment.rb +2 -2
  52. data/lib/expressir/model/statements/call.rb +2 -2
  53. data/lib/expressir/model/statements/case.rb +3 -3
  54. data/lib/expressir/model/statements/case_action.rb +2 -2
  55. data/lib/expressir/model/statements/compound.rb +1 -1
  56. data/lib/expressir/model/statements/if.rb +3 -3
  57. data/lib/expressir/model/statements/repeat.rb +9 -7
  58. data/lib/expressir/model/statements/return.rb +1 -1
  59. data/lib/expressir/model/subtype_constraint.rb +11 -4
  60. data/lib/expressir/model/type.rb +6 -4
  61. data/lib/expressir/model/types/aggregate.rb +8 -1
  62. data/lib/expressir/model/types/array.rb +5 -5
  63. data/lib/expressir/model/types/bag.rb +3 -3
  64. data/lib/expressir/model/types/binary.rb +2 -2
  65. data/lib/expressir/model/types/enumeration.rb +4 -4
  66. data/lib/expressir/model/types/generic.rb +7 -0
  67. data/lib/expressir/model/types/generic_entity.rb +7 -0
  68. data/lib/expressir/model/types/list.rb +4 -4
  69. data/lib/expressir/model/types/real.rb +1 -1
  70. data/lib/expressir/model/types/select.rb +5 -5
  71. data/lib/expressir/model/types/set.rb +3 -3
  72. data/lib/expressir/model/types/string.rb +2 -2
  73. data/lib/expressir/model/unique.rb +8 -1
  74. data/lib/expressir/model/variable.rb +9 -2
  75. data/lib/expressir/model/where.rb +8 -1
  76. data/lib/expressir/version.rb +1 -1
  77. data/original/examples/syntax/multiple.exp +1 -1
  78. data/original/examples/syntax/multiple.yaml +19 -5
  79. data/original/examples/syntax/multiple_formatted.exp +1 -1
  80. data/original/examples/syntax/multiple_hyperlink_formatted.exp +4 -4
  81. data/original/examples/syntax/multiple_schema_head_hyperlink_formatted.exp +1 -1
  82. data/original/examples/syntax/remark.exp +12 -10
  83. data/original/examples/syntax/remark.yaml +24 -4
  84. data/original/examples/syntax/remark_formatted.exp +3 -1
  85. data/original/examples/syntax/single.exp +1 -0
  86. data/original/examples/syntax/single.yaml +7 -1
  87. data/original/examples/syntax/single_formatted.exp +4 -0
  88. data/original/examples/syntax/single_formatted.yaml +15 -1
  89. data/original/examples/syntax/syntax.yaml +82 -1
  90. data/original/examples/syntax/syntax_hyperlink_formatted.exp +902 -0
  91. data/spec/expressir/express_exp/cache_spec.rb +64 -0
  92. data/spec/expressir/express_exp/formatter_spec.rb +16 -0
  93. data/spec/expressir/express_exp/parser_spec.rb +10 -33
  94. data/spec/expressir/model/model_element_spec.rb +82 -44
  95. metadata +10 -4
  96. data/original/examples/syntax/single_root_path.yaml +0 -9
@@ -0,0 +1,64 @@
1
+ require "yaml"
2
+ require "tempfile"
3
+ require "spec_helper"
4
+ require "expressir/express_exp/parser"
5
+ require "expressir/express_exp/cache"
6
+
7
+ RSpec.describe Expressir::ExpressExp::Cache do
8
+ TEST_VERSION = "0.0.0"
9
+
10
+ describe ".to_file" do
11
+ it "exports an object" do
12
+ temp_file = Tempfile.new
13
+
14
+ repository = Expressir::Model::Repository.new
15
+
16
+ begin
17
+ Expressir::ExpressExp::Cache.to_file(temp_file, repository, test_overwrite_version: TEST_VERSION)
18
+
19
+ size = File.size(temp_file)
20
+
21
+ expect(size).to be > 0
22
+ ensure
23
+ temp_file.close
24
+ temp_file.unlink
25
+ end
26
+ end
27
+ end
28
+
29
+ describe ".from_file" do
30
+ it "parses a file" do
31
+ temp_file = Tempfile.new
32
+
33
+ repository = Expressir::Model::Repository.new
34
+
35
+ begin
36
+ Expressir::ExpressExp::Cache.to_file(temp_file, repository, test_overwrite_version: TEST_VERSION)
37
+
38
+ result = Expressir::ExpressExp::Cache.from_file(temp_file, test_overwrite_version: TEST_VERSION)
39
+
40
+ expect(result).to be_instance_of(Expressir::Model::Repository)
41
+ ensure
42
+ temp_file.close
43
+ temp_file.unlink
44
+ end
45
+ end
46
+
47
+ it "fails parsing a file from a different Expressir version" do
48
+ temp_file = Tempfile.new
49
+
50
+ repository = Expressir::Model::Repository.new
51
+
52
+ begin
53
+ Expressir::ExpressExp::Cache.to_file(temp_file, repository, test_overwrite_version: TEST_VERSION)
54
+
55
+ expect do
56
+ Expressir::ExpressExp::Cache.from_file(temp_file)
57
+ end.to raise_error(Expressir::ExpressExp::CacheLoadError)
58
+ ensure
59
+ temp_file.close
60
+ temp_file.unlink
61
+ end
62
+ end
63
+ end
64
+ end
@@ -75,6 +75,22 @@ RSpec.describe Expressir::ExpressExp::Formatter do
75
75
  expect(result).to eq(expected_result)
76
76
  end
77
77
 
78
+ it "exports an object with hyperlink formatter (syntax.exp)" do
79
+ exp_file = Expressir.root_path.join("original", "examples", "syntax", "syntax.exp")
80
+ formatted_exp_file = Expressir.root_path.join("original", "examples", "syntax", "syntax_hyperlink_formatted.exp")
81
+
82
+ repo = Expressir::ExpressExp::Parser.from_file(exp_file)
83
+
84
+ formatter = Class.new(Expressir::ExpressExp::Formatter) do
85
+ include Expressir::ExpressExp::HyperlinkFormatter
86
+ end
87
+ result = formatter.format(repo)
88
+ # File.write(formatted_exp_file, result)
89
+ expected_result = File.read(formatted_exp_file)
90
+
91
+ expect(result).to eq(expected_result)
92
+ end
93
+
78
94
  it "exports an object with hyperlink formatter (multiple.exp)" do
79
95
  exp_file = Expressir.root_path.join("original", "examples", "syntax", "multiple.exp")
80
96
  formatted_exp_file = Expressir.root_path.join("original", "examples", "syntax", "multiple_hyperlink_formatted.exp")
@@ -9,7 +9,7 @@ RSpec.describe Expressir::ExpressExp::Parser do
9
9
  yaml_file = Expressir.root_path.join("original", "examples", "syntax", "single.yaml")
10
10
 
11
11
  repo = Expressir::ExpressExp::Parser.from_file(exp_file)
12
- result = YAML.dump(repo.to_hash(skip_empty: true))
12
+ result = YAML.dump(repo.to_hash(root_path: Expressir.root_path, skip_empty: true))
13
13
  # File.write(yaml_file, result)
14
14
  expected_result = File.read(yaml_file)
15
15
 
@@ -21,7 +21,7 @@ RSpec.describe Expressir::ExpressExp::Parser do
21
21
  yaml_file = Expressir.root_path.join("original", "examples", "syntax", "multiple.yaml")
22
22
 
23
23
  repo = Expressir::ExpressExp::Parser.from_file(exp_file)
24
- result = YAML.dump(repo.to_hash(skip_empty: true))
24
+ result = YAML.dump(repo.to_hash(root_path: Expressir.root_path, skip_empty: true))
25
25
  # File.write(yaml_file, result)
26
26
  expected_result = File.read(yaml_file)
27
27
 
@@ -33,7 +33,7 @@ RSpec.describe Expressir::ExpressExp::Parser do
33
33
  yaml_file = Expressir.root_path.join("original", "examples", "syntax", "syntax.yaml")
34
34
 
35
35
  repo = Expressir::ExpressExp::Parser.from_file(exp_file)
36
- result = YAML.dump(repo.to_hash(skip_empty: true))
36
+ result = YAML.dump(repo.to_hash(root_path: Expressir.root_path, skip_empty: true))
37
37
  # File.write(yaml_file, result)
38
38
  expected_result = File.read(yaml_file)
39
39
 
@@ -45,7 +45,7 @@ RSpec.describe Expressir::ExpressExp::Parser do
45
45
  yaml_file = Expressir.root_path.join("original", "examples", "syntax", "remark.yaml")
46
46
 
47
47
  repo = Expressir::ExpressExp::Parser.from_file(exp_file)
48
- result = YAML.dump(repo.to_hash(skip_empty: true))
48
+ result = YAML.dump(repo.to_hash(root_path: Expressir.root_path, skip_empty: true))
49
49
  # File.write(yaml_file, result)
50
50
  expected_result = File.read(yaml_file)
51
51
 
@@ -83,38 +83,15 @@ RSpec.describe Expressir::ExpressExp::Parser do
83
83
 
84
84
  schemas = repo.schemas
85
85
  expect(schemas.count).to eq(5)
86
- expect(schemas[0].file).to eq(exp_files[0].basename.to_s)
86
+ expect(schemas[0].file).to eq(exp_files[0].to_s)
87
87
  expect(schemas[0].id).to eq("single_schema")
88
- expect(schemas[1].file).to eq(exp_files[1].basename.to_s)
89
- expect(schemas[1].id).to eq("multiple_schema1")
90
- expect(schemas[2].file).to eq(exp_files[1].basename.to_s)
88
+ expect(schemas[1].file).to eq(exp_files[1].to_s)
89
+ expect(schemas[1].id).to eq("multiple_schema")
90
+ expect(schemas[2].file).to eq(exp_files[1].to_s)
91
91
  expect(schemas[2].id).to eq("multiple_schema2")
92
- expect(schemas[3].file).to eq(exp_files[1].basename.to_s)
92
+ expect(schemas[3].file).to eq(exp_files[1].to_s)
93
93
  expect(schemas[3].id).to eq("multiple_schema3")
94
- expect(schemas[4].file).to eq(exp_files[1].basename.to_s)
95
- expect(schemas[4].id).to eq("multiple_schema4")
96
- end
97
-
98
- it "parses multiple files with a root path (single.exp, multiple.exp)" do
99
- exp_files = [
100
- Expressir.root_path.join("original", "examples", "syntax", "single.exp"),
101
- Expressir.root_path.join("original", "examples", "syntax", "multiple.exp")
102
- ]
103
- root_path = Expressir.root_path
104
-
105
- repo = Expressir::ExpressExp::Parser.from_files(exp_files, root_path: root_path)
106
-
107
- schemas = repo.schemas
108
- expect(schemas.count).to eq(5)
109
- expect(schemas[0].file).to eq(exp_files[0].relative_path_from(root_path).to_s)
110
- expect(schemas[0].id).to eq("single_schema")
111
- expect(schemas[1].file).to eq(exp_files[1].relative_path_from(root_path).to_s)
112
- expect(schemas[1].id).to eq("multiple_schema1")
113
- expect(schemas[2].file).to eq(exp_files[1].relative_path_from(root_path).to_s)
114
- expect(schemas[2].id).to eq("multiple_schema2")
115
- expect(schemas[3].file).to eq(exp_files[1].relative_path_from(root_path).to_s)
116
- expect(schemas[3].id).to eq("multiple_schema3")
117
- expect(schemas[4].file).to eq(exp_files[1].relative_path_from(root_path).to_s)
94
+ expect(schemas[4].file).to eq(exp_files[1].to_s)
118
95
  expect(schemas[4].id).to eq("multiple_schema4")
119
96
  end
120
97
  end
@@ -6,27 +6,13 @@ require "expressir/express_exp/formatter"
6
6
 
7
7
  RSpec.describe Expressir::Model::ModelElement do
8
8
  describe ".to_hash" do
9
- it "exports an object with a root path (single.exp)" do
10
- exp_file = Expressir.root_path.join("original", "examples", "syntax", "single.exp")
11
- yaml_file = Expressir.root_path.join("original", "examples", "syntax", "single_root_path.yaml")
12
- root_path = Expressir.root_path
13
-
14
- repo = Expressir::ExpressExp::Parser.from_file(exp_file, root_path: root_path)
15
-
16
- result = YAML.dump(repo.to_hash(skip_empty: true))
17
- # File.write(yaml_file, result)
18
- expected_result = File.read(yaml_file)
19
-
20
- expect(result).to eq(expected_result)
21
- end
22
-
23
9
  it "exports an object with a formatter (single.exp)" do
24
10
  exp_file = Expressir.root_path.join("original", "examples", "syntax", "single.exp")
25
11
  yaml_file = Expressir.root_path.join("original", "examples", "syntax", "single_formatted.yaml")
26
12
 
27
13
  repo = Expressir::ExpressExp::Parser.from_file(exp_file)
28
14
 
29
- result = YAML.dump(repo.to_hash(formatter: Expressir::ExpressExp::Formatter, skip_empty: true))
15
+ result = YAML.dump(repo.to_hash(root_path: Expressir.root_path, formatter: Expressir::ExpressExp::Formatter, skip_empty: true))
30
16
  # File.write(yaml_file, result)
31
17
  expected_result = File.read(yaml_file)
32
18
 
@@ -39,9 +25,9 @@ RSpec.describe Expressir::Model::ModelElement do
39
25
  yaml_file = Expressir.root_path.join("original", "examples", "syntax", "single.yaml")
40
26
 
41
27
  input = YAML.load(File.read(yaml_file))
42
- repo = Expressir::Model::ModelElement.from_hash(input)
28
+ repo = Expressir::Model::ModelElement.from_hash(input, root_path: Expressir.root_path)
43
29
 
44
- result = YAML.dump(repo.to_hash(skip_empty: true))
30
+ result = YAML.dump(repo.to_hash(root_path: Expressir.root_path, skip_empty: true))
45
31
  expected_result = File.read(yaml_file)
46
32
 
47
33
  expect(result).to eq(expected_result)
@@ -51,9 +37,9 @@ RSpec.describe Expressir::Model::ModelElement do
51
37
  yaml_file = Expressir.root_path.join("original", "examples", "syntax", "multiple.yaml")
52
38
 
53
39
  input = YAML.load(File.read(yaml_file))
54
- repo = Expressir::Model::ModelElement.from_hash(input)
40
+ repo = Expressir::Model::ModelElement.from_hash(input, root_path: Expressir.root_path)
55
41
 
56
- result = YAML.dump(repo.to_hash(skip_empty: true))
42
+ result = YAML.dump(repo.to_hash(root_path: Expressir.root_path, skip_empty: true))
57
43
  expected_result = File.read(yaml_file)
58
44
 
59
45
  expect(result).to eq(expected_result)
@@ -63,9 +49,9 @@ RSpec.describe Expressir::Model::ModelElement do
63
49
  yaml_file = Expressir.root_path.join("original", "examples", "syntax", "syntax.yaml")
64
50
 
65
51
  input = YAML.load(File.read(yaml_file))
66
- repo = Expressir::Model::ModelElement.from_hash(input)
52
+ repo = Expressir::Model::ModelElement.from_hash(input, root_path: Expressir.root_path)
67
53
 
68
- result = YAML.dump(repo.to_hash(skip_empty: true))
54
+ result = YAML.dump(repo.to_hash(root_path: Expressir.root_path, skip_empty: true))
69
55
  expected_result = File.read(yaml_file)
70
56
 
71
57
  expect(result).to eq(expected_result)
@@ -75,9 +61,9 @@ RSpec.describe Expressir::Model::ModelElement do
75
61
  yaml_file = Expressir.root_path.join("original", "examples", "syntax", "remark.yaml")
76
62
 
77
63
  input = YAML.load(File.read(yaml_file))
78
- repo = Expressir::Model::ModelElement.from_hash(input)
64
+ repo = Expressir::Model::ModelElement.from_hash(input, root_path: Expressir.root_path)
79
65
 
80
- result = YAML.dump(repo.to_hash(skip_empty: true))
66
+ result = YAML.dump(repo.to_hash(root_path: Expressir.root_path, skip_empty: true))
81
67
  expected_result = File.read(yaml_file)
82
68
 
83
69
  expect(result).to eq(expected_result)
@@ -85,7 +71,57 @@ RSpec.describe Expressir::Model::ModelElement do
85
71
  end
86
72
 
87
73
  describe ".find" do
88
- it "finds an object" do
74
+ it "finds an object (single.exp)" do
75
+ exp_file = Expressir.root_path.join("original", "examples", "syntax", "single.exp")
76
+
77
+ repo = Expressir::ExpressExp::Parser.from_file(exp_file)
78
+
79
+ # universal scope
80
+ expect(repo.find('single_schema')).to be_instance_of(Expressir::Model::Schema)
81
+ expect(repo.find('single_schema.empty_entity')).to be_instance_of(Expressir::Model::Entity)
82
+
83
+ # schema scope
84
+ schema = repo.schemas.first
85
+ expect(schema.find('empty_entity')).to be_instance_of(Expressir::Model::Entity)
86
+ end
87
+
88
+ it "finds an object (multiple.exp)" do
89
+ exp_file = Expressir.root_path.join("original", "examples", "syntax", "multiple.exp")
90
+
91
+ repo = Expressir::ExpressExp::Parser.from_file(exp_file)
92
+
93
+ # universal scope
94
+ expect(repo.find('multiple_schema')).to be_instance_of(Expressir::Model::Schema)
95
+ expect(repo.find('multiple_schema.empty_entity')).to be_instance_of(Expressir::Model::Entity)
96
+ expect(repo.find('multiple_schema.attribute_entity')).to be_instance_of(Expressir::Model::Entity)
97
+ expect(repo.find('multiple_schema.attribute_entity2')).to be_instance_of(Expressir::Model::Entity)
98
+ expect(repo.find('multiple_schema.attribute_entity3')).to be_instance_of(Expressir::Model::Entity)
99
+ expect(repo.find('multiple_schema.attribute_entity4')).to be_instance_of(Expressir::Model::Entity)
100
+
101
+ # schema scope
102
+ schema = repo.schemas.first
103
+ expect(schema.find('empty_entity')).to be_instance_of(Expressir::Model::Entity)
104
+ expect(schema.find('attribute_entity')).to be_instance_of(Expressir::Model::Entity)
105
+ expect(schema.find('attribute_entity2')).to be_instance_of(Expressir::Model::Entity)
106
+ expect(schema.find('attribute_entity3')).to be_instance_of(Expressir::Model::Entity)
107
+ expect(schema.find('attribute_entity4')).to be_instance_of(Expressir::Model::Entity)
108
+ end
109
+
110
+ it "finds an object (syntax.exp)" do
111
+ exp_file = Expressir.root_path.join("original", "examples", "syntax", "syntax.exp")
112
+
113
+ repo = Expressir::ExpressExp::Parser.from_file(exp_file)
114
+
115
+ # universal scope
116
+ expect(repo.find('syntax_schema')).to be_instance_of(Expressir::Model::Schema)
117
+ expect(repo.find('syntax_schema.empty_entity')).to be_instance_of(Expressir::Model::Entity)
118
+
119
+ # schema scope
120
+ schema = repo.schemas.first
121
+ expect(schema.find('empty_entity')).to be_instance_of(Expressir::Model::Entity)
122
+ end
123
+
124
+ it "finds an object (remark.exp)" do
89
125
  exp_file = Expressir.root_path.join("original", "examples", "syntax", "remark.exp")
90
126
 
91
127
  repo = Expressir::ExpressExp::Parser.from_file(exp_file)
@@ -96,8 +132,8 @@ RSpec.describe Expressir::Model::ModelElement do
96
132
  expect(repo.find('remark_schema.remark_type')).to be_instance_of(Expressir::Model::Type)
97
133
  expect(repo.find('remark_schema.remark_type.WR1')).to be_instance_of(Expressir::Model::Where)
98
134
  expect(repo.find('remark_schema.remark_type.wr:WR1')).to be_instance_of(Expressir::Model::Where)
99
- expect(repo.find('remark_schema.remark_type.IP1')).to be_instance_of(Expressir::Model::InformalProposition)
100
- expect(repo.find('remark_schema.remark_type.ip:IP1')).to be_instance_of(Expressir::Model::InformalProposition)
135
+ expect(repo.find('remark_schema.remark_type.IP1')).to be_instance_of(Expressir::Model::RemarkItem)
136
+ expect(repo.find('remark_schema.remark_type.ip:IP1')).to be_instance_of(Expressir::Model::RemarkItem)
101
137
  expect(repo.find('remark_schema.remark_enumeration_item')).to be_instance_of(Expressir::Model::EnumerationItem)
102
138
  expect(repo.find('remark_schema.remark_entity')).to be_instance_of(Expressir::Model::Entity)
103
139
  expect(repo.find('remark_schema.remark_entity.remark_attribute')).to be_instance_of(Expressir::Model::Attribute)
@@ -106,8 +142,8 @@ RSpec.describe Expressir::Model::ModelElement do
106
142
  expect(repo.find('remark_schema.remark_entity.UR1')).to be_instance_of(Expressir::Model::Unique)
107
143
  expect(repo.find('remark_schema.remark_entity.WR1')).to be_instance_of(Expressir::Model::Where)
108
144
  expect(repo.find('remark_schema.remark_entity.wr:WR1')).to be_instance_of(Expressir::Model::Where)
109
- expect(repo.find('remark_schema.remark_entity.IP1')).to be_instance_of(Expressir::Model::InformalProposition)
110
- expect(repo.find('remark_schema.remark_entity.ip:IP1')).to be_instance_of(Expressir::Model::InformalProposition)
145
+ expect(repo.find('remark_schema.remark_entity.IP1')).to be_instance_of(Expressir::Model::RemarkItem)
146
+ expect(repo.find('remark_schema.remark_entity.ip:IP1')).to be_instance_of(Expressir::Model::RemarkItem)
111
147
  expect(repo.find('remark_schema.remark_subtype_constraint')).to be_instance_of(Expressir::Model::SubtypeConstraint)
112
148
  expect(repo.find('remark_schema.remark_function')).to be_instance_of(Expressir::Model::Function)
113
149
  expect(repo.find('remark_schema.remark_function.remark_parameter')).to be_instance_of(Expressir::Model::Parameter)
@@ -128,8 +164,9 @@ RSpec.describe Expressir::Model::ModelElement do
128
164
  expect(repo.find('remark_schema.remark_rule.remark_variable')).to be_instance_of(Expressir::Model::Variable)
129
165
  expect(repo.find('remark_schema.remark_rule.WR1')).to be_instance_of(Expressir::Model::Where)
130
166
  expect(repo.find('remark_schema.remark_rule.wr:WR1')).to be_instance_of(Expressir::Model::Where)
131
- expect(repo.find('remark_schema.remark_rule.IP1')).to be_instance_of(Expressir::Model::InformalProposition)
132
- expect(repo.find('remark_schema.remark_rule.ip:IP1')).to be_instance_of(Expressir::Model::InformalProposition)
167
+ expect(repo.find('remark_schema.remark_rule.IP1')).to be_instance_of(Expressir::Model::RemarkItem)
168
+ expect(repo.find('remark_schema.remark_rule.ip:IP1')).to be_instance_of(Expressir::Model::RemarkItem)
169
+ expect(repo.find('remark_schema.remark_item')).to be_instance_of(Expressir::Model::RemarkItem)
133
170
 
134
171
  # schema scope
135
172
  schema = repo.schemas.first
@@ -137,8 +174,8 @@ RSpec.describe Expressir::Model::ModelElement do
137
174
  expect(schema.find('remark_type')).to be_instance_of(Expressir::Model::Type)
138
175
  expect(schema.find('remark_type.WR1')).to be_instance_of(Expressir::Model::Where)
139
176
  expect(schema.find('remark_type.wr:WR1')).to be_instance_of(Expressir::Model::Where)
140
- expect(schema.find('remark_type.IP1')).to be_instance_of(Expressir::Model::InformalProposition)
141
- expect(schema.find('remark_type.ip:IP1')).to be_instance_of(Expressir::Model::InformalProposition)
177
+ expect(schema.find('remark_type.IP1')).to be_instance_of(Expressir::Model::RemarkItem)
178
+ expect(schema.find('remark_type.ip:IP1')).to be_instance_of(Expressir::Model::RemarkItem)
142
179
  expect(schema.find('remark_enumeration_item')).to be_instance_of(Expressir::Model::EnumerationItem)
143
180
  expect(schema.find('remark_entity')).to be_instance_of(Expressir::Model::Entity)
144
181
  expect(schema.find('remark_entity.remark_attribute')).to be_instance_of(Expressir::Model::Attribute)
@@ -147,8 +184,8 @@ RSpec.describe Expressir::Model::ModelElement do
147
184
  expect(schema.find('remark_entity.UR1')).to be_instance_of(Expressir::Model::Unique)
148
185
  expect(schema.find('remark_entity.WR1')).to be_instance_of(Expressir::Model::Where)
149
186
  expect(schema.find('remark_entity.wr:WR1')).to be_instance_of(Expressir::Model::Where)
150
- expect(schema.find('remark_entity.IP1')).to be_instance_of(Expressir::Model::InformalProposition)
151
- expect(schema.find('remark_entity.ip:IP1')).to be_instance_of(Expressir::Model::InformalProposition)
187
+ expect(schema.find('remark_entity.IP1')).to be_instance_of(Expressir::Model::RemarkItem)
188
+ expect(schema.find('remark_entity.ip:IP1')).to be_instance_of(Expressir::Model::RemarkItem)
152
189
  expect(schema.find('remark_subtype_constraint')).to be_instance_of(Expressir::Model::SubtypeConstraint)
153
190
  expect(schema.find('remark_function')).to be_instance_of(Expressir::Model::Function)
154
191
  expect(schema.find('remark_function.remark_parameter')).to be_instance_of(Expressir::Model::Parameter)
@@ -169,15 +206,16 @@ RSpec.describe Expressir::Model::ModelElement do
169
206
  expect(schema.find('remark_rule.remark_variable')).to be_instance_of(Expressir::Model::Variable)
170
207
  expect(schema.find('remark_rule.WR1')).to be_instance_of(Expressir::Model::Where)
171
208
  expect(schema.find('remark_rule.wr:WR1')).to be_instance_of(Expressir::Model::Where)
172
- expect(schema.find('remark_rule.IP1')).to be_instance_of(Expressir::Model::InformalProposition)
173
- expect(schema.find('remark_rule.ip:IP1')).to be_instance_of(Expressir::Model::InformalProposition)
209
+ expect(schema.find('remark_rule.IP1')).to be_instance_of(Expressir::Model::RemarkItem)
210
+ expect(schema.find('remark_rule.ip:IP1')).to be_instance_of(Expressir::Model::RemarkItem)
211
+ expect(schema.find('remark_item')).to be_instance_of(Expressir::Model::RemarkItem)
174
212
 
175
213
  # type scope
176
214
  type = schema.types.first
177
215
  expect(type.find('WR1')).to be_instance_of(Expressir::Model::Where)
178
216
  expect(type.find('wr:WR1')).to be_instance_of(Expressir::Model::Where)
179
- expect(type.find('IP1')).to be_instance_of(Expressir::Model::InformalProposition)
180
- expect(type.find('ip:IP1')).to be_instance_of(Expressir::Model::InformalProposition)
217
+ expect(type.find('IP1')).to be_instance_of(Expressir::Model::RemarkItem)
218
+ expect(type.find('ip:IP1')).to be_instance_of(Expressir::Model::RemarkItem)
181
219
 
182
220
  # entity scope
183
221
  entity = schema.entities.first
@@ -187,8 +225,8 @@ RSpec.describe Expressir::Model::ModelElement do
187
225
  expect(entity.find('UR1')).to be_instance_of(Expressir::Model::Unique)
188
226
  expect(entity.find('WR1')).to be_instance_of(Expressir::Model::Where)
189
227
  expect(entity.find('wr:WR1')).to be_instance_of(Expressir::Model::Where)
190
- expect(entity.find('IP1')).to be_instance_of(Expressir::Model::InformalProposition)
191
- expect(entity.find('ip:IP1')).to be_instance_of(Expressir::Model::InformalProposition)
228
+ expect(entity.find('IP1')).to be_instance_of(Expressir::Model::RemarkItem)
229
+ expect(entity.find('ip:IP1')).to be_instance_of(Expressir::Model::RemarkItem)
192
230
 
193
231
  # function scope
194
232
  function = schema.functions.first
@@ -214,15 +252,15 @@ RSpec.describe Expressir::Model::ModelElement do
214
252
  expect(rule.find('remark_variable')).to be_instance_of(Expressir::Model::Variable)
215
253
  expect(rule.find('WR1')).to be_instance_of(Expressir::Model::Where)
216
254
  expect(rule.find('wr:WR1')).to be_instance_of(Expressir::Model::Where)
217
- expect(rule.find('IP1')).to be_instance_of(Expressir::Model::InformalProposition)
218
- expect(rule.find('ip:IP1')).to be_instance_of(Expressir::Model::InformalProposition)
255
+ expect(rule.find('IP1')).to be_instance_of(Expressir::Model::RemarkItem)
256
+ expect(rule.find('ip:IP1')).to be_instance_of(Expressir::Model::RemarkItem)
219
257
 
220
258
  # retry search in parent scope
221
259
  expect(entity.find('remark_type')).to be_instance_of(Expressir::Model::Type)
222
260
  expect(entity.find('remark_type.WR1')).to be_instance_of(Expressir::Model::Where)
223
261
  expect(entity.find('remark_type.wr:WR1')).to be_instance_of(Expressir::Model::Where)
224
- expect(entity.find('remark_type.IP1')).to be_instance_of(Expressir::Model::InformalProposition)
225
- expect(entity.find('remark_type.ip:IP1')).to be_instance_of(Expressir::Model::InformalProposition)
262
+ expect(entity.find('remark_type.IP1')).to be_instance_of(Expressir::Model::RemarkItem)
263
+ expect(entity.find('remark_type.ip:IP1')).to be_instance_of(Expressir::Model::RemarkItem)
226
264
  end
227
265
  end
228
266
  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: 0.2.18
4
+ version: 0.2.26
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-03-10 00:00:00.000000000 Z
11
+ date: 2021-03-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -190,6 +190,7 @@ files:
190
190
  - docs/development.md
191
191
  - exe/expressir
192
192
  - exe/format
193
+ - exe/format-test
193
194
  - exe/generate-parser
194
195
  - expressir.gemspec
195
196
  - ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/CMakeLists.txt
@@ -568,14 +569,18 @@ files:
568
569
  - lib/expressir/express/type_select.rb
569
570
  - lib/expressir/express/unique_rule.rb
570
571
  - lib/expressir/express/where_rule.rb
572
+ - lib/expressir/express_exp/cache.rb
571
573
  - lib/expressir/express_exp/formatter.rb
572
574
  - lib/expressir/express_exp/hyperlink_formatter.rb
575
+ - lib/expressir/express_exp/model_visitor.rb
573
576
  - lib/expressir/express_exp/parser.rb
577
+ - lib/expressir/express_exp/resolve_references_model_visitor.rb
574
578
  - lib/expressir/express_exp/schema_head_formatter.rb
575
579
  - lib/expressir/express_exp/visitor.rb
576
580
  - lib/expressir/express_parser.rb
577
581
  - lib/expressir/model.rb
578
582
  - lib/expressir/model/attribute.rb
583
+ - lib/expressir/model/cache.rb
579
584
  - lib/expressir/model/constant.rb
580
585
  - lib/expressir/model/entity.rb
581
586
  - lib/expressir/model/enumeration_item.rb
@@ -593,7 +598,6 @@ files:
593
598
  - lib/expressir/model/expressions/unary_expression.rb
594
599
  - lib/expressir/model/function.rb
595
600
  - lib/expressir/model/identifier.rb
596
- - lib/expressir/model/informal_proposition.rb
597
601
  - lib/expressir/model/interface.rb
598
602
  - lib/expressir/model/interface_item.rb
599
603
  - lib/expressir/model/interfaced_item.rb
@@ -605,6 +609,7 @@ files:
605
609
  - lib/expressir/model/model_element.rb
606
610
  - lib/expressir/model/parameter.rb
607
611
  - lib/expressir/model/procedure.rb
612
+ - lib/expressir/model/remark_item.rb
608
613
  - lib/expressir/model/repository.rb
609
614
  - lib/expressir/model/rule.rb
610
615
  - lib/expressir/model/schema.rb
@@ -685,10 +690,10 @@ files:
685
690
  - original/examples/syntax/single.yaml
686
691
  - original/examples/syntax/single_formatted.exp
687
692
  - original/examples/syntax/single_formatted.yaml
688
- - original/examples/syntax/single_root_path.yaml
689
693
  - original/examples/syntax/syntax.exp
690
694
  - original/examples/syntax/syntax.yaml
691
695
  - original/examples/syntax/syntax_formatted.exp
696
+ - original/examples/syntax/syntax_hyperlink_formatted.exp
692
697
  - original/examples/syntax/syntax_schema_head_formatted.exp
693
698
  - original/exp2ruby.rb
694
699
  - original/expsm.rb
@@ -701,6 +706,7 @@ files:
701
706
  - spec/acceptance/express_to_owl_spec.rb
702
707
  - spec/acceptance/version_spec.rb
703
708
  - spec/expressir/express/repository_spec.rb
709
+ - spec/expressir/express_exp/cache_spec.rb
704
710
  - spec/expressir/express_exp/formatter_spec.rb
705
711
  - spec/expressir/express_exp/parser_spec.rb
706
712
  - spec/expressir/model/model_element_spec.rb