expressir 0.1.0
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 +7 -0
- data/.github/workflows/macos.yml +38 -0
- data/.github/workflows/ubuntu.yml +56 -0
- data/.github/workflows/windows.yml +40 -0
- data/.gitignore +12 -0
- data/.rspec +2 -0
- data/.rubocop.yml +508 -0
- data/Gemfile +4 -0
- data/README.adoc +147 -0
- data/Rakefile +6 -0
- data/bin/console +12 -0
- data/bin/rspec +29 -0
- data/bin/setup +8 -0
- data/docs/development.md +90 -0
- data/exe/expressir +20 -0
- data/expressir.gemspec +35 -0
- data/lib/expressir.rb +21 -0
- data/lib/expressir/cli.rb +27 -0
- data/lib/expressir/cli/ui.rb +36 -0
- data/lib/expressir/config.rb +23 -0
- data/lib/expressir/express.rb +12 -0
- data/lib/expressir/express/aggregate_dimension.rb +38 -0
- data/lib/expressir/express/attribute.rb +15 -0
- data/lib/expressir/express/comment.rb +7 -0
- data/lib/expressir/express/defined_type.rb +36 -0
- data/lib/expressir/express/derived.rb +65 -0
- data/lib/expressir/express/derived_aggregate.rb +43 -0
- data/lib/expressir/express/entity.rb +137 -0
- data/lib/expressir/express/explicit.rb +70 -0
- data/lib/expressir/express/explicit_aggregate.rb +46 -0
- data/lib/expressir/express/explicit_or_derived.rb +16 -0
- data/lib/expressir/express/global_rule.rb +44 -0
- data/lib/expressir/express/interface_specification.rb +51 -0
- data/lib/expressir/express/interfaced_item.rb +38 -0
- data/lib/expressir/express/inverse.rb +46 -0
- data/lib/expressir/express/inverse_aggregate.rb +37 -0
- data/lib/expressir/express/model_element.rb +7 -0
- data/lib/expressir/express/named_type.rb +19 -0
- data/lib/expressir/express/remark.rb +8 -0
- data/lib/expressir/express/repository.rb +306 -0
- data/lib/expressir/express/schema_definition.rb +96 -0
- data/lib/expressir/express/subtype_constraint.rb +14 -0
- data/lib/expressir/express/type.rb +26 -0
- data/lib/expressir/express/type_aggregate.rb +42 -0
- data/lib/expressir/express/type_enum.rb +29 -0
- data/lib/expressir/express/type_parser.rb +45 -0
- data/lib/expressir/express/type_select.rb +82 -0
- data/lib/expressir/express/unique_rule.rb +35 -0
- data/lib/expressir/express/where_rule.rb +32 -0
- data/lib/expressir/express_parser.rb +30 -0
- data/lib/expressir/parser.rb +6 -0
- data/lib/expressir/parser/owl_parser.rb +8 -0
- data/lib/expressir/version.rb +3 -0
- data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.exp +9589 -0
- data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.owl +36619 -0
- data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.xml +13294 -0
- data/original/examples/employment/eclipse/.project +17 -0
- data/original/examples/employment/eclipse/Export/Employment.png +0 -0
- data/original/examples/employment/eclipse/Express/employment_schema.exp +33 -0
- data/original/examples/employment/eclipse/Express/employment_schema.xmi +77 -0
- data/original/examples/employment/eclipse/Express/employment_schema.xml +93 -0
- data/original/examples/employment/eclipse/Models/Employment.uml +4 -0
- data/original/examples/employment/eclipse/Models/Employment.umldi +240 -0
- data/original/examples/employment/eclipse/readme.txt +7 -0
- data/original/examples/employment/employment_schema.exp +33 -0
- data/original/examples/employment/employment_schema.rb +232 -0
- data/original/examples/employment/employment_schema.xml +93 -0
- data/original/examples/employment/employment_schema___module.rb +46 -0
- data/original/examples/employment/employment_schema___p28attr.rb +126 -0
- data/original/examples/employment/employment_schema___p28inst.rb +26 -0
- data/original/examples/employment/example_employment_data.xml +1 -0
- data/original/examples/employment/example_employment_data_copy.xml +1 -0
- data/original/examples/employment/example_employment_reader.rb +30 -0
- data/original/examples/employment/example_employment_writer.rb +51 -0
- data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.exp +3710 -0
- data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.owl +35880 -0
- data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.xmi +15357 -0
- data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.xml +9468 -0
- data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.exp +8404 -0
- data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.owl +43147 -0
- data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.xmi +18341 -0
- data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.xml +11632 -0
- data/original/exp2ruby.rb +525 -0
- data/original/expsm.rb +34 -0
- data/original/mapping_owl.rb +1018 -0
- data/original/mapping_sysml.rb +2281 -0
- data/original/mapping_uml2.rb +599 -0
- data/original/mapping_uml2_eclipse.rb +433 -0
- data/original/reeper.rb +134 -0
- data/spec/acceptance/express_to_owl_spec.rb +18 -0
- data/spec/acceptance/version_spec.rb +12 -0
- data/spec/expressir/express/repository_spec.rb +25 -0
- data/spec/expressr_spec.rb +5 -0
- data/spec/spec_helper.rb +17 -0
- data/spec/support/console_helper.rb +29 -0
- metadata +239 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module Expressir
|
|
2
|
+
module Config
|
|
3
|
+
def configure
|
|
4
|
+
if block_given?
|
|
5
|
+
yield configuration
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def configuration
|
|
10
|
+
@configuration ||= Configuration.new
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
class Configuration
|
|
15
|
+
attr_accessor :logs
|
|
16
|
+
|
|
17
|
+
def initialize
|
|
18
|
+
@logs ||= %i(error)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
extend Config
|
|
23
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
module Expressir
|
|
2
|
+
module Express
|
|
3
|
+
class AggregateDimension
|
|
4
|
+
attr_accessor :aggrtype, :lower, :upper, :isUnique, :isOptionalArray
|
|
5
|
+
|
|
6
|
+
def initialize(options = {})
|
|
7
|
+
@aggrtype = "SET"
|
|
8
|
+
@lower = "0"
|
|
9
|
+
@upper = "?"
|
|
10
|
+
@isUnique = false
|
|
11
|
+
@isOptionalArray = false
|
|
12
|
+
|
|
13
|
+
@options = options
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def parse
|
|
17
|
+
document = @options.fetch(:document, nil)
|
|
18
|
+
extract_attributes(document) if document
|
|
19
|
+
|
|
20
|
+
self
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def self.parse(document)
|
|
24
|
+
new(document: document).parse
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
private
|
|
28
|
+
|
|
29
|
+
def extract_attributes(document)
|
|
30
|
+
@aggrtype = document.attributes["type"]
|
|
31
|
+
@lower = document.attributes["lower"]
|
|
32
|
+
@upper = document.attributes["upper"]
|
|
33
|
+
@isUnique = document.attributes["unique"] == "YES"
|
|
34
|
+
@isOptionalArray = document.attributes["optional"] == "YES"
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require "expressir/express/model_element"
|
|
2
|
+
|
|
3
|
+
module Expressir
|
|
4
|
+
module Express
|
|
5
|
+
class Attribute < ModelElement
|
|
6
|
+
attr_accessor :name, :entity, :domain, :redeclare_entity,
|
|
7
|
+
:redeclare_oldname
|
|
8
|
+
|
|
9
|
+
def initialize
|
|
10
|
+
@redeclare_entity = nil
|
|
11
|
+
@redeclare_oldname = nil
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
require "expressir/express/named_type"
|
|
2
|
+
|
|
3
|
+
module Expressir
|
|
4
|
+
module Express
|
|
5
|
+
class DefinedType < NamedType
|
|
6
|
+
def initialize(options = {})
|
|
7
|
+
@options = options
|
|
8
|
+
@schema = options.fetch(:schema)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def parse
|
|
12
|
+
document = @options.fetch(:document)
|
|
13
|
+
extract_type_attributes(document)
|
|
14
|
+
|
|
15
|
+
self
|
|
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_type_attributes(document)
|
|
25
|
+
@name = document.attributes["name"].to_s
|
|
26
|
+
@wheres = extract_where_rules(document)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def extract_where_rules(document)
|
|
30
|
+
document.xpath("where").map do |where|
|
|
31
|
+
Express::WhereRule.parse(where)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
module Expressir
|
|
2
|
+
module Express
|
|
3
|
+
class Derived < ExplicitOrDerived
|
|
4
|
+
attr_accessor :expression
|
|
5
|
+
|
|
6
|
+
def initialize(options = {})
|
|
7
|
+
@options = options
|
|
8
|
+
@entity = options.fetch(:entity, nil)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def parse
|
|
12
|
+
document = @options.fetch(:document, nil)
|
|
13
|
+
extract_common_attributes(document)
|
|
14
|
+
extract_type_specific_attributes(document)
|
|
15
|
+
|
|
16
|
+
self
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def self.parse(document, entity)
|
|
20
|
+
new(document: document, entity: entity).parse
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
private
|
|
24
|
+
|
|
25
|
+
def extract_type_specific_attributes(document); end
|
|
26
|
+
|
|
27
|
+
def extract_common_attributes(document)
|
|
28
|
+
@name = document.attributes["name"].to_s
|
|
29
|
+
@expression = document.attributes["expression"].to_s
|
|
30
|
+
@domain = extract_domain_name(document.xpath("typename"))
|
|
31
|
+
|
|
32
|
+
extract_builtintype_attributes(document)
|
|
33
|
+
extract_redeclaration_attributes(document)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def extract_domain_name(typename)
|
|
37
|
+
unless typename.empty?
|
|
38
|
+
typename.first.attributes["name"].to_s
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def extract_redeclaration_attributes(document)
|
|
43
|
+
redeclaration = document.xpath("redeclaration").first
|
|
44
|
+
|
|
45
|
+
if redeclaration
|
|
46
|
+
@redeclare_entity = redeclaration.attributes["entity-ref"].to_s
|
|
47
|
+
old_name = redeclaration.attributes["old_name"]
|
|
48
|
+
@redeclare_oldname = old_name.to_s if old_name
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def extract_builtintype_attributes(document)
|
|
53
|
+
builtin_type = document.xpath("builtintype").first
|
|
54
|
+
|
|
55
|
+
if builtin_type
|
|
56
|
+
@isBuiltin = true
|
|
57
|
+
@domain = builtin_type.attributes["type"].to_s
|
|
58
|
+
@width = builtin_type.attributes["width"].to_s
|
|
59
|
+
@fixed = builtin_type.attributes["fixed"] == "YES"
|
|
60
|
+
@precision = builtin_type.attributes["precision"].to_s
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
module Expressir
|
|
2
|
+
module Express
|
|
3
|
+
class DerivedAggregate < Derived
|
|
4
|
+
attr_accessor :rank, :dimensions
|
|
5
|
+
|
|
6
|
+
def initialize(options = {})
|
|
7
|
+
@rank = 0
|
|
8
|
+
@dimensions = []
|
|
9
|
+
|
|
10
|
+
super(options)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
private
|
|
14
|
+
|
|
15
|
+
def extract_type_specific_attributes(document)
|
|
16
|
+
@dimensions = document.xpath("aggregate").map do |aggregate|
|
|
17
|
+
Express::AggregateDimension.parse(aggregate)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
@rank = @dimensions.size
|
|
21
|
+
extract_inverse_aggregate(document)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# @todo: Non existance attributes
|
|
25
|
+
#
|
|
26
|
+
# In the codebase, they are trying to add couple of aggregate
|
|
27
|
+
# dimensions related attributes that was never a part of the
|
|
28
|
+
# Explict class, but for consistency we are keeping those as
|
|
29
|
+
# it is for now. let's revist those later and fix it.
|
|
30
|
+
#
|
|
31
|
+
def extract_inverse_aggregate(document)
|
|
32
|
+
aggregates = document.xpath("inverse.aggregate")
|
|
33
|
+
|
|
34
|
+
if !aggregates.empty?
|
|
35
|
+
dimension = Express::AggregateDimension.parse(aggregates.first)
|
|
36
|
+
@aggrtype = dimension.aggrtype
|
|
37
|
+
@lower = dimension.lower
|
|
38
|
+
@upper = dimension.upper
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
require "expressir/express/explicit"
|
|
2
|
+
require "expressir/express/inverse"
|
|
3
|
+
require "expressir/express/derived"
|
|
4
|
+
require "expressir/express/named_type"
|
|
5
|
+
require "expressir/express/where_rule"
|
|
6
|
+
require "expressir/express/unique_rule"
|
|
7
|
+
|
|
8
|
+
require "expressir/express/explicit_aggregate"
|
|
9
|
+
require "expressir/express/inverse_aggregate"
|
|
10
|
+
require "expressir/express/derived_aggregate"
|
|
11
|
+
|
|
12
|
+
module Expressir
|
|
13
|
+
module Express
|
|
14
|
+
class Entity < NamedType
|
|
15
|
+
attr_accessor :supertypes, :attributes, :isAbs, :superexpression,
|
|
16
|
+
:uniques, :subtypes_array, :supertypes_array, :attributes_all_array,
|
|
17
|
+
:supertypes_all
|
|
18
|
+
|
|
19
|
+
def initialize(document: nil, schema: nil, **options)
|
|
20
|
+
@isAbs = false
|
|
21
|
+
@attributes = []
|
|
22
|
+
@uniques = []
|
|
23
|
+
@wheres = []
|
|
24
|
+
@subtypes_array = []
|
|
25
|
+
@supertypes_array = []
|
|
26
|
+
@attributes_all_array = []
|
|
27
|
+
@supertypes = nil
|
|
28
|
+
@supertypes_all = nil
|
|
29
|
+
@superexpression = nil
|
|
30
|
+
@selectedBy = []
|
|
31
|
+
|
|
32
|
+
@schema = schema
|
|
33
|
+
@document = document
|
|
34
|
+
@options = options
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def find_attr_by_name( attrname )
|
|
38
|
+
for attribute in attributes
|
|
39
|
+
if attrname == attribute.name
|
|
40
|
+
return attribute
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
return nil
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def find_attr_by_name_full( attrname )
|
|
47
|
+
attr = find_attr_by_name( attrname )
|
|
48
|
+
if attr != nil
|
|
49
|
+
return attr
|
|
50
|
+
end
|
|
51
|
+
for supertype in supertypes_array
|
|
52
|
+
attr = supertype.find_attr_by_name_full (attrname)
|
|
53
|
+
if attr != nil
|
|
54
|
+
return attr
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def parse
|
|
60
|
+
extract_attributes(@document, @schema)
|
|
61
|
+
self
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def self.parse(document, schema)
|
|
65
|
+
new(document: document, schema: schema).parse
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
private
|
|
69
|
+
|
|
70
|
+
def extract_attributes(document, schema)
|
|
71
|
+
@name = document.attributes["name"].to_s
|
|
72
|
+
@supertypes = document.attributes["supertypes"]
|
|
73
|
+
@superexpression = document.attributes["super.expression"]
|
|
74
|
+
|
|
75
|
+
@wheres = extract_where_rules(document)
|
|
76
|
+
@uniques = extract_unique_rules(document)
|
|
77
|
+
|
|
78
|
+
@isAbs = document.attributes["supertypes"] == "YES" ||
|
|
79
|
+
document.attributes["abstract.entity"] == "YES"
|
|
80
|
+
|
|
81
|
+
@attributes = [
|
|
82
|
+
extract_eplicits(document),
|
|
83
|
+
extract_inverses(document),
|
|
84
|
+
extract_derivedes(document),
|
|
85
|
+
].flatten
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def extract_eplicits(document)
|
|
89
|
+
document.xpath("explicit").map do |explicit|
|
|
90
|
+
explicit_type = Express::Explicit
|
|
91
|
+
|
|
92
|
+
if !explicit.xpath("aggregate").empty?
|
|
93
|
+
explicit_type = Express::ExplicitAggregate
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
explicit_type.parse(explicit, self)
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def extract_inverses(document)
|
|
101
|
+
document.xpath("inverse").map do |inverse|
|
|
102
|
+
inverse_type = Express::Inverse
|
|
103
|
+
|
|
104
|
+
if !inverse.xpath("inverse.aggregate").empty?
|
|
105
|
+
inverse_type = Express::InverseAggregate
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
inverse_type.parse(inverse, self)
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def extract_derivedes(document)
|
|
113
|
+
document.xpath("derived").map do |derived|
|
|
114
|
+
derived_type = Express::Derived
|
|
115
|
+
|
|
116
|
+
if !derived.xpath("aggregate").empty?
|
|
117
|
+
derived_type = Express::DerivedAggregate
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
derived_type.parse(derived, self)
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def extract_unique_rules(document)
|
|
125
|
+
document.xpath("unique").map do |unique|
|
|
126
|
+
Express::UniqueRule.parse(unique)
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
def extract_where_rules(document)
|
|
131
|
+
document.xpath("where").map do |where|
|
|
132
|
+
Express::WhereRule.parse(where)
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
end
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
require "expressir/express/explicit_or_derived"
|
|
2
|
+
|
|
3
|
+
module Expressir
|
|
4
|
+
module Express
|
|
5
|
+
class Explicit < ExplicitOrDerived
|
|
6
|
+
attr_accessor :isOptional
|
|
7
|
+
|
|
8
|
+
def initialize(options = {})
|
|
9
|
+
@isOptional = false
|
|
10
|
+
@options = options
|
|
11
|
+
@entity = options.fetch(:entity, nil)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def parse
|
|
15
|
+
document = options.fetch(:document)
|
|
16
|
+
extract_common_attributes(document)
|
|
17
|
+
extract_type_specific_attributes(document)
|
|
18
|
+
|
|
19
|
+
self
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def self.parse(document, entity)
|
|
23
|
+
new(document: document, entity: entity).parse
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
private
|
|
27
|
+
|
|
28
|
+
attr_reader :options
|
|
29
|
+
|
|
30
|
+
def extract_type_specific_attributes(document); end
|
|
31
|
+
|
|
32
|
+
def extract_common_attributes(document)
|
|
33
|
+
@name = document.attributes["name"].to_s
|
|
34
|
+
@domain = extract_domain_name(document.xpath("typename"))
|
|
35
|
+
@isOptional = document.attributes["optional"].to_s == "YES"
|
|
36
|
+
|
|
37
|
+
extract_builtintype_attributes(document)
|
|
38
|
+
extract_redeclaration_attributes(document)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def extract_domain_name(typename)
|
|
42
|
+
unless typename.empty?
|
|
43
|
+
typename.first.attributes["name"].to_s
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def extract_builtintype_attributes(document)
|
|
48
|
+
builtin_type = document.xpath("builtintype").first
|
|
49
|
+
|
|
50
|
+
if builtin_type
|
|
51
|
+
@isBuiltin = true
|
|
52
|
+
@domain = builtin_type.attributes["type"].to_s
|
|
53
|
+
@width = builtin_type.attributes["width"].to_s
|
|
54
|
+
@fixed = builtin_type.attributes["fixed"] == "YES"
|
|
55
|
+
@precision = builtin_type.attributes["precision"].to_s
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def extract_redeclaration_attributes(document)
|
|
60
|
+
redeclaration = document.xpath("redeclaration").first
|
|
61
|
+
|
|
62
|
+
if redeclaration
|
|
63
|
+
@redeclare_entity = redeclaration.attributes["entity-ref"].to_s
|
|
64
|
+
old_name = redeclaration.attributes["old_name"]
|
|
65
|
+
@redeclare_oldname = old_name.to_s if old_name
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|