Class: Archimate::FileFormats::ModelExchangeFileWriter21
Overview
Archimate version 2.1 Model Exchange Format Writer
Instance Attribute Summary
#model
Attributes inherited from Writer
#model
Instance Method Summary
collapse
-
#font_style_string(font) ⇒ Object
-
#initialize(model) ⇒ ModelExchangeFileWriter21
constructor
A new instance of ModelExchangeFileWriter21.
-
#meff_type(el_type) ⇒ Object
-
#model_attrs ⇒ Object
-
#serialize_connection(xml, sc) ⇒ Object
-
#serialize_diagram(xml, diagram) ⇒ Object
-
#serialize_item(xml, item) ⇒ Object
-
#serialize_label(xml, str) ⇒ Object
-
#serialize_model(xml) ⇒ Object
-
#serialize_organization_root(xml, organizations) ⇒ Object
-
#serialize_property(xml, property) ⇒ Object
-
#serialize_property_defs(xml) ⇒ Object
-
#serialize_view_node(xml, view_node, x_offset = 0, y_offset = 0) ⇒ Object
-
#serialize_views(xml) ⇒ Object
-
#view_node_attrs(view_node, x_offset = 0, y_offset = 0) ⇒ Object
#elementbase, #identifier, #model_namespaces, #relationship_attributes, #serialize_color, #serialize_element, #serialize_elements, #serialize_font, #serialize_location, #serialize_organization, #serialize_organization_body, #serialize_properties, #serialize_relationship, #serialize_relationships, #serialize_style, #text_proc, #write
Methods inherited from Writer
#remove_nil_values, #serialize, write
Constructor Details
Returns a new instance of ModelExchangeFileWriter21.
8
9
10
|
# File 'lib/archimate/file_formats/model_exchange_file_writer_21.rb', line 8
def initialize(model)
super
end
|
Instance Method Details
#font_style_string(font) ⇒ Object
116
117
118
|
# File 'lib/archimate/file_formats/model_exchange_file_writer_21.rb', line 116
def font_style_string(font)
font&.style_string
end
|
#meff_type(el_type) ⇒ Object
132
133
134
135
136
137
138
139
140
|
# File 'lib/archimate/file_formats/model_exchange_file_writer_21.rb', line 132
def meff_type(el_type)
el_type = el_type.sub(/^/, "")
case el_type
when 'AndJunction', 'OrJunction'
'Junction'
else
el_type
end
end
|
#model_attrs ⇒ Object
12
13
14
15
16
17
|
# File 'lib/archimate/file_formats/model_exchange_file_writer_21.rb', line 12
def model_attrs
model_namespaces.merge(
"xsi:schemaLocation" => model.schema_locations.join(" "),
"identifier" => identifier(model.id)
)
end
|
#serialize_connection(xml, sc) ⇒ Object
120
121
122
123
124
125
126
127
128
129
130
|
# File 'lib/archimate/file_formats/model_exchange_file_writer_21.rb', line 120
def serialize_connection(xml, sc)
xml.connection(
identifier: identifier(sc.id),
relationshipref: identifier(sc.relationship),
source: identifier(sc.source),
target: identifier(sc.target)
) do
serialize(xml, sc.bendpoints)
serialize(xml, sc.style)
end
end
|
#serialize_diagram(xml, diagram) ⇒ Object
68
69
70
71
72
73
74
75
76
77
78
79
80
|
# File 'lib/archimate/file_formats/model_exchange_file_writer_21.rb', line 68
def serialize_diagram(xml, diagram)
xml.view(
remove_nil_values(
identifier: identifier(diagram.id),
viewpoint: diagram.viewpoint_type,
"xsi:type": diagram.type
)
) do
elementbase(xml, diagram)
serialize(xml, diagram.nodes)
serialize(xml, diagram.connections)
end
end
|
#serialize_item(xml, item) ⇒ Object
51
52
53
|
# File 'lib/archimate/file_formats/model_exchange_file_writer_21.rb', line 51
def serialize_item(xml, item)
xml.item(identifierref: identifier(item))
end
|
#serialize_label(xml, str) ⇒ Object
38
39
40
41
42
|
# File 'lib/archimate/file_formats/model_exchange_file_writer_21.rb', line 38
def serialize_label(xml, str)
return if str.nil? || str.strip.empty?
name_attrs = str.lang && !str.lang.empty? ? {"xml:lang" => str.lang} : {}
xml.label(name_attrs) { xml.text text_proc(str) }
end
|
#serialize_model(xml) ⇒ Object
#serialize_organization_root(xml, organizations) ⇒ Object
44
45
46
47
48
49
|
# File 'lib/archimate/file_formats/model_exchange_file_writer_21.rb', line 44
def serialize_organization_root(xml, organizations)
return unless organizations && organizations.size > 0
xml.organization do
serialize(xml, organizations)
end
end
|
#serialize_property(xml, property) ⇒ Object
55
56
57
58
59
|
# File 'lib/archimate/file_formats/model_exchange_file_writer_21.rb', line 55
def serialize_property(xml, property)
xml.property(identifierref: property.property_definition.id) do
ModelExchangeFile::XmlLangString.new(property.value, :value).serialize(xml)
end
end
|
#serialize_property_defs(xml) ⇒ Object
33
34
35
36
|
# File 'lib/archimate/file_formats/model_exchange_file_writer_21.rb', line 33
def serialize_property_defs(xml)
return if model.property_definitions.empty?
ModelExchangeFile::XmlPropertyDefs.new(model.property_definitions).serialize(xml)
end
|
#serialize_view_node(xml, view_node, x_offset = 0, y_offset = 0) ⇒ Object
105
106
107
108
109
110
111
112
113
114
|
# File 'lib/archimate/file_formats/model_exchange_file_writer_21.rb', line 105
def serialize_view_node(xml, view_node, x_offset = 0, y_offset = 0)
attrs = view_node_attrs(view_node, x_offset, y_offset)
xml.node(attrs) do
serialize_label(xml, view_node.name) if attrs[:type] == "group"
serialize(xml, view_node.style) if view_node.style
view_node.nodes.each do |c|
serialize_view_node(xml, c) end
end
end
|
#serialize_views(xml) ⇒ Object
61
62
63
64
65
66
|
# File 'lib/archimate/file_formats/model_exchange_file_writer_21.rb', line 61
def serialize_views(xml)
return if model.diagrams.empty?
xml.views do
serialize(xml, model.diagrams)
end
end
|
#view_node_attrs(view_node, x_offset = 0, y_offset = 0) ⇒ Object
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
# File 'lib/archimate/file_formats/model_exchange_file_writer_21.rb', line 82
def view_node_attrs(view_node, x_offset = 0, y_offset = 0)
attrs = {
identifier: identifier(view_node.id),
elementref: nil,
x: view_node.bounds ? (view_node.bounds&.x + x_offset).round : nil,
y: view_node.bounds ? (view_node.bounds&.y + y_offset).round : nil,
w: view_node.bounds&.width&.round,
h: view_node.bounds&.height&.round,
type: nil
}
if view_node.archimate_element
attrs[:elementref] = identifier(view_node.archimate_element)
elsif view_node.model
attrs[:elementref] = view_node.model
attrs[:type] = "model"
else
attrs[:type] = "group"
end
remove_nil_values(attrs)
end
|