expressir 0.2.21-x86-mingw32 → 1.0.0-x86-mingw32
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/.github/workflows/rake.yml +7 -6
- data/.github/workflows/release.yml +22 -6
- data/.gitignore +2 -2
- data/demo.rb +5 -5
- data/exe/format +10 -73
- data/exe/format-test +81 -0
- data/expressir.gemspec +0 -1
- data/lib/expressir.rb +0 -1
- data/lib/expressir/cli.rb +0 -6
- data/lib/expressir/express/2.4/express_parser.so +0 -0
- data/lib/expressir/express/2.5/express_parser.so +0 -0
- data/lib/expressir/express/2.6/express_parser.so +0 -0
- data/lib/expressir/express/2.7/express_parser.so +0 -0
- data/lib/expressir/express/3.0/express_parser.so +0 -0
- data/lib/expressir/{express_exp → express}/cache.rb +3 -6
- data/lib/expressir/{express_exp → express}/formatter.rb +84 -68
- data/lib/expressir/express/hyperlink_formatter.rb +22 -0
- data/lib/expressir/express/model_visitor.rb +23 -0
- data/lib/expressir/{express_exp → express}/parser.rb +16 -5
- data/lib/expressir/express/resolve_references_model_visitor.rb +29 -0
- data/lib/expressir/{express_exp → express}/schema_head_formatter.rb +1 -1
- data/lib/expressir/{express_exp → express}/visitor.rb +67 -44
- data/lib/expressir/model.rb +5 -3
- data/lib/expressir/model/attribute.rb +13 -6
- data/lib/expressir/model/cache.rb +2 -2
- data/lib/expressir/model/constant.rb +10 -3
- data/lib/expressir/model/entity.rb +18 -16
- data/lib/expressir/model/enumeration_item.rb +8 -1
- data/lib/expressir/model/expressions/aggregate_initializer.rb +2 -2
- data/lib/expressir/model/expressions/aggregate_item.rb +2 -2
- data/lib/expressir/model/expressions/attribute_reference.rb +2 -2
- data/lib/expressir/model/expressions/binary_expression.rb +3 -3
- data/lib/expressir/model/expressions/call.rb +3 -3
- data/lib/expressir/model/expressions/entity_constructor.rb +3 -3
- data/lib/expressir/model/expressions/group_reference.rb +2 -2
- data/lib/expressir/model/expressions/index_reference.rb +3 -3
- data/lib/expressir/model/expressions/interval.rb +5 -5
- data/lib/expressir/model/expressions/query_expression.rb +6 -4
- data/lib/expressir/model/expressions/simple_reference.rb +5 -1
- data/lib/expressir/model/expressions/unary_expression.rb +2 -2
- data/lib/expressir/model/function.rb +23 -21
- data/lib/expressir/model/identifier.rb +6 -3
- data/lib/expressir/model/interface.rb +4 -4
- data/lib/expressir/model/interface_item.rb +2 -2
- data/lib/expressir/model/interfaced_item.rb +10 -9
- 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 +2 -2
- data/lib/expressir/model/model_element.rb +39 -27
- data/lib/expressir/model/parameter.rb +10 -3
- data/lib/expressir/model/procedure.rb +22 -20
- data/lib/expressir/model/remark_item.rb +15 -0
- data/lib/expressir/model/repository.rb +2 -2
- data/lib/expressir/model/rule.rb +27 -25
- data/lib/expressir/model/schema.rb +24 -20
- data/lib/expressir/model/schema_version.rb +15 -0
- data/lib/expressir/model/schema_version_item.rb +15 -0
- data/lib/expressir/model/statements/alias.rb +7 -5
- data/lib/expressir/model/statements/assignment.rb +2 -2
- data/lib/expressir/model/statements/call.rb +3 -3
- data/lib/expressir/model/statements/case.rb +4 -4
- data/lib/expressir/model/statements/case_action.rb +3 -3
- data/lib/expressir/model/statements/compound.rb +2 -2
- data/lib/expressir/model/statements/if.rb +5 -5
- data/lib/expressir/model/statements/repeat.rb +11 -9
- data/lib/expressir/model/statements/return.rb +1 -1
- data/lib/expressir/model/subtype_constraint.rb +13 -6
- data/lib/expressir/model/type.rb +12 -10
- data/lib/expressir/model/types/aggregate.rb +9 -2
- data/lib/expressir/model/types/array.rb +5 -5
- data/lib/expressir/model/types/bag.rb +3 -3
- data/lib/expressir/model/types/binary.rb +2 -2
- data/lib/expressir/model/types/enumeration.rb +5 -7
- data/lib/expressir/model/types/generic.rb +8 -1
- data/lib/expressir/model/types/generic_entity.rb +8 -1
- data/lib/expressir/model/types/list.rb +4 -4
- data/lib/expressir/model/types/real.rb +1 -1
- data/lib/expressir/model/types/select.rb +6 -8
- data/lib/expressir/model/types/set.rb +3 -3
- data/lib/expressir/model/types/string.rb +2 -2
- data/lib/expressir/model/unique_rule.rb +26 -0
- data/lib/expressir/model/variable.rb +10 -3
- data/lib/expressir/model/where_rule.rb +26 -0
- data/lib/expressir/version.rb +1 -1
- data/rakelib/cross-ruby.rake +1 -1
- data/spec/expressir/{express_exp → express}/cache_spec.rb +9 -9
- data/spec/expressir/express/formatter_spec.rb +127 -0
- data/spec/expressir/{express_exp → express}/parser_spec.rb +24 -24
- data/spec/expressir/model/model_element_spec.rb +112 -60
- data/{original/examples → spec}/syntax/multiple.exp +1 -1
- data/{original/examples → spec}/syntax/multiple.yaml +19 -5
- data/{original/examples → spec}/syntax/multiple_formatted.exp +1 -1
- data/{original/examples → spec}/syntax/multiple_hyperlink_formatted.exp +4 -4
- data/{original/examples → spec}/syntax/multiple_schema_head_hyperlink_formatted.exp +1 -1
- data/{original/examples → spec}/syntax/remark.exp +12 -10
- data/{original/examples → spec}/syntax/remark.yaml +36 -16
- data/{original/examples → spec}/syntax/remark_formatted.exp +3 -1
- data/spec/syntax/single.exp +4 -0
- data/spec/syntax/single.yaml +18 -0
- data/spec/syntax/single_formatted.exp +10 -0
- data/spec/syntax/single_formatted.yaml +36 -0
- data/{original/examples → spec}/syntax/syntax.exp +11 -11
- data/{original/examples → spec}/syntax/syntax.yaml +205 -108
- data/{original/examples → spec}/syntax/syntax_formatted.exp +11 -11
- data/spec/syntax/syntax_hyperlink_formatted.exp +902 -0
- data/{original/examples → spec}/syntax/syntax_schema_head_formatted.exp +1 -1
- metadata +41 -83
- data/lib/expressir/express.rb +0 -11
- data/lib/expressir/express/aggregate_dimension.rb +0 -38
- data/lib/expressir/express/attribute.rb +0 -15
- data/lib/expressir/express/comment.rb +0 -7
- data/lib/expressir/express/defined_type.rb +0 -36
- data/lib/expressir/express/derived.rb +0 -65
- data/lib/expressir/express/derived_aggregate.rb +0 -43
- data/lib/expressir/express/entity.rb +0 -137
- data/lib/expressir/express/explicit.rb +0 -70
- data/lib/expressir/express/explicit_aggregate.rb +0 -46
- data/lib/expressir/express/explicit_or_derived.rb +0 -16
- data/lib/expressir/express/global_rule.rb +0 -44
- data/lib/expressir/express/interface_specification.rb +0 -51
- data/lib/expressir/express/interfaced_item.rb +0 -38
- data/lib/expressir/express/inverse.rb +0 -46
- data/lib/expressir/express/inverse_aggregate.rb +0 -37
- data/lib/expressir/express/model_element.rb +0 -7
- data/lib/expressir/express/named_type.rb +0 -19
- data/lib/expressir/express/remark.rb +0 -8
- data/lib/expressir/express/repository.rb +0 -306
- data/lib/expressir/express/schema_definition.rb +0 -96
- data/lib/expressir/express/subtype_constraint.rb +0 -14
- data/lib/expressir/express/type.rb +0 -26
- data/lib/expressir/express/type_aggregate.rb +0 -42
- data/lib/expressir/express/type_enum.rb +0 -29
- data/lib/expressir/express/type_parser.rb +0 -45
- data/lib/expressir/express/type_select.rb +0 -82
- data/lib/expressir/express/unique_rule.rb +0 -35
- data/lib/expressir/express/where_rule.rb +0 -32
- data/lib/expressir/express_exp/2.4/express_parser.so +0 -0
- data/lib/expressir/express_exp/2.5/express_parser.so +0 -0
- data/lib/expressir/express_exp/2.6/express_parser.so +0 -0
- data/lib/expressir/express_exp/2.7/express_parser.so +0 -0
- data/lib/expressir/express_exp/3.0/express_parser.so +0 -0
- data/lib/expressir/express_exp/hyperlink_formatter.rb +0 -27
- data/lib/expressir/express_parser.rb +0 -30
- data/lib/expressir/model/informal_proposition.rb +0 -18
- data/lib/expressir/model/unique.rb +0 -19
- data/lib/expressir/model/where.rb +0 -19
- data/lib/expressir/parser.rb +0 -6
- data/lib/expressir/parser/owl_parser.rb +0 -8
- data/original/examples/syntax/single.exp +0 -3
- data/original/examples/syntax/single.yaml +0 -9
- data/original/examples/syntax/single_formatted.exp +0 -6
- data/original/examples/syntax/single_formatted.yaml +0 -19
- data/spec/acceptance/express_to_owl_spec.rb +0 -18
- data/spec/expressir/express/repository_spec.rb +0 -25
- data/spec/expressir/express_exp/formatter_spec.rb +0 -111
@@ -1,96 +0,0 @@
|
|
1
|
-
require "expressir/express/entity"
|
2
|
-
require "expressir/express/type_parser"
|
3
|
-
require "expressir/express/global_rule"
|
4
|
-
|
5
|
-
module Expressir
|
6
|
-
module Express
|
7
|
-
class SchemaDefinition < ModelElement
|
8
|
-
attr_accessor :contents, :name, :identification, :all_schema_array
|
9
|
-
|
10
|
-
def initialize(document = {})
|
11
|
-
@document = document
|
12
|
-
@all_schema_array = []
|
13
|
-
|
14
|
-
extract_attributes(@document)
|
15
|
-
end
|
16
|
-
|
17
|
-
# @todo Existing Code
|
18
|
-
#
|
19
|
-
# Please revisit this soon, and check if this is necessary
|
20
|
-
# after our recent restrucutre, if not then delegate this
|
21
|
-
# behavior to the respective instanace.
|
22
|
-
#
|
23
|
-
def find_namedtype_by_name(typename)
|
24
|
-
## search current schema and interfaced item aliases
|
25
|
-
nt = contents.detect do |t|
|
26
|
-
t.is_a?(Express::NamedType) && t.name == typename
|
27
|
-
end
|
28
|
-
|
29
|
-
if nt != nil
|
30
|
-
return nt
|
31
|
-
end
|
32
|
-
|
33
|
-
for schema in self.all_schema_array
|
34
|
-
## search all interfaced schemas
|
35
|
-
nt = schema.contents.detect do |t|
|
36
|
-
t.is_a?(Express::NamedType) && t.name == typename
|
37
|
-
end
|
38
|
-
|
39
|
-
if nt != nil
|
40
|
-
return nt
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
Expressir.ui.info("*** NOT HERE " + typename + " IN " + self.name)
|
45
|
-
Expressir.ui.info("*** SEARCHED " + all_schema_array.size.to_s + " SCHEMAS:")
|
46
|
-
|
47
|
-
all_schema_array.each do |schema|
|
48
|
-
Expressir.ui.info(" - " + schema.name)
|
49
|
-
end
|
50
|
-
|
51
|
-
nil
|
52
|
-
end
|
53
|
-
|
54
|
-
private
|
55
|
-
|
56
|
-
def extract_attributes(document)
|
57
|
-
@name = document.attributes["name"].to_s
|
58
|
-
|
59
|
-
contents = extract_interfaces(document)
|
60
|
-
contents += extract_entities(document)
|
61
|
-
contents += extract_types(document)
|
62
|
-
contents += extract_rules(document)
|
63
|
-
|
64
|
-
@contents = contents.flatten
|
65
|
-
end
|
66
|
-
|
67
|
-
# todo: current version does not contain any interface, so we need
|
68
|
-
# a solid example to test out this funcitonaality. But keeping it
|
69
|
-
# pending for now, let's revisit soon.
|
70
|
-
#
|
71
|
-
def extract_interfaces(document)
|
72
|
-
document.xpath("interface").map do |interface|
|
73
|
-
InterfaceSpecification.parse(interface, name)
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
def extract_entities(document)
|
78
|
-
document.xpath("//entity").map do |entity|
|
79
|
-
Express::Entity.parse(entity, name)
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
def extract_types(document)
|
84
|
-
document.xpath("type").map do |type_document|
|
85
|
-
Express::TypeParser.parse(type_document, name)
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
def extract_rules(document)
|
90
|
-
document.xpath("rule").map do |rule|
|
91
|
-
Express::GlobalRule.parse(rule, name)
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
require "expressir/express/model_element"
|
2
|
-
|
3
|
-
module Expressir
|
4
|
-
module Express
|
5
|
-
class SubtypeConstraint < ModelElement
|
6
|
-
attr_accessor :name, :entity, :isAbs, :totalover, :expression
|
7
|
-
|
8
|
-
def initialize
|
9
|
-
@isAbs = false
|
10
|
-
@totalover = nil
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
require "expressir/express/defined_type"
|
2
|
-
|
3
|
-
module Expressir
|
4
|
-
module Express
|
5
|
-
class Type < DefinedType
|
6
|
-
attr_accessor :isBuiltin, :domain, :isFixed, :width, :precision
|
7
|
-
|
8
|
-
def initialize(options = {})
|
9
|
-
@isBuiltin = false
|
10
|
-
@isFixed = false
|
11
|
-
@width = nil
|
12
|
-
@precision = nil
|
13
|
-
@wheres = []
|
14
|
-
@selectedBy = []
|
15
|
-
|
16
|
-
super(options)
|
17
|
-
end
|
18
|
-
|
19
|
-
private
|
20
|
-
|
21
|
-
def extract_type_attributes(document)
|
22
|
-
super(document)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
@@ -1,42 +0,0 @@
|
|
1
|
-
require "expressir/express/type"
|
2
|
-
|
3
|
-
module Expressir
|
4
|
-
module Express
|
5
|
-
class TypeAggregate < Type
|
6
|
-
attr_accessor :rank, :dimensions
|
7
|
-
def initialize(options = {})
|
8
|
-
@rank = 0
|
9
|
-
@dimensions = []
|
10
|
-
@wheres = []
|
11
|
-
@selectedBy = []
|
12
|
-
|
13
|
-
super(options)
|
14
|
-
end
|
15
|
-
|
16
|
-
private
|
17
|
-
|
18
|
-
def extract_type_attributes(document)
|
19
|
-
@name = document.first.attributes["name"].to_s
|
20
|
-
@dimensions = document.map do |aggregate|
|
21
|
-
Express::AggregateDimension.parse(aggregate)
|
22
|
-
end
|
23
|
-
|
24
|
-
@rank = @dimensions.size
|
25
|
-
extract_builtintype_attributes(document)
|
26
|
-
end
|
27
|
-
|
28
|
-
def extract_builtintype_attributes(document)
|
29
|
-
builtin_type = document.xpath("builtintype").first
|
30
|
-
|
31
|
-
if builtin_type
|
32
|
-
@isBuiltin = true
|
33
|
-
@domain = builtin_type.attributes["type"].to_s
|
34
|
-
@width = builtin_type.attributes["width"].to_s
|
35
|
-
@fixed = builtin_type.attributes["fixed"] == "YES"
|
36
|
-
@precision = builtin_type.attributes["precision"].to_s
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
@@ -1,29 +0,0 @@
|
|
1
|
-
require "expressir/express/defined_type"
|
2
|
-
|
3
|
-
module Expressir
|
4
|
-
module Express
|
5
|
-
class TypeEnum < DefinedType
|
6
|
-
attr_accessor :items_array, :items, :extends, :extends_item,
|
7
|
-
:isExtensible, :allitems, :isBuiltin
|
8
|
-
|
9
|
-
def initialize(options = {})
|
10
|
-
@isBuiltin = false
|
11
|
-
@selectedBy = []
|
12
|
-
|
13
|
-
super(options)
|
14
|
-
end
|
15
|
-
|
16
|
-
private
|
17
|
-
|
18
|
-
def extract_type_attributes(document)
|
19
|
-
if document.class == Nokogiri::XML::NodeSet
|
20
|
-
document = document.first
|
21
|
-
end
|
22
|
-
|
23
|
-
@items = document.attributes["items"]
|
24
|
-
@items_array = items.to_s.scan(/\w+/)
|
25
|
-
super(document)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
require "expressir/express/type_enum"
|
2
|
-
require "expressir/express/type_select"
|
3
|
-
require "expressir/express/type_aggregate"
|
4
|
-
|
5
|
-
module Expressir
|
6
|
-
module Express
|
7
|
-
class TypeParser
|
8
|
-
def initialize(options = {})
|
9
|
-
@options = options
|
10
|
-
@schema = options.fetch(:schema, nil)
|
11
|
-
end
|
12
|
-
|
13
|
-
def parse
|
14
|
-
document = @options.fetch(:document, nil)
|
15
|
-
extract_attributes(document) if document
|
16
|
-
end
|
17
|
-
|
18
|
-
def self.parse(document, schema)
|
19
|
-
new(document: document, schema: schema).parse
|
20
|
-
end
|
21
|
-
|
22
|
-
private
|
23
|
-
|
24
|
-
def extract_attributes(document)
|
25
|
-
document_with_klass = document_with_klass(document)
|
26
|
-
document_with_klass[:cls].parse(document_with_klass[:document], @schema)
|
27
|
-
end
|
28
|
-
|
29
|
-
def document_with_klass(document)
|
30
|
-
if !document.xpath("select").empty?
|
31
|
-
{ document: document.xpath("select"), cls: Express::TypeSelect }
|
32
|
-
|
33
|
-
elsif !document.xpath("enumeration").empty?
|
34
|
-
{ document: document.xpath("enumeration"), cls: Express::TypeEnum }
|
35
|
-
|
36
|
-
elsif !document.xpath("aggregate").empty?
|
37
|
-
{ document: document.xpath("aggregate"), cls: Express::TypeAggregate }
|
38
|
-
|
39
|
-
else
|
40
|
-
{ document: document, cls: Express::Type }
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
@@ -1,82 +0,0 @@
|
|
1
|
-
require "expressir/express/defined_type"
|
2
|
-
|
3
|
-
module Expressir
|
4
|
-
module Express
|
5
|
-
class TypeSelect < DefinedType
|
6
|
-
attr_accessor :selectitems_array, :selectitems, :extends, :extends_item,
|
7
|
-
:isExtensible, :selectitems_all, :isGenericEntity, :isBuiltin,
|
8
|
-
:cleaned_select_items
|
9
|
-
|
10
|
-
def initialize(options = {})
|
11
|
-
@isBuiltin = false
|
12
|
-
@isExtensible = false
|
13
|
-
@isGenericEntity = false
|
14
|
-
@selectitems = nil
|
15
|
-
@selectitems_array = []
|
16
|
-
@cleaned_select_items = nil
|
17
|
-
@wheres = []
|
18
|
-
@selectedBy = []
|
19
|
-
|
20
|
-
super(options)
|
21
|
-
end
|
22
|
-
|
23
|
-
##
|
24
|
-
# set cleaned_select_items = process select removing unnecessary
|
25
|
-
# entity types (i.e. if supertype is there)
|
26
|
-
#
|
27
|
-
def clean_select_items
|
28
|
-
@cleaned_select_items = ""
|
29
|
-
|
30
|
-
if selectitems != nil
|
31
|
-
itemname_list = selectitems.scan(/\w+/)
|
32
|
-
dupitem_list = []
|
33
|
-
for itemname in itemname_list
|
34
|
-
itemptr = schema.find_namedtype_by_name( itemname )
|
35
|
-
|
36
|
-
if itemptr.kind_of? EXPSM::Entity
|
37
|
-
|
38
|
-
for itemname2 in itemname_list
|
39
|
-
thetype = schema.find_namedtype_by_name( itemname2 )
|
40
|
-
|
41
|
-
if thetype != nil
|
42
|
-
if itemptr.supertypes_all != nil &&
|
43
|
-
itemptr.supertypes_all.include?(thetype.name)
|
44
|
-
|
45
|
-
dupitem_list.push itemname
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
itemname_list.each do |itemname|
|
53
|
-
if !dupitem_list.include? itemname
|
54
|
-
@cleaned_select_items = @cleaned_select_items + " " + itemname
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
@cleaned_select_items = @cleaned_select_items.lstrip
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
private
|
63
|
-
|
64
|
-
def extract_type_attributes(document)
|
65
|
-
if document.class == Nokogiri::XML::NodeSet
|
66
|
-
document = document.first
|
67
|
-
end
|
68
|
-
|
69
|
-
@selectitems = document.attributes["selectitems"]
|
70
|
-
@extends = document.attributes["basedon"]
|
71
|
-
@isExtensible = document.attributes["extensible"] == "YES"
|
72
|
-
@isGenericEntity = document.attributes["genericentity"] == "YES"
|
73
|
-
|
74
|
-
if isExtensible
|
75
|
-
@selectitems_all = selectitems
|
76
|
-
end
|
77
|
-
|
78
|
-
super(document)
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
require "expressir/express/model_element"
|
2
|
-
|
3
|
-
module Expressir
|
4
|
-
module Express
|
5
|
-
class UniqueRule < ModelElement
|
6
|
-
attr_accessor :name, :attributes
|
7
|
-
|
8
|
-
def initialize(options)
|
9
|
-
@name = nil
|
10
|
-
@attributes = []
|
11
|
-
@options = options
|
12
|
-
end
|
13
|
-
|
14
|
-
def parse
|
15
|
-
document = @options.fetch(:document, nil)
|
16
|
-
extract_unique_attributes(document)
|
17
|
-
|
18
|
-
self
|
19
|
-
end
|
20
|
-
|
21
|
-
def self.parse(document)
|
22
|
-
new(document: document).parse
|
23
|
-
end
|
24
|
-
|
25
|
-
private
|
26
|
-
|
27
|
-
def extract_unique_attributes(document)
|
28
|
-
@name = document.attributes["label"].to_s
|
29
|
-
@attributes = document.xpath("unique.attribute").map do |attribute|
|
30
|
-
attribute.attributes["attribute"]
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
require "expressir/express/model_element"
|
2
|
-
|
3
|
-
module Expressir
|
4
|
-
module Express
|
5
|
-
class WhereRule < ModelElement
|
6
|
-
attr_accessor :name, :expression
|
7
|
-
|
8
|
-
def initialize(options = {})
|
9
|
-
@name = nil
|
10
|
-
@options = options
|
11
|
-
end
|
12
|
-
|
13
|
-
def parse
|
14
|
-
document = @options.fetch(:where, nil)
|
15
|
-
extract_where_attributes(document) if document
|
16
|
-
|
17
|
-
self
|
18
|
-
end
|
19
|
-
|
20
|
-
def self.parse(document)
|
21
|
-
new(document: document).parse
|
22
|
-
end
|
23
|
-
|
24
|
-
private
|
25
|
-
|
26
|
-
def extract_where_attributes(document)
|
27
|
-
@name = document.attributes["label"].to_s
|
28
|
-
@expression = document.attributes["expression"]
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -1,27 +0,0 @@
|
|
1
|
-
module Expressir
|
2
|
-
module ExpressExp
|
3
|
-
module HyperlinkFormatter
|
4
|
-
def format_expressions_simple_reference(node)
|
5
|
-
return node.id if node.parent.is_a? Model::Expressions::AttributeReference
|
6
|
-
|
7
|
-
# skip hyperlink if target node can't be found
|
8
|
-
target_node = if node.parent.is_a? Model::InterfaceItem
|
9
|
-
node.find("#{node.parent.parent.schema.id}.#{node.parent.ref.id}")
|
10
|
-
else
|
11
|
-
node.find(node.id)
|
12
|
-
end
|
13
|
-
return node.id unless target_node
|
14
|
-
|
15
|
-
# skip hyperlink for implicit scopes
|
16
|
-
return node.id if target_node.is_a? Model::Statements::Alias or target_node.is_a? Model::Statements::Repeat or target_node.is_a? Model::Expressions::QueryExpression
|
17
|
-
|
18
|
-
# skip hyperlink if this node and target node are in the same main item
|
19
|
-
node_path_parts = node.path.split(".")
|
20
|
-
target_node_path_parts = target_node.path.split(".")
|
21
|
-
return node.id if node_path_parts[0..1] == target_node_path_parts[0..1]
|
22
|
-
|
23
|
-
"{{{<<express:#{target_node.path},#{node.id}>>}}}"
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|