archimate 1.2.1 → 2.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.
Files changed (182) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +47 -0
  3. data/TODOs.org +219 -0
  4. data/archimate.gemspec +2 -1
  5. data/exe/archidiff +7 -0
  6. data/exe/archidiff-summary +7 -0
  7. data/exe/archimerge +7 -0
  8. data/exe/fmtxml +7 -0
  9. data/lib/archimate.rb +10 -21
  10. data/lib/archimate/cli/archi.rb +2 -1
  11. data/lib/archimate/cli/cleanup.rb +8 -9
  12. data/lib/archimate/cli/convert.rb +3 -1
  13. data/lib/archimate/cli/mapper.rb +1 -1
  14. data/lib/archimate/cli/stats.rb +1 -1
  15. data/lib/archimate/config.rb +4 -1
  16. data/lib/archimate/data_model.rb +11 -24
  17. data/lib/archimate/data_model/any_attribute.rb +18 -5
  18. data/lib/archimate/data_model/any_element.rb +30 -7
  19. data/lib/archimate/data_model/bounds.rb +34 -7
  20. data/lib/archimate/data_model/color.rb +32 -7
  21. data/lib/archimate/data_model/comparison.rb +87 -0
  22. data/lib/archimate/data_model/concern.rb +20 -7
  23. data/lib/archimate/data_model/connection.rb +71 -51
  24. data/lib/archimate/data_model/connector_type.rb +23 -0
  25. data/lib/archimate/data_model/diagram.rb +72 -10
  26. data/lib/archimate/data_model/diagram_type.rb +17 -0
  27. data/lib/archimate/data_model/differentiable.rb +142 -0
  28. data/lib/archimate/data_model/element.rb +39 -45
  29. data/lib/archimate/data_model/element_type.rb +89 -0
  30. data/lib/archimate/data_model/font.rb +30 -12
  31. data/lib/archimate/data_model/lang_string.rb +89 -16
  32. data/lib/archimate/data_model/layer.rb +55 -0
  33. data/lib/archimate/data_model/layers.rb +62 -0
  34. data/lib/archimate/data_model/location.rb +27 -11
  35. data/lib/archimate/data_model/metadata.rb +10 -3
  36. data/lib/archimate/data_model/model.rb +188 -121
  37. data/lib/archimate/data_model/modeling_note.rb +14 -3
  38. data/lib/archimate/data_model/organization.rb +44 -13
  39. data/lib/archimate/data_model/{documentation.rb → preserved_lang_string.rb} +1 -5
  40. data/lib/archimate/data_model/property.rb +17 -11
  41. data/lib/archimate/data_model/property_definition.rb +34 -4
  42. data/lib/archimate/data_model/referenceable.rb +0 -9
  43. data/lib/archimate/data_model/referenceable_collection.rb +201 -0
  44. data/lib/archimate/data_model/relationship.rb +52 -33
  45. data/lib/archimate/data_model/relationship_type.rb +43 -0
  46. data/lib/archimate/data_model/schema_info.rb +17 -6
  47. data/lib/archimate/data_model/style.rb +41 -11
  48. data/lib/archimate/data_model/view_node.rb +153 -59
  49. data/lib/archimate/data_model/viewpoint.rb +56 -80
  50. data/lib/archimate/data_model/viewpoint_type.rb +429 -0
  51. data/lib/archimate/export/csv_export.rb +2 -2
  52. data/lib/archimate/export/cypher.rb +2 -2
  53. data/lib/archimate/export/graph_ml.rb +7 -5
  54. data/lib/archimate/export/jsonl.rb +166 -0
  55. data/lib/archimate/export/n_quads.rb +8 -5
  56. data/lib/archimate/file_format.rb +4 -5
  57. data/lib/archimate/file_formats/archi_file_reader.rb +7 -240
  58. data/lib/archimate/file_formats/archi_file_writer.rb +16 -188
  59. data/lib/archimate/file_formats/model_exchange_file_reader.rb +7 -225
  60. data/lib/archimate/file_formats/model_exchange_file_writer_21.rb +22 -114
  61. data/lib/archimate/file_formats/model_exchange_file_writer_30.rb +22 -122
  62. data/lib/archimate/file_formats/sax.rb +55 -0
  63. data/lib/archimate/file_formats/sax/any_element.rb +64 -0
  64. data/lib/archimate/file_formats/sax/archi/archi_handler_factory.rb +48 -0
  65. data/lib/archimate/file_formats/sax/archi/bounds.rb +25 -0
  66. data/lib/archimate/file_formats/sax/archi/connection.rb +47 -0
  67. data/lib/archimate/file_formats/sax/archi/content.rb +28 -0
  68. data/lib/archimate/file_formats/sax/archi/diagram.rb +66 -0
  69. data/lib/archimate/file_formats/sax/archi/element.rb +36 -0
  70. data/lib/archimate/file_formats/sax/archi/location.rb +25 -0
  71. data/lib/archimate/file_formats/sax/archi/model.rb +109 -0
  72. data/lib/archimate/file_formats/sax/archi/organization.rb +60 -0
  73. data/lib/archimate/file_formats/sax/archi/property.rb +54 -0
  74. data/lib/archimate/file_formats/sax/archi/relationship.rb +50 -0
  75. data/lib/archimate/file_formats/sax/archi/style.rb +35 -0
  76. data/lib/archimate/file_formats/sax/archi/view_node.rb +76 -0
  77. data/lib/archimate/file_formats/sax/capture_content.rb +20 -0
  78. data/lib/archimate/file_formats/sax/capture_documentation.rb +19 -0
  79. data/lib/archimate/file_formats/sax/capture_properties.rb +20 -0
  80. data/lib/archimate/file_formats/sax/content_element.rb +19 -0
  81. data/lib/archimate/file_formats/sax/document.rb +80 -0
  82. data/lib/archimate/file_formats/sax/handler.rb +54 -0
  83. data/lib/archimate/file_formats/sax/lang_string.rb +28 -0
  84. data/lib/archimate/file_formats/sax/model_exchange_file/color.rb +36 -0
  85. data/lib/archimate/file_formats/sax/model_exchange_file/connection.rb +67 -0
  86. data/lib/archimate/file_formats/sax/model_exchange_file/diagram.rb +60 -0
  87. data/lib/archimate/file_formats/sax/model_exchange_file/element.rb +43 -0
  88. data/lib/archimate/file_formats/sax/model_exchange_file/font.rb +44 -0
  89. data/lib/archimate/file_formats/sax/model_exchange_file/item.rb +64 -0
  90. data/lib/archimate/file_formats/sax/model_exchange_file/location.rb +23 -0
  91. data/lib/archimate/file_formats/sax/model_exchange_file/metadata.rb +66 -0
  92. data/lib/archimate/file_formats/sax/model_exchange_file/model.rb +124 -0
  93. data/lib/archimate/file_formats/sax/model_exchange_file/model_exchange_handler_factory.rb +53 -0
  94. data/lib/archimate/file_formats/sax/model_exchange_file/property.rb +32 -0
  95. data/lib/archimate/file_formats/sax/model_exchange_file/property_definition.rb +36 -0
  96. data/lib/archimate/file_formats/sax/model_exchange_file/relationship.rb +49 -0
  97. data/lib/archimate/file_formats/sax/model_exchange_file/schema_info.rb +47 -0
  98. data/lib/archimate/file_formats/sax/model_exchange_file/style.rb +66 -0
  99. data/lib/archimate/file_formats/sax/model_exchange_file/view_node.rb +86 -0
  100. data/lib/archimate/file_formats/sax/no_op.rb +17 -0
  101. data/lib/archimate/file_formats/sax/preserved_lang_string.rb +28 -0
  102. data/lib/archimate/file_formats/serializer.rb +57 -0
  103. data/lib/archimate/file_formats/serializer/archi/bounds.rb +23 -0
  104. data/lib/archimate/file_formats/serializer/archi/connection.rb +33 -0
  105. data/lib/archimate/file_formats/serializer/archi/diagram.rb +28 -0
  106. data/lib/archimate/file_formats/serializer/archi/documentation.rb +16 -0
  107. data/lib/archimate/file_formats/serializer/archi/element.rb +24 -0
  108. data/lib/archimate/file_formats/serializer/archi/location.rb +26 -0
  109. data/lib/archimate/file_formats/serializer/archi/model.rb +25 -0
  110. data/lib/archimate/file_formats/serializer/archi/organization.rb +21 -0
  111. data/lib/archimate/file_formats/serializer/archi/property.rb +15 -0
  112. data/lib/archimate/file_formats/serializer/archi/relationship.rb +36 -0
  113. data/lib/archimate/file_formats/serializer/archi/view_node.rb +52 -0
  114. data/lib/archimate/file_formats/serializer/archi/viewpoint_type.rb +45 -0
  115. data/lib/archimate/file_formats/serializer/model_exchange_file/element.rb +25 -0
  116. data/lib/archimate/file_formats/serializer/model_exchange_file/location.rb +15 -0
  117. data/lib/archimate/file_formats/serializer/model_exchange_file/model_exchange_file_writer.rb +32 -0
  118. data/lib/archimate/file_formats/serializer/model_exchange_file/organization.rb +23 -0
  119. data/lib/archimate/file_formats/serializer/model_exchange_file/properties.rb +15 -0
  120. data/lib/archimate/file_formats/serializer/model_exchange_file/relationship.rb +19 -0
  121. data/lib/archimate/file_formats/serializer/model_exchange_file/style.rb +48 -0
  122. data/lib/archimate/file_formats/serializer/model_exchange_file/v21/connection.rb +25 -0
  123. data/lib/archimate/file_formats/serializer/model_exchange_file/v21/diagram.rb +27 -0
  124. data/lib/archimate/file_formats/serializer/model_exchange_file/v21/item.rb +17 -0
  125. data/lib/archimate/file_formats/serializer/model_exchange_file/v21/label.rb +17 -0
  126. data/lib/archimate/file_formats/serializer/model_exchange_file/v21/model.rb +36 -0
  127. data/lib/archimate/file_formats/serializer/model_exchange_file/v21/organization_body.rb +25 -0
  128. data/lib/archimate/file_formats/serializer/model_exchange_file/v21/property.rb +19 -0
  129. data/lib/archimate/file_formats/serializer/model_exchange_file/v21/view_node.rb +44 -0
  130. data/lib/archimate/file_formats/serializer/model_exchange_file/v30/connection.rb +26 -0
  131. data/lib/archimate/file_formats/serializer/model_exchange_file/v30/diagram.rb +27 -0
  132. data/lib/archimate/file_formats/serializer/model_exchange_file/v30/item.rb +17 -0
  133. data/lib/archimate/file_formats/serializer/model_exchange_file/v30/label.rb +17 -0
  134. data/lib/archimate/file_formats/serializer/model_exchange_file/v30/model.rb +41 -0
  135. data/lib/archimate/file_formats/serializer/model_exchange_file/v30/organization_body.rb +25 -0
  136. data/lib/archimate/file_formats/serializer/model_exchange_file/v30/property.rb +19 -0
  137. data/lib/archimate/file_formats/serializer/model_exchange_file/v30/property_definitions.rb +34 -0
  138. data/lib/archimate/file_formats/serializer/model_exchange_file/v30/view_node.rb +45 -0
  139. data/lib/archimate/file_formats/serializer/named_collection.rb +21 -0
  140. data/lib/archimate/file_formats/serializer/writer.rb +56 -0
  141. data/lib/archimate/file_formats/serializer/xml_lang_string.rb +30 -0
  142. data/lib/archimate/file_formats/serializer/xml_metadata.rb +64 -0
  143. data/lib/archimate/file_formats/{model_exchange_file → serializer}/xml_property_defs.rb +2 -2
  144. data/lib/archimate/lint/duplicate_entities.rb +3 -3
  145. data/lib/archimate/lint/linter.rb +24 -29
  146. data/lib/archimate/svg/connection.rb +13 -103
  147. data/lib/archimate/svg/diagram.rb +1 -1
  148. data/lib/archimate/svg/entity/base_entity.rb +12 -8
  149. data/lib/archimate/svg/entity/data_entity.rb +2 -2
  150. data/lib/archimate/svg/entity/diagram_model_reference.rb +1 -1
  151. data/lib/archimate/svg/entity/event_entity.rb +2 -2
  152. data/lib/archimate/svg/entity/gap.rb +1 -1
  153. data/lib/archimate/svg/entity/group.rb +1 -1
  154. data/lib/archimate/svg/entity/motivation_entity.rb +1 -1
  155. data/lib/archimate/svg/entity/node.rb +1 -1
  156. data/lib/archimate/svg/entity/rect_entity.rb +1 -1
  157. data/lib/archimate/svg/entity/rounded_rect_entity.rb +1 -1
  158. data/lib/archimate/svg/entity/service_entity.rb +2 -2
  159. data/lib/archimate/svg/entity/value.rb +2 -2
  160. data/lib/archimate/svg/path.rb +153 -0
  161. data/lib/archimate/svg/point.rb +8 -1
  162. data/lib/archimate/version.rb +1 -1
  163. metadata +118 -36
  164. data/lib/archimate/data_model/archimate_node.rb +0 -181
  165. data/lib/archimate/data_model/concept.rb +0 -14
  166. data/lib/archimate/data_model/constants.rb +0 -82
  167. data/lib/archimate/data_model/container.rb +0 -17
  168. data/lib/archimate/data_model/diffable_array.rb +0 -213
  169. data/lib/archimate/data_model/diffable_primitive.rb +0 -83
  170. data/lib/archimate/data_model/label.rb +0 -19
  171. data/lib/archimate/data_model/named_referenceable.rb +0 -14
  172. data/lib/archimate/data_model/view.rb +0 -12
  173. data/lib/archimate/data_model/view_concept.rb +0 -18
  174. data/lib/archimate/file_formats/archi_file_format.rb +0 -151
  175. data/lib/archimate/file_formats/archimate_v2.rb +0 -461
  176. data/lib/archimate/file_formats/model_exchange_file/xml_lang_string.rb +0 -35
  177. data/lib/archimate/file_formats/model_exchange_file/xml_metadata.rb +0 -115
  178. data/lib/archimate/file_formats/model_exchange_file/xml_property_definitions.rb +0 -28
  179. data/lib/archimate/file_formats/model_exchange_file_reader_21.rb +0 -73
  180. data/lib/archimate/file_formats/model_exchange_file_reader_30.rb +0 -134
  181. data/lib/archimate/file_formats/model_exchange_file_writer.rb +0 -157
  182. data/lib/archimate/file_formats/writer.rb +0 -56
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Archimate
4
+ module FileFormats
5
+ module Sax
6
+ module ModelExchangeFile
7
+ ELEMENT_CLASS = Hash.new(Sax::AnyElement).merge(
8
+ "model" => Model,
9
+ "documentation" => Sax::PreservedLangString,
10
+ "purpose" => Sax::PreservedLangString,
11
+ "metadata" => Metadata,
12
+ "schema" => Sax::ContentElement,
13
+ "schemaversion" => Sax::ContentElement,
14
+ "textPosition" => Sax::ContentElement,
15
+ "schemaInfo" => SchemaInfo,
16
+ "name" => Sax::LangString,
17
+ "value" => Sax::LangString,
18
+ "label" => Sax::LangString,
19
+ "properties" => Sax::NoOp,
20
+ "elements" => Sax::NoOp,
21
+ "relationships" => Sax::NoOp,
22
+ "organization" => Sax::NoOp,
23
+ "organizations" => Sax::NoOp,
24
+ "propertydefs" => Sax::NoOp,
25
+ "propertyDefinitions" => Sax::NoOp,
26
+ "views" => Sax::NoOp,
27
+ "diagrams" => Sax::NoOp,
28
+ "property" => Property,
29
+ "element" => Element,
30
+ "relationship" => Relationship,
31
+ "item" => Item,
32
+ "propertydef" => PropertyDefinition,
33
+ "propertyDefinition" => PropertyDefinition,
34
+ "view" => Diagram,
35
+ "node" => ViewNode,
36
+ "style" => Style,
37
+ "fillColor" => Color,
38
+ "lineColor" => Color,
39
+ "color" => Color,
40
+ "connection" => Connection,
41
+ "bendpoint" => Location,
42
+ "font" => Font
43
+ )
44
+
45
+ class ModelExchangeHandlerFactory
46
+ def handler_for(name, _attrs)
47
+ ELEMENT_CLASS[name]
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Archimate
4
+ module FileFormats
5
+ module Sax
6
+ module ModelExchangeFile
7
+ class Property < FileFormats::Sax::Handler
8
+ def initialize(name, attrs, parent_handler)
9
+ super
10
+ @value = nil
11
+ end
12
+
13
+ def complete
14
+ property = DataModel::Property.new(property_definition: nil, value: @value)
15
+ [
16
+ event(:on_property, property),
17
+ event(:on_future,
18
+ Sax::FutureReference.new(property,
19
+ :property_definition,
20
+ attrs["propertyDefinitionRef"] || attrs["identifierref"]))
21
+ ]
22
+ end
23
+
24
+ def on_lang_string(str, _source)
25
+ @value = str
26
+ false
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Archimate
4
+ module FileFormats
5
+ module Sax
6
+ module ModelExchangeFile
7
+ class PropertyDefinition < FileFormats::Sax::Handler
8
+ include Sax::CaptureDocumentation
9
+
10
+ def initialize(name, attrs, parent_handler)
11
+ super
12
+ @prop_def_name = @attrs["name"]
13
+ end
14
+
15
+ def complete
16
+ property_def = DataModel::PropertyDefinition.new(
17
+ id: attrs["identifier"],
18
+ name: @prop_def_name,
19
+ documentation: documentation,
20
+ type: attrs["type"]
21
+ )
22
+ [
23
+ event(:on_property_definition, property_def),
24
+ event(:on_referenceable, property_def)
25
+ ]
26
+ end
27
+
28
+ def on_lang_string(name, _source)
29
+ @prop_def_name = name
30
+ false
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Archimate
4
+ module FileFormats
5
+ module Sax
6
+ module ModelExchangeFile
7
+ class Relationship < FileFormats::Sax::Handler
8
+ include Sax::CaptureDocumentation
9
+ include Sax::CaptureProperties
10
+
11
+ def initialize(name, attrs, parent_handler)
12
+ super
13
+ @rel_name = nil
14
+ @relationship = nil
15
+ end
16
+
17
+ def complete
18
+ [
19
+ event(:on_relationship, relationship),
20
+ event(:on_referenceable, relationship),
21
+ event(:on_future, Sax::FutureReference.new(relationship, :source, attrs["source"])),
22
+ event(:on_future, Sax::FutureReference.new(relationship, :target, attrs["target"]))
23
+ ]
24
+ end
25
+
26
+ def on_lang_string(name, _source)
27
+ @rel_name = name
28
+ false
29
+ end
30
+
31
+ private
32
+
33
+ def relationship
34
+ @relationship ||= DataModel::Relationship.new(
35
+ id: attrs["identifier"],
36
+ type: attrs["xsi:type"],
37
+ source: nil,
38
+ target: nil,
39
+ name: @rel_name,
40
+ access_type: attrs["accessType"],
41
+ documentation: documentation,
42
+ properties: properties
43
+ )
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Archimate
4
+ module FileFormats
5
+ module Sax
6
+ module ModelExchangeFile
7
+ class SchemaInfo < FileFormats::Sax::Handler
8
+ def initialize(name, attrs, parent_handler)
9
+ super
10
+ @schema_infos = []
11
+ @schema = nil
12
+ @schema_version = nil
13
+ @elements = []
14
+ end
15
+
16
+ def complete
17
+ [
18
+ event(
19
+ :on_schema_info,
20
+ DataModel::SchemaInfo.new(
21
+ schema: @schema,
22
+ schemaversion: @schema_version,
23
+ elements: @elements
24
+ )
25
+ )
26
+ ]
27
+ end
28
+
29
+ def on_schema(string, _source)
30
+ @schema = string
31
+ false
32
+ end
33
+
34
+ def on_schemaversion(string, _source)
35
+ @schema_version = string
36
+ false
37
+ end
38
+
39
+ def on_any_element(any_element, _source)
40
+ @elements << any_element
41
+ false
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Archimate
4
+ module FileFormats
5
+ module Sax
6
+ module ModelExchangeFile
7
+ class Style < FileFormats::Sax::Handler
8
+ def initialize(name, attrs, parent_handler)
9
+ super
10
+ @font = nil
11
+ @text_position = nil
12
+ @fill_color = nil
13
+ @line_color = nil
14
+ @font_color = nil
15
+ @style = nil
16
+ end
17
+
18
+ def complete
19
+ [
20
+ event(:on_style, style)
21
+ ]
22
+ end
23
+
24
+ def on_font(font, _source)
25
+ @font = font
26
+ false
27
+ end
28
+
29
+ def on_fill_color(color, _source)
30
+ @fill_color = color
31
+ false
32
+ end
33
+
34
+ def on_line_color(color, _source)
35
+ @line_color = color
36
+ false
37
+ end
38
+
39
+ def on_color(color, _source)
40
+ @font_color = color
41
+ false
42
+ end
43
+
44
+ def on_text_position(str, _source)
45
+ @text_position = str
46
+ false
47
+ end
48
+
49
+ private
50
+
51
+ def style
52
+ @style ||= DataModel::Style.new(
53
+ text_alignment: attrs["textAlignment"],
54
+ fill_color: @fill_color,
55
+ line_color: @line_color,
56
+ font_color: @font_color,
57
+ font: @font,
58
+ line_width: attrs["lineWidth"],
59
+ text_position: @text_position
60
+ )
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,86 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Archimate
4
+ module FileFormats
5
+ module Sax
6
+ module ModelExchangeFile
7
+ class ViewNode < FileFormats::Sax::Handler
8
+ include Sax::CaptureDocumentation
9
+ include Sax::CaptureProperties
10
+
11
+ def initialize(name, attrs, parent_handler)
12
+ super
13
+ @view_nodes = []
14
+ @connections = []
15
+ @content = nil
16
+ @view_node_name = nil
17
+ @style = nil
18
+ @view_node = nil
19
+ @bounds = nil
20
+ end
21
+
22
+ def complete
23
+ [
24
+ event(:on_future,
25
+ # Fiber.new { |index| view_node.view_refs = index[attrs["model"]] },
26
+ Sax::FutureReference.new(view_node, :view_refs, attrs["model"])),
27
+ event(:on_future,
28
+ Sax::FutureReference.new(view_node,
29
+ :element,
30
+ attrs["elementRef"] || attrs["elementref"])),
31
+ event(:on_referenceable, view_node),
32
+ event(:on_view_node, view_node)
33
+ ]
34
+ end
35
+
36
+ def on_lang_string(name, _source)
37
+ @view_node_name = name
38
+ false
39
+ end
40
+
41
+ def on_view_node(view_node, source)
42
+ @view_nodes << view_node if source.parent_handler == self
43
+ view_node
44
+ end
45
+
46
+ def on_connection(connection, source)
47
+ @connections << connection if source.parent_handler == self
48
+ connection
49
+ end
50
+
51
+ def on_content(string, _source)
52
+ @content = string
53
+ end
54
+
55
+ def on_style(style, _source)
56
+ @style = style
57
+ false
58
+ end
59
+
60
+ private
61
+
62
+ def view_node
63
+ @view_node ||= DataModel::ViewNode.new(id: attrs["identifier"],
64
+ type: attrs["xsi:type"] || attrs["type"],
65
+ view_refs: nil,
66
+ name: @view_node_name,
67
+ element: nil,
68
+ bounds: bounds,
69
+ nodes: @view_nodes,
70
+ connections: @connections,
71
+ documentation: documentation,
72
+ properties: properties,
73
+ style: @style,
74
+ content: @content,
75
+ child_type: attrs["type"],
76
+ diagram: diagram)
77
+ end
78
+
79
+ def bounds
80
+ @bounds ||= DataModel::Bounds.new(x: attrs["x"], y: attrs["y"], width: attrs["w"], height: attrs["h"])
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Archimate
4
+ module FileFormats
5
+ module Sax
6
+ class NoOp < Handler
7
+ def initialize(name, attrs, parent_handler)
8
+ super
9
+ end
10
+
11
+ def complete
12
+ []
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Archimate
4
+ module FileFormats
5
+ module Sax
6
+ class PreservedLangString < FileFormats::Sax::Handler
7
+ include Sax::CaptureContent
8
+
9
+ def initialize(name, attrs, parent_handler)
10
+ super
11
+ end
12
+
13
+ def complete
14
+ doc = DataModel::PreservedLangString.string(
15
+ process_text(content),
16
+ @attrs["lang"] || @attrs["xml:lang"]
17
+ )
18
+ [
19
+ event(
20
+ :on_preserved_lang_string,
21
+ doc
22
+ )
23
+ ]
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Archimate
4
+ module FileFormats
5
+ module Serializer
6
+ autoload :NamedCollection, 'archimate/file_formats/serializer/named_collection'
7
+ autoload :Writer, 'archimate/file_formats/serializer/writer'
8
+ autoload :XmlLangString, 'archimate/file_formats/serializer/xml_lang_string'
9
+ autoload :XmlMetadata, 'archimate/file_formats/serializer/xml_metadata'
10
+ autoload :XmlPropertyDefs, 'archimate/file_formats/serializer/xml_property_defs'
11
+ module Archi
12
+ autoload :Bounds, 'archimate/file_formats/serializer/archi/bounds'
13
+ autoload :Connection, 'archimate/file_formats/serializer/archi/connection'
14
+ autoload :Diagram, 'archimate/file_formats/serializer/archi/diagram'
15
+ autoload :Documentation, 'archimate/file_formats/serializer/archi/documentation'
16
+ autoload :Element, 'archimate/file_formats/serializer/archi/element'
17
+ autoload :Location, 'archimate/file_formats/serializer/archi/location'
18
+ autoload :Model, 'archimate/file_formats/serializer/archi/model'
19
+ autoload :Organization, 'archimate/file_formats/serializer/archi/organization'
20
+ autoload :Property, 'archimate/file_formats/serializer/archi/property'
21
+ autoload :Relationship, 'archimate/file_formats/serializer/archi/relationship'
22
+ autoload :ViewNode, 'archimate/file_formats/serializer/archi/view_node'
23
+ autoload :ViewpointType, 'archimate/file_formats/serializer/archi/viewpoint_type'
24
+ end
25
+ module ModelExchangeFile
26
+ autoload :Element, 'archimate/file_formats/serializer/model_exchange_file/element'
27
+ autoload :Location, 'archimate/file_formats/serializer/model_exchange_file/location'
28
+ autoload :ModelExchangeFileWriter, 'archimate/file_formats/serializer/model_exchange_file/model_exchange_file_writer'
29
+ autoload :Organization, 'archimate/file_formats/serializer/model_exchange_file/organization'
30
+ autoload :Properties, 'archimate/file_formats/serializer/model_exchange_file/properties'
31
+ autoload :Relationship, 'archimate/file_formats/serializer/model_exchange_file/relationship'
32
+ autoload :Style, 'archimate/file_formats/serializer/model_exchange_file/style'
33
+ module V21
34
+ autoload :Connection, 'archimate/file_formats/serializer/model_exchange_file/v21/connection'
35
+ autoload :Diagram, 'archimate/file_formats/serializer/model_exchange_file/v21/diagram'
36
+ autoload :Item, 'archimate/file_formats/serializer/model_exchange_file/v21/item'
37
+ autoload :Label, 'archimate/file_formats/serializer/model_exchange_file/v21/label'
38
+ autoload :Model, 'archimate/file_formats/serializer/model_exchange_file/v21/model'
39
+ autoload :OrganizationBody, 'archimate/file_formats/serializer/model_exchange_file/v21/organization_body'
40
+ autoload :Property, 'archimate/file_formats/serializer/model_exchange_file/v21/property'
41
+ autoload :ViewNode, 'archimate/file_formats/serializer/model_exchange_file/v21/view_node'
42
+ end
43
+ module V30
44
+ autoload :Connection, 'archimate/file_formats/serializer/model_exchange_file/v30/connection'
45
+ autoload :Diagram, 'archimate/file_formats/serializer/model_exchange_file/v30/diagram'
46
+ autoload :Item, 'archimate/file_formats/serializer/model_exchange_file/v30/item'
47
+ autoload :Label, 'archimate/file_formats/serializer/model_exchange_file/v30/label'
48
+ autoload :Model, 'archimate/file_formats/serializer/model_exchange_file/v30/model'
49
+ autoload :OrganizationBody, 'archimate/file_formats/serializer/model_exchange_file/v30/organization_body'
50
+ autoload :Property, 'archimate/file_formats/serializer/model_exchange_file/v30/property'
51
+ autoload :PropertyDefinitions, 'archimate/file_formats/serializer/model_exchange_file/v30/property_definitions'
52
+ autoload :ViewNode, 'archimate/file_formats/serializer/model_exchange_file/v30/view_node'
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end