expressir 2.2.1 → 2.3.1
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 +4 -4
- data/.rubocop.yml +1 -1
- data/.rubocop_todo.yml +681 -78
- data/Gemfile +4 -1
- data/README.adoc +63 -26
- data/benchmark/srl_benchmark.rb +399 -0
- data/benchmark/srl_native_benchmark.rb +146 -0
- data/benchmark/srl_ruby_benchmark.rb +132 -0
- data/expressir.gemspec +3 -2
- data/lib/expressir/benchmark.rb +1 -1
- data/lib/expressir/changes/item_change.rb +0 -2
- data/lib/expressir/changes/mapping_change.rb +0 -2
- data/lib/expressir/changes/schema_change.rb +0 -3
- data/lib/expressir/changes/version_change.rb +0 -4
- data/lib/expressir/changes.rb +5 -6
- data/lib/expressir/cli.rb +10 -24
- data/lib/expressir/commands/changes.rb +0 -2
- data/lib/expressir/commands/changes_import_eengine.rb +2 -5
- data/lib/expressir/commands/changes_validate.rb +0 -2
- data/lib/expressir/commands/format.rb +1 -1
- data/lib/expressir/commands/manifest.rb +0 -7
- data/lib/expressir/commands/package.rb +16 -29
- data/lib/expressir/commands/validate.rb +0 -2
- data/lib/expressir/commands/validate_ascii.rb +0 -1
- data/lib/expressir/commands/validate_load.rb +1 -1
- data/lib/expressir/commands.rb +20 -0
- data/lib/expressir/config.rb +0 -2
- data/lib/expressir/coverage.rb +11 -4
- data/lib/expressir/eengine/arm_compare_report.rb +1 -5
- data/lib/expressir/eengine/changes_section.rb +1 -4
- data/lib/expressir/eengine/compare_report.rb +1 -13
- data/lib/expressir/eengine/mim_compare_report.rb +1 -5
- data/lib/expressir/eengine/modified_object.rb +1 -3
- data/lib/expressir/eengine.rb +9 -0
- data/lib/expressir/errors.rb +3 -5
- data/lib/expressir/express/builder.rb +82 -24
- data/lib/expressir/express/builder_registry.rb +411 -0
- data/lib/expressir/express/builders/attribute_decl_builder.rb +0 -6
- data/lib/expressir/express/builders/built_in_builder.rb +5 -18
- data/lib/expressir/express/builders/constant_builder.rb +4 -19
- data/lib/expressir/express/builders/declaration_builder.rb +0 -4
- data/lib/expressir/express/builders/derive_clause_builder.rb +0 -2
- data/lib/expressir/express/builders/derived_attr_builder.rb +0 -2
- data/lib/expressir/express/builders/domain_rule_builder.rb +0 -2
- data/lib/expressir/express/builders/entity_decl_builder.rb +11 -13
- data/lib/expressir/express/builders/explicit_attr_builder.rb +5 -8
- data/lib/expressir/express/builders/expression_builder.rb +25 -67
- data/lib/expressir/express/builders/function_decl_builder.rb +20 -18
- data/lib/expressir/express/builders/interface_builder.rb +0 -20
- data/lib/expressir/express/builders/inverse_attr_builder.rb +0 -2
- data/lib/expressir/express/builders/inverse_attr_type_builder.rb +0 -6
- data/lib/expressir/express/builders/inverse_clause_builder.rb +0 -2
- data/lib/expressir/express/builders/literal_builder.rb +1 -15
- data/lib/expressir/express/builders/procedure_decl_builder.rb +20 -19
- data/lib/expressir/express/builders/qualifier_builder.rb +0 -27
- data/lib/expressir/express/builders/reference_builder.rb +1 -10
- data/lib/expressir/express/builders/rule_decl_builder.rb +21 -19
- data/lib/expressir/express/builders/schema_body_decl_builder.rb +0 -4
- data/lib/expressir/express/builders/schema_decl_builder.rb +7 -13
- data/lib/expressir/express/builders/schema_version_builder.rb +0 -6
- data/lib/expressir/express/builders/simple_id_builder.rb +1 -10
- data/lib/expressir/express/builders/statement_builder.rb +4 -32
- data/lib/expressir/express/builders/subtype_constraint_builder.rb +6 -30
- data/lib/expressir/express/builders/syntax_builder.rb +18 -7
- data/lib/expressir/express/builders/type_builder.rb +3 -45
- data/lib/expressir/express/builders/type_decl_builder.rb +1 -7
- data/lib/expressir/express/builders/unique_clause_builder.rb +1 -3
- data/lib/expressir/express/builders/unique_rule_builder.rb +0 -2
- data/lib/expressir/express/builders/where_clause_builder.rb +1 -3
- data/lib/expressir/express/builders.rb +47 -35
- data/lib/expressir/express/error.rb +0 -3
- data/lib/expressir/express/formatter.rb +17 -19
- data/lib/expressir/express/formatters/data_types_formatter.rb +295 -293
- data/lib/expressir/express/formatters/declarations_formatter.rb +617 -615
- data/lib/expressir/express/formatters/expressions_formatter.rb +146 -144
- data/lib/expressir/express/formatters/literals_formatter.rb +35 -33
- data/lib/expressir/express/formatters/references_formatter.rb +34 -32
- data/lib/expressir/express/formatters/remark_formatter.rb +174 -209
- data/lib/expressir/express/formatters/remark_item_formatter.rb +18 -16
- data/lib/expressir/express/formatters/statements_formatter.rb +190 -188
- data/lib/expressir/express/formatters/supertype_expressions_formatter.rb +41 -39
- data/lib/expressir/express/formatters.rb +22 -0
- data/lib/expressir/express/parser.rb +266 -47
- data/lib/expressir/express/pretty_formatter.rb +68 -47
- data/lib/expressir/express/remark_attacher.rb +254 -162
- data/lib/expressir/express/streaming_builder.rb +0 -3
- data/lib/expressir/express/transformer/remark_handling.rb +1 -3
- data/lib/expressir/express.rb +29 -0
- data/lib/expressir/manifest/resolver.rb +0 -3
- data/lib/expressir/manifest/validator.rb +0 -3
- data/lib/expressir/manifest.rb +6 -0
- data/lib/expressir/model/cache.rb +1 -1
- data/lib/expressir/model/concerns.rb +19 -0
- data/lib/expressir/model/data_types/aggregate.rb +1 -1
- data/lib/expressir/model/data_types/array.rb +1 -1
- data/lib/expressir/model/data_types/bag.rb +1 -1
- data/lib/expressir/model/data_types/binary.rb +1 -1
- data/lib/expressir/model/data_types/boolean.rb +1 -1
- data/lib/expressir/model/data_types/enumeration.rb +1 -1
- data/lib/expressir/model/data_types/enumeration_item.rb +1 -1
- data/lib/expressir/model/data_types/generic.rb +1 -1
- data/lib/expressir/model/data_types/generic_entity.rb +1 -1
- data/lib/expressir/model/data_types/integer.rb +1 -1
- data/lib/expressir/model/data_types/list.rb +1 -1
- data/lib/expressir/model/data_types/logical.rb +1 -1
- data/lib/expressir/model/data_types/number.rb +1 -1
- data/lib/expressir/model/data_types/real.rb +1 -1
- data/lib/expressir/model/data_types/select.rb +1 -1
- data/lib/expressir/model/data_types/set.rb +1 -1
- data/lib/expressir/model/data_types/string.rb +1 -1
- data/lib/expressir/model/data_types.rb +25 -0
- data/lib/expressir/model/declarations/attribute.rb +1 -1
- data/lib/expressir/model/declarations/constant.rb +1 -1
- data/lib/expressir/model/declarations/derived_attribute.rb +1 -1
- data/lib/expressir/model/declarations/entity.rb +4 -1
- data/lib/expressir/model/declarations/function.rb +3 -1
- data/lib/expressir/model/declarations/informal_proposition_rule.rb +2 -1
- data/lib/expressir/model/declarations/interface.rb +1 -1
- data/lib/expressir/model/declarations/interface_item.rb +1 -1
- data/lib/expressir/model/declarations/interfaced_item.rb +1 -1
- data/lib/expressir/model/declarations/inverse_attribute.rb +1 -1
- data/lib/expressir/model/declarations/parameter.rb +1 -1
- data/lib/expressir/model/declarations/procedure.rb +3 -1
- data/lib/expressir/model/declarations/remark_item.rb +1 -1
- data/lib/expressir/model/declarations/rule.rb +4 -1
- data/lib/expressir/model/declarations/schema.rb +2 -1
- data/lib/expressir/model/declarations/schema_version.rb +1 -1
- data/lib/expressir/model/declarations/schema_version_item.rb +1 -1
- data/lib/expressir/model/declarations/subtype_constraint.rb +1 -1
- data/lib/expressir/model/declarations/type.rb +4 -1
- data/lib/expressir/model/declarations/unique_rule.rb +1 -1
- data/lib/expressir/model/declarations/variable.rb +1 -1
- data/lib/expressir/model/declarations/where_rule.rb +1 -1
- data/lib/expressir/model/declarations.rb +31 -0
- data/lib/expressir/model/dependency_resolver.rb +0 -2
- data/lib/expressir/model/exp_file.rb +39 -0
- data/lib/expressir/model/expressions/aggregate_initializer.rb +1 -1
- data/lib/expressir/model/expressions/aggregate_initializer_item.rb +1 -1
- data/lib/expressir/model/expressions/binary_expression.rb +1 -1
- data/lib/expressir/model/expressions/entity_constructor.rb +1 -1
- data/lib/expressir/model/expressions/function_call.rb +1 -1
- data/lib/expressir/model/expressions/interval.rb +1 -1
- data/lib/expressir/model/expressions/query_expression.rb +1 -1
- data/lib/expressir/model/expressions/unary_expression.rb +1 -1
- data/lib/expressir/model/expressions.rb +18 -0
- data/lib/expressir/model/identifier.rb +5 -1
- data/lib/expressir/model/indexes.rb +11 -0
- data/lib/expressir/model/literals/binary.rb +1 -1
- data/lib/expressir/model/literals/integer.rb +1 -1
- data/lib/expressir/model/literals/logical.rb +1 -1
- data/lib/expressir/model/literals/real.rb +1 -1
- data/lib/expressir/model/literals/string.rb +1 -1
- data/lib/expressir/model/literals.rb +13 -0
- data/lib/expressir/model/model_element.rb +7 -15
- data/lib/expressir/model/references/attribute_reference.rb +1 -1
- data/lib/expressir/model/references/group_reference.rb +1 -1
- data/lib/expressir/model/references/index_reference.rb +1 -1
- data/lib/expressir/model/references/simple_reference.rb +1 -1
- data/lib/expressir/model/references.rb +12 -0
- data/lib/expressir/model/remark_info.rb +1 -7
- data/lib/expressir/model/repository.rb +76 -41
- data/lib/expressir/model/repository_validator.rb +0 -2
- data/lib/expressir/model/search_engine.rb +12 -35
- data/lib/expressir/model/statements/alias.rb +1 -1
- data/lib/expressir/model/statements/assignment.rb +1 -1
- data/lib/expressir/model/statements/case.rb +1 -1
- data/lib/expressir/model/statements/case_action.rb +1 -1
- data/lib/expressir/model/statements/compound.rb +1 -1
- data/lib/expressir/model/statements/escape.rb +1 -1
- data/lib/expressir/model/statements/if.rb +1 -1
- data/lib/expressir/model/statements/null.rb +1 -1
- data/lib/expressir/model/statements/procedure_call.rb +1 -1
- data/lib/expressir/model/statements/repeat.rb +1 -1
- data/lib/expressir/model/statements/return.rb +1 -1
- data/lib/expressir/model/statements/skip.rb +1 -1
- data/lib/expressir/model/statements.rb +20 -0
- data/lib/expressir/model/supertype_expressions/binary_supertype_expression.rb +1 -1
- data/lib/expressir/model/supertype_expressions/oneof_supertype_expression.rb +1 -1
- data/lib/expressir/model/supertype_expressions.rb +12 -0
- data/lib/expressir/model.rb +28 -4
- data/lib/expressir/package/builder.rb +35 -4
- data/lib/expressir/package/metadata.rb +0 -2
- data/lib/expressir/package/reader.rb +0 -1
- data/lib/expressir/package.rb +8 -0
- data/lib/expressir/schema_manifest.rb +5 -7
- data/lib/expressir/schema_manifest_entry.rb +3 -5
- data/lib/expressir/transformer.rb +7 -0
- data/lib/expressir/version.rb +1 -1
- data/lib/expressir.rb +23 -171
- metadata +46 -6
- data/lib/expressir/express/builders/token_builder.rb +0 -15
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Expressir
|
|
4
|
+
module Express
|
|
5
|
+
autoload :Builder, "#{__dir__}/express/builder"
|
|
6
|
+
autoload :Builders, "#{__dir__}/express/builders"
|
|
7
|
+
# autoload :BuilderRegistry, "#{__dir__}/express/builder_registry"
|
|
8
|
+
|
|
9
|
+
# Core classes (autoloaded for lazy loading)
|
|
10
|
+
autoload :Cache, "#{__dir__}/express/cache"
|
|
11
|
+
autoload :Error, "#{__dir__}/express/error"
|
|
12
|
+
autoload :Formatter, "#{__dir__}/express/formatter"
|
|
13
|
+
autoload :Formatters, "#{__dir__}/express/formatters"
|
|
14
|
+
autoload :HyperlinkFormatter, "#{__dir__}/express/hyperlink_formatter"
|
|
15
|
+
autoload :ModelVisitor, "#{__dir__}/express/model_visitor"
|
|
16
|
+
autoload :Parser, "#{__dir__}/express/parser"
|
|
17
|
+
autoload :PrettyFormatter, "#{__dir__}/express/pretty_formatter"
|
|
18
|
+
autoload :RemarkAttacher, "#{__dir__}/express/remark_attacher"
|
|
19
|
+
autoload :ResolveReferencesModelVisitor,
|
|
20
|
+
"#{__dir__}/express/resolve_references_model_visitor"
|
|
21
|
+
autoload :SchemaHeadFormatter, "#{__dir__}/express/schema_head_formatter"
|
|
22
|
+
autoload :StreamingBuilder, "#{__dir__}/express/streaming_builder"
|
|
23
|
+
|
|
24
|
+
autoload :Transformer, "#{__dir__}/express/transformer"
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Eagerly load builders (they register themselves at load time)
|
|
29
|
+
require_relative "express/builder_registry"
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require_relative "../model/dependency_resolver"
|
|
4
|
-
|
|
5
3
|
module Expressir
|
|
6
4
|
module Manifest
|
|
7
5
|
# Resolves schema paths in manifests using pattern-based path discovery
|
|
@@ -131,7 +129,6 @@ module Expressir
|
|
|
131
129
|
# @param schema_path [String] Path to the schema file
|
|
132
130
|
# @return [String] The schema name declared in the file
|
|
133
131
|
def extract_schema_name(schema_path)
|
|
134
|
-
require_relative "../express/parser"
|
|
135
132
|
repo = Expressir::Express::Parser.from_file(schema_path)
|
|
136
133
|
schema = repo.schemas.first
|
|
137
134
|
schema&.id || File.basename(schema_path, ".*")
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require_relative "../model/dependency_resolver"
|
|
4
|
-
|
|
5
3
|
module Expressir
|
|
6
4
|
module Manifest
|
|
7
5
|
# Validates schema manifests for completeness and integrity
|
|
@@ -159,7 +157,6 @@ module Expressir
|
|
|
159
157
|
# @param schema_path [String] Path to the schema file
|
|
160
158
|
# @return [String] The schema name declared in the file
|
|
161
159
|
def extract_schema_name(schema_path)
|
|
162
|
-
require_relative "../express/parser"
|
|
163
160
|
repo = Expressir::Express::Parser.from_file(schema_path)
|
|
164
161
|
schema = repo.schemas.first
|
|
165
162
|
schema&.id || File.basename(schema_path, ".*")
|
|
@@ -5,7 +5,7 @@ module Expressir
|
|
|
5
5
|
attribute :version, :string
|
|
6
6
|
attribute :root_path, :string
|
|
7
7
|
attribute :content, ModelElement
|
|
8
|
-
attribute :_class, :string, default: -> {
|
|
8
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
9
9
|
|
|
10
10
|
key_value do
|
|
11
11
|
map "_class", to: :_class, render_default: true
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Expressir
|
|
4
|
+
module Model
|
|
5
|
+
# Marker for types that can have remark_items children
|
|
6
|
+
# These are types where RemarkItem children can be created
|
|
7
|
+
module HasRemarkItems; end
|
|
8
|
+
|
|
9
|
+
# Marker for scope containers (can contain declarations)
|
|
10
|
+
# Includes schemas, functions, procedures, rules, entities, types, and files
|
|
11
|
+
module ScopeContainer; end
|
|
12
|
+
|
|
13
|
+
# Marker for types supporting informal propositions
|
|
14
|
+
module HasInformalPropositions; end
|
|
15
|
+
|
|
16
|
+
# Marker for types supporting where rules
|
|
17
|
+
module HasWhereRules; end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -7,7 +7,7 @@ module Expressir
|
|
|
7
7
|
include Identifier
|
|
8
8
|
|
|
9
9
|
attribute :base_type, ModelElement
|
|
10
|
-
attribute :_class, :string, default: -> {
|
|
10
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
11
11
|
|
|
12
12
|
key_value do
|
|
13
13
|
map "_class", to: :_class, render_default: true
|
|
@@ -9,7 +9,7 @@ module Expressir
|
|
|
9
9
|
attribute :optional, :boolean
|
|
10
10
|
attribute :unique, :boolean
|
|
11
11
|
attribute :base_type, ModelElement
|
|
12
|
-
attribute :_class, :string, default: -> {
|
|
12
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
13
13
|
|
|
14
14
|
key_value do
|
|
15
15
|
map "_class", to: :_class, render_default: true
|
|
@@ -7,7 +7,7 @@ module Expressir
|
|
|
7
7
|
attribute :bound1, ModelElement
|
|
8
8
|
attribute :bound2, ModelElement
|
|
9
9
|
attribute :base_type, ModelElement
|
|
10
|
-
attribute :_class, :string, default: -> {
|
|
10
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
11
11
|
|
|
12
12
|
key_value do
|
|
13
13
|
map "_class", to: :_class, render_default: true
|
|
@@ -6,7 +6,7 @@ module Expressir
|
|
|
6
6
|
class Binary < ModelElement
|
|
7
7
|
attribute :width, ModelElement
|
|
8
8
|
attribute :fixed, :boolean
|
|
9
|
-
attribute :_class, :string, default: -> {
|
|
9
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
10
10
|
|
|
11
11
|
key_value do
|
|
12
12
|
map "_class", to: :_class, render_default: true
|
|
@@ -4,7 +4,7 @@ module Expressir
|
|
|
4
4
|
# Specified in ISO 10303-11:2004
|
|
5
5
|
# - section 8.1.5 Boolean data type
|
|
6
6
|
class Boolean < ModelElement
|
|
7
|
-
attribute :_class, :string, default: -> {
|
|
7
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
8
8
|
|
|
9
9
|
key_value do
|
|
10
10
|
map "_class", to: :_class, render_default: true
|
|
@@ -7,7 +7,7 @@ module Expressir
|
|
|
7
7
|
attribute :extensible, :boolean
|
|
8
8
|
attribute :based_on, ModelElement
|
|
9
9
|
attribute :items, EnumerationItem, collection: true
|
|
10
|
-
attribute :_class, :string, default: -> {
|
|
10
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
11
11
|
|
|
12
12
|
key_value do
|
|
13
13
|
map "_class", to: :_class, render_default: true
|
|
@@ -6,7 +6,7 @@ module Expressir
|
|
|
6
6
|
class EnumerationItem < ModelElement
|
|
7
7
|
include Identifier
|
|
8
8
|
|
|
9
|
-
attribute :_class, :string, default: -> {
|
|
9
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
10
10
|
|
|
11
11
|
key_value do
|
|
12
12
|
map "_class", to: :_class, render_default: true
|
|
@@ -6,7 +6,7 @@ module Expressir
|
|
|
6
6
|
class GenericEntity < ModelElement
|
|
7
7
|
include Identifier
|
|
8
8
|
|
|
9
|
-
attribute :_class, :string, default: -> {
|
|
9
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
10
10
|
|
|
11
11
|
key_value do
|
|
12
12
|
map "_class", to: :_class, render_default: true
|
|
@@ -4,7 +4,7 @@ module Expressir
|
|
|
4
4
|
# Specified in ISO 10303-11:2004
|
|
5
5
|
# - section 8.1.3 Integer data type
|
|
6
6
|
class Integer < ModelElement
|
|
7
|
-
attribute :_class, :string, default: -> {
|
|
7
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
8
8
|
|
|
9
9
|
key_value do
|
|
10
10
|
map "_class", to: :_class, render_default: true
|
|
@@ -8,7 +8,7 @@ module Expressir
|
|
|
8
8
|
attribute :bound2, ModelElement
|
|
9
9
|
attribute :unique, :boolean
|
|
10
10
|
attribute :base_type, ModelElement
|
|
11
|
-
attribute :_class, :string, default: -> {
|
|
11
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
12
12
|
|
|
13
13
|
key_value do
|
|
14
14
|
map "_class", to: :_class, render_default: true
|
|
@@ -4,7 +4,7 @@ module Expressir
|
|
|
4
4
|
# Specified in ISO 10303-11:2004
|
|
5
5
|
# - section 8.1.4 Logical data type
|
|
6
6
|
class Logical < ModelElement
|
|
7
|
-
attribute :_class, :string, default: -> {
|
|
7
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
8
8
|
|
|
9
9
|
key_value do
|
|
10
10
|
map "_class", to: :_class, render_default: true
|
|
@@ -4,7 +4,7 @@ module Expressir
|
|
|
4
4
|
# Specified in ISO 10303-11:2004
|
|
5
5
|
# - section 8.1.1 Number data type
|
|
6
6
|
class Number < ModelElement
|
|
7
|
-
attribute :_class, :string, default: -> {
|
|
7
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
8
8
|
|
|
9
9
|
key_value do
|
|
10
10
|
map "_class", to: :_class, render_default: true
|
|
@@ -5,7 +5,7 @@ module Expressir
|
|
|
5
5
|
# - section 8.1.2 Real data type
|
|
6
6
|
class Real < ModelElement
|
|
7
7
|
attribute :precision, ModelElement
|
|
8
|
-
attribute :_class, :string, default: -> {
|
|
8
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
9
9
|
|
|
10
10
|
key_value do
|
|
11
11
|
map "_class", to: :_class, render_default: true
|
|
@@ -8,7 +8,7 @@ module Expressir
|
|
|
8
8
|
attribute :generic_entity, :boolean
|
|
9
9
|
attribute :based_on, ModelElement
|
|
10
10
|
attribute :items, ModelElement, collection: true
|
|
11
|
-
attribute :_class, :string, default: -> {
|
|
11
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
12
12
|
|
|
13
13
|
key_value do
|
|
14
14
|
map "_class", to: :_class, render_default: true
|
|
@@ -7,7 +7,7 @@ module Expressir
|
|
|
7
7
|
attribute :bound1, ModelElement
|
|
8
8
|
attribute :bound2, ModelElement
|
|
9
9
|
attribute :base_type, ModelElement
|
|
10
|
-
attribute :_class, :string, default: -> {
|
|
10
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
11
11
|
|
|
12
12
|
key_value do
|
|
13
13
|
map "_class", to: :_class, render_default: true
|
|
@@ -6,7 +6,7 @@ module Expressir
|
|
|
6
6
|
class String < ModelElement
|
|
7
7
|
attribute :width, ModelElement
|
|
8
8
|
attribute :fixed, :boolean
|
|
9
|
-
attribute :_class, :string, default: -> {
|
|
9
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
10
10
|
|
|
11
11
|
key_value do
|
|
12
12
|
map "_class", to: :_class, render_default: true
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Expressir
|
|
4
|
+
module Model
|
|
5
|
+
module DataTypes
|
|
6
|
+
autoload :Aggregate, "#{__dir__}/data_types/aggregate"
|
|
7
|
+
autoload :Array, "#{__dir__}/data_types/array"
|
|
8
|
+
autoload :Bag, "#{__dir__}/data_types/bag"
|
|
9
|
+
autoload :Binary, "#{__dir__}/data_types/binary"
|
|
10
|
+
autoload :Boolean, "#{__dir__}/data_types/boolean"
|
|
11
|
+
autoload :Enumeration, "#{__dir__}/data_types/enumeration"
|
|
12
|
+
autoload :EnumerationItem, "#{__dir__}/data_types/enumeration_item"
|
|
13
|
+
autoload :GenericEntity, "#{__dir__}/data_types/generic_entity"
|
|
14
|
+
autoload :Generic, "#{__dir__}/data_types/generic"
|
|
15
|
+
autoload :Integer, "#{__dir__}/data_types/integer"
|
|
16
|
+
autoload :List, "#{__dir__}/data_types/list"
|
|
17
|
+
autoload :Logical, "#{__dir__}/data_types/logical"
|
|
18
|
+
autoload :Number, "#{__dir__}/data_types/number"
|
|
19
|
+
autoload :Real, "#{__dir__}/data_types/real"
|
|
20
|
+
autoload :Select, "#{__dir__}/data_types/select"
|
|
21
|
+
autoload :Set, "#{__dir__}/data_types/set"
|
|
22
|
+
autoload :String, "#{__dir__}/data_types/string"
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -15,7 +15,7 @@ module Expressir
|
|
|
15
15
|
attribute :optional, :boolean
|
|
16
16
|
attribute :type, ModelElement
|
|
17
17
|
attribute :expression, ModelElement
|
|
18
|
-
attribute :_class, :string, default: -> {
|
|
18
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
19
19
|
|
|
20
20
|
key_value do
|
|
21
21
|
map "_class", to: :_class, render_default: true
|
|
@@ -8,7 +8,7 @@ module Expressir
|
|
|
8
8
|
|
|
9
9
|
attribute :type, ModelElement
|
|
10
10
|
attribute :expression, ModelElement
|
|
11
|
-
attribute :_class, :string, default: -> {
|
|
11
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
12
12
|
|
|
13
13
|
key_value do
|
|
14
14
|
map "_class", to: :_class, render_default: true
|
|
@@ -9,7 +9,7 @@ module Expressir
|
|
|
9
9
|
DERIVED = "DERIVED".freeze
|
|
10
10
|
|
|
11
11
|
attribute :kind, :string, default: -> { DERIVED }
|
|
12
|
-
attribute :_class, :string, default: -> {
|
|
12
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
13
13
|
|
|
14
14
|
key_value do
|
|
15
15
|
map "_class", to: :_class, render_default: true
|
|
@@ -5,6 +5,9 @@ module Expressir
|
|
|
5
5
|
# - section 9.2 Entity declaration
|
|
6
6
|
class Entity < ModelElement
|
|
7
7
|
include Identifier
|
|
8
|
+
include ScopeContainer
|
|
9
|
+
include HasInformalPropositions
|
|
10
|
+
include HasWhereRules
|
|
8
11
|
|
|
9
12
|
attribute :abstract, :boolean
|
|
10
13
|
attribute :supertype_expression, ModelElement
|
|
@@ -16,7 +19,7 @@ module Expressir
|
|
|
16
19
|
attribute :where_rules, WhereRule, collection: true
|
|
17
20
|
attribute :informal_propositions, InformalPropositionRule,
|
|
18
21
|
collection: true
|
|
19
|
-
attribute :_class, :string, default: -> {
|
|
22
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
20
23
|
|
|
21
24
|
key_value do
|
|
22
25
|
map "_class", to: :_class, render_default: true
|
|
@@ -5,6 +5,8 @@ module Expressir
|
|
|
5
5
|
# - section 9.5.1 Function
|
|
6
6
|
class Function < ModelElement
|
|
7
7
|
include Identifier
|
|
8
|
+
include ScopeContainer
|
|
9
|
+
include HasWhereRules
|
|
8
10
|
|
|
9
11
|
attribute :parameters, Parameter, collection: true
|
|
10
12
|
attribute :return_type, ModelElement
|
|
@@ -16,7 +18,7 @@ module Expressir
|
|
|
16
18
|
attribute :constants, Constant, collection: true
|
|
17
19
|
attribute :variables, Variable, collection: true
|
|
18
20
|
attribute :statements, ModelElement, collection: true
|
|
19
|
-
attribute :_class, :string, default: -> {
|
|
21
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
20
22
|
|
|
21
23
|
key_value do
|
|
22
24
|
map "_class", to: :_class, render_default: true
|
|
@@ -4,9 +4,10 @@ module Expressir
|
|
|
4
4
|
# Informal proposition rules are used to specify constraints that cannot be formally expressed
|
|
5
5
|
class InformalPropositionRule < ModelElement
|
|
6
6
|
include Identifier
|
|
7
|
+
include HasInformalPropositions
|
|
7
8
|
|
|
8
9
|
attribute :expression, ModelElement
|
|
9
|
-
attribute :_class, :string, default: -> {
|
|
10
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
10
11
|
|
|
11
12
|
key_value do
|
|
12
13
|
map "_class", to: :_class, render_default: true
|
|
@@ -10,7 +10,7 @@ module Expressir
|
|
|
10
10
|
attribute :kind, :string, values: %w[USE REFERENCE]
|
|
11
11
|
attribute :schema, ModelElement
|
|
12
12
|
attribute :items, InterfaceItem, collection: true
|
|
13
|
-
attribute :_class, :string, default: -> {
|
|
13
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
14
14
|
|
|
15
15
|
key_value do
|
|
16
16
|
map "_class", to: :_class, render_default: true
|
|
@@ -6,7 +6,7 @@ module Expressir
|
|
|
6
6
|
class InterfaceItem < ModelElement
|
|
7
7
|
attribute :ref, ModelElement
|
|
8
8
|
attribute :id, :string
|
|
9
|
-
attribute :_class, :string, default: -> {
|
|
9
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
10
10
|
|
|
11
11
|
key_value do
|
|
12
12
|
map "_class", to: :_class, render_default: true
|
|
@@ -8,7 +8,7 @@ module Expressir
|
|
|
8
8
|
attribute :remarks, :string, collection: true
|
|
9
9
|
attribute :remark_items, RemarkItem, collection: true
|
|
10
10
|
attribute :base_item, ModelElement
|
|
11
|
-
attribute :_class, :string, default: -> {
|
|
11
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
12
12
|
|
|
13
13
|
key_value do
|
|
14
14
|
map "_class", to: :_class, render_default: true
|
|
@@ -9,7 +9,7 @@ module Expressir
|
|
|
9
9
|
INVERSE = "INVERSE".freeze
|
|
10
10
|
|
|
11
11
|
attribute :kind, :string, default: -> { INVERSE }
|
|
12
|
-
attribute :_class, :string, default: -> {
|
|
12
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
13
13
|
|
|
14
14
|
key_value do
|
|
15
15
|
map "_class", to: :_class, render_default: true
|
|
@@ -8,7 +8,7 @@ module Expressir
|
|
|
8
8
|
|
|
9
9
|
attribute :var, :boolean
|
|
10
10
|
attribute :type, ModelElement
|
|
11
|
-
attribute :_class, :string, default: -> {
|
|
11
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
12
12
|
|
|
13
13
|
key_value do
|
|
14
14
|
map "_class", to: :_class, render_default: true
|
|
@@ -5,6 +5,8 @@ module Expressir
|
|
|
5
5
|
# - section 9.5.2 Procedure
|
|
6
6
|
class Procedure < ModelElement
|
|
7
7
|
include Identifier
|
|
8
|
+
include ScopeContainer
|
|
9
|
+
include HasWhereRules
|
|
8
10
|
|
|
9
11
|
attribute :parameters, Parameter, collection: true
|
|
10
12
|
attribute :types, ModelElement, collection: true
|
|
@@ -15,7 +17,7 @@ module Expressir
|
|
|
15
17
|
attribute :constants, Constant, collection: true
|
|
16
18
|
attribute :variables, Variable, collection: true
|
|
17
19
|
attribute :statements, ModelElement, collection: true
|
|
18
|
-
attribute :_class, :string, default: -> {
|
|
20
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
19
21
|
|
|
20
22
|
key_value do
|
|
21
23
|
map "_class", to: :_class, render_default: true
|
|
@@ -5,7 +5,7 @@ module Expressir
|
|
|
5
5
|
class RemarkItem < ModelElement
|
|
6
6
|
attribute :id, :string
|
|
7
7
|
attribute :remarks, :string, collection: true
|
|
8
|
-
attribute :_class, :string, default: -> {
|
|
8
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
9
9
|
|
|
10
10
|
key_value do
|
|
11
11
|
map "_class", to: :_class, render_default: true
|
|
@@ -5,6 +5,9 @@ module Expressir
|
|
|
5
5
|
# - section 9.6 Rule
|
|
6
6
|
class Rule < ModelElement
|
|
7
7
|
include Identifier
|
|
8
|
+
include ScopeContainer
|
|
9
|
+
include HasInformalPropositions
|
|
10
|
+
include HasWhereRules
|
|
8
11
|
|
|
9
12
|
attribute :applies_to, ModelElement, collection: true
|
|
10
13
|
attribute :types, ModelElement, collection: true
|
|
@@ -18,7 +21,7 @@ module Expressir
|
|
|
18
21
|
attribute :where_rules, WhereRule, collection: true
|
|
19
22
|
attribute :informal_propositions, InformalPropositionRule,
|
|
20
23
|
collection: true
|
|
21
|
-
attribute :_class, :string, default: -> {
|
|
24
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
22
25
|
|
|
23
26
|
key_value do
|
|
24
27
|
map "_class", to: :_class, render_default: true
|
|
@@ -5,6 +5,7 @@ module Expressir
|
|
|
5
5
|
# - section 9.3 Schema
|
|
6
6
|
class Schema < ModelElement
|
|
7
7
|
include Identifier
|
|
8
|
+
include ScopeContainer
|
|
8
9
|
|
|
9
10
|
attribute :file, :string
|
|
10
11
|
attribute :version, SchemaVersion
|
|
@@ -16,7 +17,7 @@ module Expressir
|
|
|
16
17
|
attribute :functions, Function, collection: true
|
|
17
18
|
attribute :rules, Rule, collection: true
|
|
18
19
|
attribute :procedures, Procedure, collection: true
|
|
19
|
-
attribute :_class, :string, default: -> {
|
|
20
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
20
21
|
attribute :selected, :boolean, default: false
|
|
21
22
|
attribute :formatted, :string
|
|
22
23
|
attribute :file_basename, :string
|
|
@@ -6,7 +6,7 @@ module Expressir
|
|
|
6
6
|
class SchemaVersion < ModelElement
|
|
7
7
|
attribute :value, :string
|
|
8
8
|
attribute :items, SchemaVersionItem, collection: true
|
|
9
|
-
attribute :_class, :string, default: -> {
|
|
9
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
10
10
|
|
|
11
11
|
key_value do
|
|
12
12
|
map "_class", to: :_class, render_default: true
|
|
@@ -6,7 +6,7 @@ module Expressir
|
|
|
6
6
|
class SchemaVersionItem < ModelElement
|
|
7
7
|
attribute :name, :string
|
|
8
8
|
attribute :value, :string
|
|
9
|
-
attribute :_class, :string, default: -> {
|
|
9
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
10
10
|
|
|
11
11
|
key_value do
|
|
12
12
|
map "_class", to: :_class, render_default: true
|
|
@@ -10,7 +10,7 @@ module Expressir
|
|
|
10
10
|
attribute :abstract, :boolean
|
|
11
11
|
attribute :total_over, ModelElement, collection: true
|
|
12
12
|
attribute :supertype_expression, ModelElement
|
|
13
|
-
attribute :_class, :string, default: -> {
|
|
13
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
14
14
|
|
|
15
15
|
key_value do
|
|
16
16
|
map "_class", to: :_class, render_default: true
|
|
@@ -5,12 +5,15 @@ module Expressir
|
|
|
5
5
|
# - section 9.1 Type declaration
|
|
6
6
|
class Type < ModelElement
|
|
7
7
|
include Identifier
|
|
8
|
+
include ScopeContainer
|
|
9
|
+
include HasInformalPropositions
|
|
10
|
+
include HasWhereRules
|
|
8
11
|
|
|
9
12
|
attribute :underlying_type, ModelElement
|
|
10
13
|
attribute :where_rules, WhereRule, collection: true
|
|
11
14
|
attribute :informal_propositions, InformalPropositionRule,
|
|
12
15
|
collection: true
|
|
13
|
-
attribute :_class, :string, default: -> {
|
|
16
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
14
17
|
|
|
15
18
|
key_value do
|
|
16
19
|
map "_class", to: :_class, render_default: true
|
|
@@ -7,7 +7,7 @@ module Expressir
|
|
|
7
7
|
include Identifier
|
|
8
8
|
|
|
9
9
|
attribute :attributes, ModelElement, collection: true
|
|
10
|
-
attribute :_class, :string, default: -> {
|
|
10
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
11
11
|
|
|
12
12
|
key_value do
|
|
13
13
|
map "_class", to: :_class, render_default: true
|
|
@@ -8,7 +8,7 @@ module Expressir
|
|
|
8
8
|
|
|
9
9
|
attribute :type, ModelElement
|
|
10
10
|
attribute :expression, ModelElement
|
|
11
|
-
attribute :_class, :string, default: -> {
|
|
11
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
12
12
|
|
|
13
13
|
key_value do
|
|
14
14
|
map "_class", to: :_class, render_default: true
|
|
@@ -7,7 +7,7 @@ module Expressir
|
|
|
7
7
|
include Identifier
|
|
8
8
|
|
|
9
9
|
attribute :expression, ModelElement
|
|
10
|
-
attribute :_class, :string, default: -> {
|
|
10
|
+
attribute :_class, :string, default: -> { self.class.name }
|
|
11
11
|
|
|
12
12
|
key_value do
|
|
13
13
|
map "_class", to: :_class, render_default: true
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Expressir
|
|
4
|
+
module Model
|
|
5
|
+
module Declarations
|
|
6
|
+
autoload :Attribute, "#{__dir__}/declarations/attribute"
|
|
7
|
+
autoload :Constant, "#{__dir__}/declarations/constant"
|
|
8
|
+
autoload :DerivedAttribute, "#{__dir__}/declarations/derived_attribute"
|
|
9
|
+
autoload :Entity, "#{__dir__}/declarations/entity"
|
|
10
|
+
autoload :Function, "#{__dir__}/declarations/function"
|
|
11
|
+
autoload :Interface, "#{__dir__}/declarations/interface"
|
|
12
|
+
autoload :InterfaceItem, "#{__dir__}/declarations/interface_item"
|
|
13
|
+
autoload :InterfacedItem, "#{__dir__}/declarations/interfaced_item"
|
|
14
|
+
autoload :InverseAttribute, "#{__dir__}/declarations/inverse_attribute"
|
|
15
|
+
autoload :Parameter, "#{__dir__}/declarations/parameter"
|
|
16
|
+
autoload :Procedure, "#{__dir__}/declarations/procedure"
|
|
17
|
+
autoload :RemarkItem, "#{__dir__}/declarations/remark_item"
|
|
18
|
+
autoload :Rule, "#{__dir__}/declarations/rule"
|
|
19
|
+
autoload :Schema, "#{__dir__}/declarations/schema"
|
|
20
|
+
autoload :SchemaVersion, "#{__dir__}/declarations/schema_version"
|
|
21
|
+
autoload :SchemaVersionItem, "#{__dir__}/declarations/schema_version_item"
|
|
22
|
+
autoload :SubtypeConstraint, "#{__dir__}/declarations/subtype_constraint"
|
|
23
|
+
autoload :Type, "#{__dir__}/declarations/type"
|
|
24
|
+
autoload :UniqueRule, "#{__dir__}/declarations/unique_rule"
|
|
25
|
+
autoload :Variable, "#{__dir__}/declarations/variable"
|
|
26
|
+
autoload :WhereRule, "#{__dir__}/declarations/where_rule"
|
|
27
|
+
autoload :InformalPropositionRule,
|
|
28
|
+
"#{__dir__}/declarations/informal_proposition_rule"
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -50,8 +50,6 @@ module Expressir
|
|
|
50
50
|
# @param schema_path [String] Path to schema file
|
|
51
51
|
# @return [Array<Hash>] List of interfaces with :kind, :schema_name
|
|
52
52
|
def extract_interfaces(schema_path)
|
|
53
|
-
require_relative "../express/parser"
|
|
54
|
-
|
|
55
53
|
interfaces = []
|
|
56
54
|
|
|
57
55
|
# Parse the schema file properly
|