expressir 0.2.27 → 1.0.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 +4 -4
- data/.github/workflows/rake.yml +3 -3
- data/.gitignore +2 -2
- data/demo.rb +5 -5
- data/exe/format +8 -8
- data/exe/format-test +11 -11
- data/expressir.gemspec +0 -1
- data/ext/express-parser/extconf.rb +1 -1
- data/lib/expressir.rb +0 -1
- data/lib/expressir/cli.rb +0 -6
- data/lib/expressir/{express_exp → express}/cache.rb +3 -6
- data/lib/expressir/{express_exp → express}/formatter.rb +72 -66
- data/lib/expressir/{express_exp → express}/hyperlink_formatter.rb +1 -1
- data/lib/expressir/{express_exp → express}/model_visitor.rb +1 -1
- data/lib/expressir/{express_exp → express}/parser.rb +3 -3
- data/lib/expressir/{express_exp → express}/resolve_references_model_visitor.rb +2 -2
- data/lib/expressir/{express_exp → express}/schema_head_formatter.rb +1 -1
- data/lib/expressir/{express_exp → express}/visitor.rb +21 -25
- data/lib/expressir/model.rb +2 -2
- data/lib/expressir/model/entity.rb +6 -6
- data/lib/expressir/model/model_element.rb +1 -1
- data/lib/expressir/model/rule.rb +3 -3
- data/lib/expressir/model/type.rb +6 -6
- data/lib/expressir/model/types/enumeration.rb +2 -4
- data/lib/expressir/model/types/select.rb +2 -4
- data/lib/expressir/model/{unique.rb → unique_rule.rb} +1 -1
- data/lib/expressir/model/{where.rb → where_rule.rb} +1 -1
- 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 +23 -23
- data/spec/expressir/model/model_element_spec.rb +45 -45
- data/{original/examples → spec}/syntax/multiple.exp +0 -0
- data/{original/examples → spec}/syntax/multiple.yaml +4 -4
- data/{original/examples → spec}/syntax/multiple_formatted.exp +0 -0
- data/{original/examples → spec}/syntax/multiple_hyperlink_formatted.exp +0 -0
- data/{original/examples → spec}/syntax/multiple_schema_head_hyperlink_formatted.exp +0 -0
- data/{original/examples → spec}/syntax/remark.exp +0 -0
- data/{original/examples → spec}/syntax/remark.yaml +13 -13
- data/{original/examples → spec}/syntax/remark_formatted.exp +0 -0
- data/{original/examples → spec}/syntax/single.exp +0 -0
- data/{original/examples → spec}/syntax/single.yaml +1 -1
- data/{original/examples → spec}/syntax/single_formatted.exp +0 -0
- data/{original/examples → spec}/syntax/single_formatted.yaml +1 -1
- data/{original/examples → spec}/syntax/syntax.exp +10 -10
- data/{original/examples → spec}/syntax/syntax.yaml +106 -106
- data/{original/examples → spec}/syntax/syntax_formatted.exp +10 -10
- data/{original/examples → spec}/syntax/syntax_hyperlink_formatted.exp +10 -10
- data/{original/examples → spec}/syntax/syntax_schema_head_formatted.exp +0 -0
- metadata +33 -81
- 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_parser.rb +0 -30
- data/lib/expressir/parser.rb +0 -6
- data/lib/expressir/parser/owl_parser.rb +0 -8
- 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 -127
@@ -747,19 +747,19 @@ PROCEDURE types;
|
|
747
747
|
END_TYPE;
|
748
748
|
TYPE select_extensible_generic_entity_type = EXTENSIBLE GENERIC_ENTITY SELECT;
|
749
749
|
END_TYPE;
|
750
|
-
TYPE
|
750
|
+
TYPE select_item_type = SELECT
|
751
751
|
(empty_type);
|
752
752
|
END_TYPE;
|
753
|
-
TYPE
|
753
|
+
TYPE select_multiple_item_type = SELECT
|
754
754
|
(empty_type,
|
755
755
|
empty_type);
|
756
756
|
END_TYPE;
|
757
|
-
TYPE
|
757
|
+
TYPE select_based_on_type = SELECT BASED_ON select_type;
|
758
758
|
END_TYPE;
|
759
|
-
TYPE
|
759
|
+
TYPE select_based_on_item_type = SELECT BASED_ON select_type WITH
|
760
760
|
(empty_type);
|
761
761
|
END_TYPE;
|
762
|
-
TYPE
|
762
|
+
TYPE select_based_on_multiple_item_type = SELECT BASED_ON select_type WITH
|
763
763
|
(empty_type,
|
764
764
|
empty_type);
|
765
765
|
END_TYPE;
|
@@ -767,19 +767,19 @@ PROCEDURE types;
|
|
767
767
|
END_TYPE;
|
768
768
|
TYPE enumeration_extensible_type = EXTENSIBLE ENUMERATION;
|
769
769
|
END_TYPE;
|
770
|
-
TYPE
|
770
|
+
TYPE enumeration_item_type = ENUMERATION OF
|
771
771
|
(test);
|
772
772
|
END_TYPE;
|
773
|
-
TYPE
|
773
|
+
TYPE enumeration_multiple_item_type = ENUMERATION OF
|
774
774
|
(test,
|
775
775
|
test2);
|
776
776
|
END_TYPE;
|
777
|
-
TYPE
|
777
|
+
TYPE enumeration_based_on_type = ENUMERATION BASED_ON enumeration_type;
|
778
778
|
END_TYPE;
|
779
|
-
TYPE
|
779
|
+
TYPE enumeration_based_on_item_type = ENUMERATION BASED_ON enumeration_type WITH
|
780
780
|
(test);
|
781
781
|
END_TYPE;
|
782
|
-
TYPE
|
782
|
+
TYPE enumeration_based_on_multiple_item_type = ENUMERATION BASED_ON enumeration_type WITH
|
783
783
|
(test,
|
784
784
|
test2);
|
785
785
|
END_TYPE;
|
@@ -747,19 +747,19 @@ PROCEDURE types;
|
|
747
747
|
END_TYPE;
|
748
748
|
TYPE select_extensible_generic_entity_type = EXTENSIBLE GENERIC_ENTITY SELECT;
|
749
749
|
END_TYPE;
|
750
|
-
TYPE
|
750
|
+
TYPE select_item_type = SELECT
|
751
751
|
({{{<<express:syntax_schema.empty_type,empty_type>>}}});
|
752
752
|
END_TYPE;
|
753
|
-
TYPE
|
753
|
+
TYPE select_multiple_item_type = SELECT
|
754
754
|
({{{<<express:syntax_schema.empty_type,empty_type>>}}},
|
755
755
|
{{{<<express:syntax_schema.empty_type,empty_type>>}}});
|
756
756
|
END_TYPE;
|
757
|
-
TYPE
|
757
|
+
TYPE select_based_on_type = SELECT BASED_ON select_type;
|
758
758
|
END_TYPE;
|
759
|
-
TYPE
|
759
|
+
TYPE select_based_on_item_type = SELECT BASED_ON select_type WITH
|
760
760
|
({{{<<express:syntax_schema.empty_type,empty_type>>}}});
|
761
761
|
END_TYPE;
|
762
|
-
TYPE
|
762
|
+
TYPE select_based_on_multiple_item_type = SELECT BASED_ON select_type WITH
|
763
763
|
({{{<<express:syntax_schema.empty_type,empty_type>>}}},
|
764
764
|
{{{<<express:syntax_schema.empty_type,empty_type>>}}});
|
765
765
|
END_TYPE;
|
@@ -767,19 +767,19 @@ PROCEDURE types;
|
|
767
767
|
END_TYPE;
|
768
768
|
TYPE enumeration_extensible_type = EXTENSIBLE ENUMERATION;
|
769
769
|
END_TYPE;
|
770
|
-
TYPE
|
770
|
+
TYPE enumeration_item_type = ENUMERATION OF
|
771
771
|
(test);
|
772
772
|
END_TYPE;
|
773
|
-
TYPE
|
773
|
+
TYPE enumeration_multiple_item_type = ENUMERATION OF
|
774
774
|
(test,
|
775
775
|
test2);
|
776
776
|
END_TYPE;
|
777
|
-
TYPE
|
777
|
+
TYPE enumeration_based_on_type = ENUMERATION BASED_ON enumeration_type;
|
778
778
|
END_TYPE;
|
779
|
-
TYPE
|
779
|
+
TYPE enumeration_based_on_item_type = ENUMERATION BASED_ON enumeration_type WITH
|
780
780
|
(test);
|
781
781
|
END_TYPE;
|
782
|
-
TYPE
|
782
|
+
TYPE enumeration_based_on_multiple_item_type = ENUMERATION BASED_ON enumeration_type WITH
|
783
783
|
(test,
|
784
784
|
test2);
|
785
785
|
END_TYPE;
|
File without changes
|
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: expressir
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
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-
|
11
|
+
date: 2021-04-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: nokogiri
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.10'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '1.10'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: thor
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -540,44 +526,14 @@ files:
|
|
540
526
|
- lib/expressir/cli.rb
|
541
527
|
- lib/expressir/cli/ui.rb
|
542
528
|
- lib/expressir/config.rb
|
543
|
-
- lib/expressir/express.rb
|
544
|
-
- lib/expressir/express/
|
545
|
-
- lib/expressir/express/
|
546
|
-
- lib/expressir/express/
|
547
|
-
- lib/expressir/express/
|
548
|
-
- lib/expressir/express/
|
549
|
-
- lib/expressir/express/
|
550
|
-
- lib/expressir/express/
|
551
|
-
- lib/expressir/express/explicit.rb
|
552
|
-
- lib/expressir/express/explicit_aggregate.rb
|
553
|
-
- lib/expressir/express/explicit_or_derived.rb
|
554
|
-
- lib/expressir/express/global_rule.rb
|
555
|
-
- lib/expressir/express/interface_specification.rb
|
556
|
-
- lib/expressir/express/interfaced_item.rb
|
557
|
-
- lib/expressir/express/inverse.rb
|
558
|
-
- lib/expressir/express/inverse_aggregate.rb
|
559
|
-
- lib/expressir/express/model_element.rb
|
560
|
-
- lib/expressir/express/named_type.rb
|
561
|
-
- lib/expressir/express/remark.rb
|
562
|
-
- lib/expressir/express/repository.rb
|
563
|
-
- lib/expressir/express/schema_definition.rb
|
564
|
-
- lib/expressir/express/subtype_constraint.rb
|
565
|
-
- lib/expressir/express/type.rb
|
566
|
-
- lib/expressir/express/type_aggregate.rb
|
567
|
-
- lib/expressir/express/type_enum.rb
|
568
|
-
- lib/expressir/express/type_parser.rb
|
569
|
-
- lib/expressir/express/type_select.rb
|
570
|
-
- lib/expressir/express/unique_rule.rb
|
571
|
-
- lib/expressir/express/where_rule.rb
|
572
|
-
- lib/expressir/express_exp/cache.rb
|
573
|
-
- lib/expressir/express_exp/formatter.rb
|
574
|
-
- lib/expressir/express_exp/hyperlink_formatter.rb
|
575
|
-
- lib/expressir/express_exp/model_visitor.rb
|
576
|
-
- lib/expressir/express_exp/parser.rb
|
577
|
-
- lib/expressir/express_exp/resolve_references_model_visitor.rb
|
578
|
-
- lib/expressir/express_exp/schema_head_formatter.rb
|
579
|
-
- lib/expressir/express_exp/visitor.rb
|
580
|
-
- lib/expressir/express_parser.rb
|
529
|
+
- lib/expressir/express/cache.rb
|
530
|
+
- lib/expressir/express/formatter.rb
|
531
|
+
- lib/expressir/express/hyperlink_formatter.rb
|
532
|
+
- lib/expressir/express/model_visitor.rb
|
533
|
+
- lib/expressir/express/parser.rb
|
534
|
+
- lib/expressir/express/resolve_references_model_visitor.rb
|
535
|
+
- lib/expressir/express/schema_head_formatter.rb
|
536
|
+
- lib/expressir/express/visitor.rb
|
581
537
|
- lib/expressir/model.rb
|
582
538
|
- lib/expressir/model/attribute.rb
|
583
539
|
- lib/expressir/model/cache.rb
|
@@ -645,11 +601,9 @@ files:
|
|
645
601
|
- lib/expressir/model/types/select.rb
|
646
602
|
- lib/expressir/model/types/set.rb
|
647
603
|
- lib/expressir/model/types/string.rb
|
648
|
-
- lib/expressir/model/
|
604
|
+
- lib/expressir/model/unique_rule.rb
|
649
605
|
- lib/expressir/model/variable.rb
|
650
|
-
- lib/expressir/model/
|
651
|
-
- lib/expressir/parser.rb
|
652
|
-
- lib/expressir/parser/owl_parser.rb
|
606
|
+
- lib/expressir/model/where_rule.rb
|
653
607
|
- lib/expressir/version.rb
|
654
608
|
- original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.exp
|
655
609
|
- original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.owl
|
@@ -680,23 +634,6 @@ files:
|
|
680
634
|
- original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.owl
|
681
635
|
- original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.xmi
|
682
636
|
- original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.xml
|
683
|
-
- original/examples/syntax/multiple.exp
|
684
|
-
- original/examples/syntax/multiple.yaml
|
685
|
-
- original/examples/syntax/multiple_formatted.exp
|
686
|
-
- original/examples/syntax/multiple_hyperlink_formatted.exp
|
687
|
-
- original/examples/syntax/multiple_schema_head_hyperlink_formatted.exp
|
688
|
-
- original/examples/syntax/remark.exp
|
689
|
-
- original/examples/syntax/remark.yaml
|
690
|
-
- original/examples/syntax/remark_formatted.exp
|
691
|
-
- original/examples/syntax/single.exp
|
692
|
-
- original/examples/syntax/single.yaml
|
693
|
-
- original/examples/syntax/single_formatted.exp
|
694
|
-
- original/examples/syntax/single_formatted.yaml
|
695
|
-
- original/examples/syntax/syntax.exp
|
696
|
-
- original/examples/syntax/syntax.yaml
|
697
|
-
- original/examples/syntax/syntax_formatted.exp
|
698
|
-
- original/examples/syntax/syntax_hyperlink_formatted.exp
|
699
|
-
- original/examples/syntax/syntax_schema_head_formatted.exp
|
700
637
|
- original/exp2ruby.rb
|
701
638
|
- original/expsm.rb
|
702
639
|
- original/mapping_owl.rb
|
@@ -705,16 +642,31 @@ files:
|
|
705
642
|
- original/mapping_uml2_eclipse.rb
|
706
643
|
- original/reeper.rb
|
707
644
|
- rakelib/cross-ruby.rake
|
708
|
-
- spec/acceptance/express_to_owl_spec.rb
|
709
645
|
- spec/acceptance/version_spec.rb
|
710
|
-
- spec/expressir/express/
|
711
|
-
- spec/expressir/
|
712
|
-
- spec/expressir/
|
713
|
-
- spec/expressir/express_exp/parser_spec.rb
|
646
|
+
- spec/expressir/express/cache_spec.rb
|
647
|
+
- spec/expressir/express/formatter_spec.rb
|
648
|
+
- spec/expressir/express/parser_spec.rb
|
714
649
|
- spec/expressir/model/model_element_spec.rb
|
715
650
|
- spec/expressr_spec.rb
|
716
651
|
- spec/spec_helper.rb
|
717
652
|
- spec/support/console_helper.rb
|
653
|
+
- spec/syntax/multiple.exp
|
654
|
+
- spec/syntax/multiple.yaml
|
655
|
+
- spec/syntax/multiple_formatted.exp
|
656
|
+
- spec/syntax/multiple_hyperlink_formatted.exp
|
657
|
+
- spec/syntax/multiple_schema_head_hyperlink_formatted.exp
|
658
|
+
- spec/syntax/remark.exp
|
659
|
+
- spec/syntax/remark.yaml
|
660
|
+
- spec/syntax/remark_formatted.exp
|
661
|
+
- spec/syntax/single.exp
|
662
|
+
- spec/syntax/single.yaml
|
663
|
+
- spec/syntax/single_formatted.exp
|
664
|
+
- spec/syntax/single_formatted.yaml
|
665
|
+
- spec/syntax/syntax.exp
|
666
|
+
- spec/syntax/syntax.yaml
|
667
|
+
- spec/syntax/syntax_formatted.exp
|
668
|
+
- spec/syntax/syntax_hyperlink_formatted.exp
|
669
|
+
- spec/syntax/syntax_schema_head_formatted.exp
|
718
670
|
homepage: https://github.com/lutaml/expressir
|
719
671
|
licenses:
|
720
672
|
- MIT
|
@@ -737,7 +689,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
737
689
|
- !ruby/object:Gem::Version
|
738
690
|
version: '0'
|
739
691
|
requirements: []
|
740
|
-
rubygems_version: 3.0.3
|
692
|
+
rubygems_version: 3.0.3.1
|
741
693
|
signing_key:
|
742
694
|
specification_version: 4
|
743
695
|
summary: ISO EXPRESS parser in Ruby, tools for accessing EXPRESS data models.
|
data/lib/expressir/express.rb
DELETED
@@ -1,38 +0,0 @@
|
|
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
|
@@ -1,15 +0,0 @@
|
|
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
|
@@ -1,36 +0,0 @@
|
|
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
|
@@ -1,65 +0,0 @@
|
|
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
|