archimate 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (211) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +22 -0
  3. data/.projectile +18 -0
  4. data/.rubocop.yml +13 -0
  5. data/.travis.yml +4 -0
  6. data/.yardocs +15 -0
  7. data/Gemfile +5 -0
  8. data/Guardfile +27 -0
  9. data/LICENSE +201 -0
  10. data/README.md +94 -0
  11. data/Rakefile +29 -0
  12. data/TODOs.org +286 -0
  13. data/archimate.gemspec +51 -0
  14. data/bin/archimate +17 -0
  15. data/bin/console +13 -0
  16. data/bin/setup +8 -0
  17. data/exe/archidiff +7 -0
  18. data/exe/archidiff-summary +7 -0
  19. data/exe/archimate +7 -0
  20. data/exe/archimerge +7 -0
  21. data/exe/fmtxml +7 -0
  22. data/lib/archimate/cli/archi.rb +189 -0
  23. data/lib/archimate/cli/cleanup.rb +54 -0
  24. data/lib/archimate/cli/conflict_resolver.rb +39 -0
  25. data/lib/archimate/cli/convert.rb +39 -0
  26. data/lib/archimate/cli/diff.rb +31 -0
  27. data/lib/archimate/cli/diff_summary.rb +101 -0
  28. data/lib/archimate/cli/duper.rb +85 -0
  29. data/lib/archimate/cli/lint.rb +16 -0
  30. data/lib/archimate/cli/mapper.rb +82 -0
  31. data/lib/archimate/cli/merge.rb +49 -0
  32. data/lib/archimate/cli/merger.rb +109 -0
  33. data/lib/archimate/cli/stats.rb +42 -0
  34. data/lib/archimate/cli/svger.rb +40 -0
  35. data/lib/archimate/color.rb +53 -0
  36. data/lib/archimate/config.rb +35 -0
  37. data/lib/archimate/data_model/any_attribute.rb +13 -0
  38. data/lib/archimate/data_model/any_element.rb +15 -0
  39. data/lib/archimate/data_model/archimate_node.rb +181 -0
  40. data/lib/archimate/data_model/bounds.rb +72 -0
  41. data/lib/archimate/data_model/color.rb +47 -0
  42. data/lib/archimate/data_model/concept.rb +14 -0
  43. data/lib/archimate/data_model/concern.rb +17 -0
  44. data/lib/archimate/data_model/connection.rb +107 -0
  45. data/lib/archimate/data_model/constants.rb +82 -0
  46. data/lib/archimate/data_model/container.rb +17 -0
  47. data/lib/archimate/data_model/diagram.rb +40 -0
  48. data/lib/archimate/data_model/diffable_array.rb +213 -0
  49. data/lib/archimate/data_model/diffable_primitive.rb +83 -0
  50. data/lib/archimate/data_model/documentation.rb +14 -0
  51. data/lib/archimate/data_model/element.rb +87 -0
  52. data/lib/archimate/data_model/font.rb +54 -0
  53. data/lib/archimate/data_model/label.rb +19 -0
  54. data/lib/archimate/data_model/lang_string.rb +41 -0
  55. data/lib/archimate/data_model/location.rb +31 -0
  56. data/lib/archimate/data_model/metadata.rb +14 -0
  57. data/lib/archimate/data_model/model.rb +217 -0
  58. data/lib/archimate/data_model/modeling_note.rb +13 -0
  59. data/lib/archimate/data_model/named_referenceable.rb +14 -0
  60. data/lib/archimate/data_model/organization.rb +40 -0
  61. data/lib/archimate/data_model/property.rb +25 -0
  62. data/lib/archimate/data_model/property_definition.rb +16 -0
  63. data/lib/archimate/data_model/referenceable.rb +29 -0
  64. data/lib/archimate/data_model/relationship.rb +85 -0
  65. data/lib/archimate/data_model/schema_info.rb +18 -0
  66. data/lib/archimate/data_model/style.rb +32 -0
  67. data/lib/archimate/data_model/view.rb +12 -0
  68. data/lib/archimate/data_model/view_concept.rb +18 -0
  69. data/lib/archimate/data_model/view_node.rb +114 -0
  70. data/lib/archimate/data_model/viewpoint.rb +87 -0
  71. data/lib/archimate/data_model.rb +54 -0
  72. data/lib/archimate/diff/archimate_array_reference.rb +113 -0
  73. data/lib/archimate/diff/archimate_identified_node_reference.rb +41 -0
  74. data/lib/archimate/diff/archimate_node_attribute_reference.rb +70 -0
  75. data/lib/archimate/diff/archimate_node_reference.rb +80 -0
  76. data/lib/archimate/diff/change.rb +49 -0
  77. data/lib/archimate/diff/conflict.rb +31 -0
  78. data/lib/archimate/diff/conflicts/base_conflict.rb +53 -0
  79. data/lib/archimate/diff/conflicts/deleted_items_child_updated_conflict.rb +30 -0
  80. data/lib/archimate/diff/conflicts/deleted_items_referenced_conflict.rb +63 -0
  81. data/lib/archimate/diff/conflicts/path_conflict.rb +51 -0
  82. data/lib/archimate/diff/conflicts.rb +89 -0
  83. data/lib/archimate/diff/delete.rb +41 -0
  84. data/lib/archimate/diff/difference.rb +113 -0
  85. data/lib/archimate/diff/insert.rb +43 -0
  86. data/lib/archimate/diff/merge.rb +70 -0
  87. data/lib/archimate/diff/move.rb +51 -0
  88. data/lib/archimate/diff.rb +17 -0
  89. data/lib/archimate/export/csv_export.rb +32 -0
  90. data/lib/archimate/export/cypher.rb +171 -0
  91. data/lib/archimate/export/graph_ml.rb +131 -0
  92. data/lib/archimate/export/n_quads.rb +142 -0
  93. data/lib/archimate/file_format.rb +30 -0
  94. data/lib/archimate/file_formats/archi_file_format.rb +151 -0
  95. data/lib/archimate/file_formats/archi_file_reader.rb +252 -0
  96. data/lib/archimate/file_formats/archi_file_writer.rb +230 -0
  97. data/lib/archimate/file_formats/archimate_v2.rb +461 -0
  98. data/lib/archimate/file_formats/model_exchange_file/xml_lang_string.rb +35 -0
  99. data/lib/archimate/file_formats/model_exchange_file/xml_metadata.rb +115 -0
  100. data/lib/archimate/file_formats/model_exchange_file/xml_property_definitions.rb +28 -0
  101. data/lib/archimate/file_formats/model_exchange_file/xml_property_defs.rb +27 -0
  102. data/lib/archimate/file_formats/model_exchange_file_reader.rb +237 -0
  103. data/lib/archimate/file_formats/model_exchange_file_reader_21.rb +73 -0
  104. data/lib/archimate/file_formats/model_exchange_file_reader_30.rb +134 -0
  105. data/lib/archimate/file_formats/model_exchange_file_writer.rb +157 -0
  106. data/lib/archimate/file_formats/model_exchange_file_writer_21.rb +143 -0
  107. data/lib/archimate/file_formats/model_exchange_file_writer_30.rb +153 -0
  108. data/lib/archimate/file_formats/writer.rb +56 -0
  109. data/lib/archimate/lint/duplicate_entities.rb +121 -0
  110. data/lib/archimate/lint/linter.rb +146 -0
  111. data/lib/archimate/logging.rb +55 -0
  112. data/lib/archimate/maybe_io.rb +34 -0
  113. data/lib/archimate/progress_indicator.rb +29 -0
  114. data/lib/archimate/svg/archimate.css +232 -0
  115. data/lib/archimate/svg/child.rb +29 -0
  116. data/lib/archimate/svg/connection.rb +184 -0
  117. data/lib/archimate/svg/css_style.rb +31 -0
  118. data/lib/archimate/svg/diagram.rb +87 -0
  119. data/lib/archimate/svg/entity/and_junction.rb +14 -0
  120. data/lib/archimate/svg/entity/application_collaboration.rb +14 -0
  121. data/lib/archimate/svg/entity/application_component.rb +41 -0
  122. data/lib/archimate/svg/entity/application_event.rb +13 -0
  123. data/lib/archimate/svg/entity/application_function.rb +13 -0
  124. data/lib/archimate/svg/entity/application_interaction.rb +13 -0
  125. data/lib/archimate/svg/entity/application_interface.rb +13 -0
  126. data/lib/archimate/svg/entity/application_process.rb +13 -0
  127. data/lib/archimate/svg/entity/application_service.rb +13 -0
  128. data/lib/archimate/svg/entity/artifact.rb +39 -0
  129. data/lib/archimate/svg/entity/assessment.rb +14 -0
  130. data/lib/archimate/svg/entity/base_entity.rb +128 -0
  131. data/lib/archimate/svg/entity/business_actor.rb +14 -0
  132. data/lib/archimate/svg/entity/business_collaboration.rb +14 -0
  133. data/lib/archimate/svg/entity/business_event.rb +10 -0
  134. data/lib/archimate/svg/entity/business_function.rb +13 -0
  135. data/lib/archimate/svg/entity/business_interaction.rb +13 -0
  136. data/lib/archimate/svg/entity/business_interface.rb +13 -0
  137. data/lib/archimate/svg/entity/business_object.rb +13 -0
  138. data/lib/archimate/svg/entity/business_process.rb +13 -0
  139. data/lib/archimate/svg/entity/business_role.rb +14 -0
  140. data/lib/archimate/svg/entity/business_service.rb +13 -0
  141. data/lib/archimate/svg/entity/capability.rb +14 -0
  142. data/lib/archimate/svg/entity/communication_network.rb +14 -0
  143. data/lib/archimate/svg/entity/communication_path.rb +14 -0
  144. data/lib/archimate/svg/entity/constraint.rb +15 -0
  145. data/lib/archimate/svg/entity/contract.rb +13 -0
  146. data/lib/archimate/svg/entity/course_of_action.rb +14 -0
  147. data/lib/archimate/svg/entity/data_entity.rb +29 -0
  148. data/lib/archimate/svg/entity/data_object.rb +13 -0
  149. data/lib/archimate/svg/entity/deliverable.rb +13 -0
  150. data/lib/archimate/svg/entity/device.rb +48 -0
  151. data/lib/archimate/svg/entity/diagram_model_reference.rb +22 -0
  152. data/lib/archimate/svg/entity/diagram_object.rb +30 -0
  153. data/lib/archimate/svg/entity/distribution_network.rb +14 -0
  154. data/lib/archimate/svg/entity/driver.rb +14 -0
  155. data/lib/archimate/svg/entity/equipment.rb +16 -0
  156. data/lib/archimate/svg/entity/event_entity.rb +36 -0
  157. data/lib/archimate/svg/entity/facility.rb +16 -0
  158. data/lib/archimate/svg/entity/function_entity.rb +14 -0
  159. data/lib/archimate/svg/entity/gap.rb +21 -0
  160. data/lib/archimate/svg/entity/goal.rb +14 -0
  161. data/lib/archimate/svg/entity/group.rb +24 -0
  162. data/lib/archimate/svg/entity/implementation_event.rb +13 -0
  163. data/lib/archimate/svg/entity/infrastructure_function.rb +13 -0
  164. data/lib/archimate/svg/entity/infrastructure_interface.rb +13 -0
  165. data/lib/archimate/svg/entity/infrastructure_service.rb +13 -0
  166. data/lib/archimate/svg/entity/interaction_entity.rb +14 -0
  167. data/lib/archimate/svg/entity/interface_entity.rb +35 -0
  168. data/lib/archimate/svg/entity/junction.rb +19 -0
  169. data/lib/archimate/svg/entity/location.rb +14 -0
  170. data/lib/archimate/svg/entity/material.rb +14 -0
  171. data/lib/archimate/svg/entity/meaning.rb +40 -0
  172. data/lib/archimate/svg/entity/motivation_entity.rb +40 -0
  173. data/lib/archimate/svg/entity/network.rb +14 -0
  174. data/lib/archimate/svg/entity/node.rb +33 -0
  175. data/lib/archimate/svg/entity/node_shape.rb +64 -0
  176. data/lib/archimate/svg/entity/note.rb +30 -0
  177. data/lib/archimate/svg/entity/or_junction.rb +14 -0
  178. data/lib/archimate/svg/entity/outcome.rb +15 -0
  179. data/lib/archimate/svg/entity/path.rb +14 -0
  180. data/lib/archimate/svg/entity/plateau.rb +15 -0
  181. data/lib/archimate/svg/entity/principle.rb +15 -0
  182. data/lib/archimate/svg/entity/process_entity.rb +63 -0
  183. data/lib/archimate/svg/entity/product.rb +20 -0
  184. data/lib/archimate/svg/entity/rect.rb +13 -0
  185. data/lib/archimate/svg/entity/rect_entity.rb +25 -0
  186. data/lib/archimate/svg/entity/representation.rb +31 -0
  187. data/lib/archimate/svg/entity/requirement.rb +15 -0
  188. data/lib/archimate/svg/entity/resource.rb +14 -0
  189. data/lib/archimate/svg/entity/rounded_rect_entity.rb +23 -0
  190. data/lib/archimate/svg/entity/service_entity.rb +51 -0
  191. data/lib/archimate/svg/entity/sketch_model_sticky.rb +14 -0
  192. data/lib/archimate/svg/entity/stakeholder.rb +15 -0
  193. data/lib/archimate/svg/entity/system_software.rb +14 -0
  194. data/lib/archimate/svg/entity/technology_collaboration.rb +14 -0
  195. data/lib/archimate/svg/entity/technology_event.rb +13 -0
  196. data/lib/archimate/svg/entity/technology_function.rb +13 -0
  197. data/lib/archimate/svg/entity/technology_interaction.rb +13 -0
  198. data/lib/archimate/svg/entity/technology_interface.rb +13 -0
  199. data/lib/archimate/svg/entity/technology_process.rb +13 -0
  200. data/lib/archimate/svg/entity/technology_service.rb +13 -0
  201. data/lib/archimate/svg/entity/value.rb +27 -0
  202. data/lib/archimate/svg/entity/work_package.rb +14 -0
  203. data/lib/archimate/svg/entity.rb +93 -0
  204. data/lib/archimate/svg/entity_factory.rb +17 -0
  205. data/lib/archimate/svg/extents.rb +27 -0
  206. data/lib/archimate/svg/point.rb +7 -0
  207. data/lib/archimate/svg/svg_template.rb +27 -0
  208. data/lib/archimate/svg/svg_template.svg.erb +169 -0
  209. data/lib/archimate/version.rb +4 -0
  210. data/lib/archimate.rb +114 -0
  211. metadata +623 -0
@@ -0,0 +1,169 @@
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
4
+ <title></title>
5
+ <desc></desc>
6
+ <style type="text/css" >
7
+ <![CDATA[<%= stylesheet %>]]>
8
+ </style>
9
+ <defs>
10
+ <!-- Badges -->
11
+ <symbol id="archimate-material-badge" class="archimate-badge" viewBox="0 0 20 20">
12
+ <path style="fill:none;stroke:inherit;stroke-width:1;stroke-linejoin:miter" d="M 15.443383,8.5890552 5.0182941,17.265414 -7.7081977,12.575201 -10.0096,-0.7913701 0.41548896,-9.4677289 13.141981,-4.7775163 Z" transform="matrix(0.59818877,-0.22354387,0.22387513,0.59808805,7.5647066,7.7263348)" />
13
+ <path style="fill:none;stroke:inherit;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter" d="M 4.5472185,10.333586 8.1220759,4.0990346"/>
14
+ <path style="fill:none;stroke:inherit;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter" d="m 12.154515,4.0418369 3.51766,6.2917491"/>
15
+ <path style="fill:none;stroke:inherit;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter" d="m 6.5491386,14.223031 7.0925174,-0.0572"/>
16
+ </symbol>
17
+ <symbol id="archimate-distribution-network-badge" class="archimate-badge" viewBox="0 0 20 20">
18
+ <path style="fill:none;stroke:inherit;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round" d="M 5.8847321,2.5480283 1.4964611,6.7745197 5.7431749,10.596562"/>
19
+ <path style="fill:none;stroke:inherit;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter" d="m 3.5995956,4.8129424 12.6592514,0"/>
20
+ <path d="m 3.5995956,8.6754298 13.2861464,0" style="fill:none;stroke:inherit;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter"/>
21
+ <path d="m 14.314928,2.7502528 4.388271,4.2264914 -4.246714,3.8220418" style="fill:none;stroke:inherit;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round" />
22
+ </symbol>
23
+ <symbol id="archimate-facility-badge" class="archimate-badge" viewBox="0 0 20 20">
24
+ <path style="fill:none;stroke:inherit;stroke-width:1px;stroke-linejoin:miter" d="m 2.1449144,17.940882 0,-15.7007732 2.1735133,0 0,10.2383912 4.5472185,-2.7740891 0,2.8598861 4.4900208,-2.888485 0,2.74549 4.51862,-2.6882923 0,8.2078723 z"/>
25
+ </symbol>
26
+ <symbol id="archimate-equipment-badge" class="archimate-badge" viewBox="0 0 20 20">
27
+ <g transform="translate(0,-7)">
28
+ <circle cx="8" cy="18.7" r="2.432014" style="fill:none;stroke:inherent;stroke-width:0.7"/>
29
+ <circle cx="13.7" cy="12.6" r="2.0318091" style="fill:none;stroke:inherent;stroke-width:0.7"/>
30
+ <path d="m 10.419829,13.456928 -1.089422,-0.143227 0.049633,-1.333107 1.038029,-0.147302 0.341694,-0.73592 -0.57155,-0.843058 0.841528,-0.8648267 0.957991,0.4937924 0.912018,-0.3836763 0.17842,-0.962147 1.316037,-0.019985 0.101237,0.9711183 0.869824,0.3547524 0.771707,-0.6499933 0.91403,0.8676982 -0.566748,0.882319 0.356276,0.832942 0.930473,0.02346 0.06356,1.262322 -1.035165,0.180358 -0.419167,0.824685 0.690443,0.793236 -0.972585,0.907704 -0.733596,-0.578471 -0.952142,0.360765 -0.169839,0.993647 -1.356163,-0.0029 -0.122641,-0.947842 -0.848419,-0.378029 -0.857761,0.70726 -0.979897,-0.985107 0.737388,-0.77599 z" style="fill:none;stroke:inherit;stroke-width:0.8;stroke-linejoin:bevel"/>
31
+ <path style="fill:none;stroke:inherit;stroke-width:0.8;stroke-linejoin:bevel" d="m 3.5980557,18.939362 -1.3122324,-0.550291 0.5156318,-1.650873 1.3468917,0.16932 0.6772813,-0.804271 -0.4271363,-1.249401 1.3455665,-0.795275 1.0287534,0.944094 1.2699024,-0.169321 0.550291,-1.142912 1.6508729,0.423301 -0.203979,1.2494 0.965921,0.740114 1.185242,-0.550291 0.846601,1.396892 -1.00825,0.91076 0.161649,1.163414 1.154418,0.346312 -0.350147,1.600872 -1.354562,-0.12699 -0.804272,0.888931 0.592621,1.227572 L 9.9052376,23.764991 9.1856262,22.791399 7.8733938,22.918389 7.3231027,24.103632 5.6298996,23.638001 5.7992199,22.410428 4.8679581,21.648487 3.5557257,22.241108 2.666794,20.674895 3.8520362,19.955284 Z"/>
32
+ </g>
33
+ </symbol>
34
+ <symbol id="archimate-resource-badge" class="archimate-badge" viewBox="0 0 20 20">
35
+ <rect style="fill:none;stroke:inherit;stroke-width:0.7" width="1.6" height="3.3" x="17" y="5" ry="0.8" rx="0.8"/>
36
+ <rect style="fill:none;stroke:inherit;stroke-width:0.7" width="14" height="9" x="3" y="2" ry="1.2" />
37
+ <path style="fill:none;stroke:inherit;stroke-width:1" d="m 6,4 v 4.4 m 3 -4.4 v 4.4 m 3 -4.4 v 4.4"/>
38
+ </symbol>
39
+ <symbol id="archimate-outcome-badge" class="archimate-badge" viewBox="0 0 20 15">
40
+ <circle style="fill:none;stroke:inherit;stroke-width:0.9;stroke-linecap:round;stroke-linejoin:round" cx="9.0192108" cy="11.324571" r="1.718908" />
41
+ <circle style="fill:none;stroke:inherit;stroke-width:0.9;stroke-linecap:round;stroke-linejoin:round" cx="9.1405458" cy="11.304347" r="3.5591507" />
42
+ <circle style="fill:none;stroke:inherit;stroke-width:0.9;stroke-linecap:round;stroke-linejoin:round" cx="9.0798788" cy="11.324571" r="5.2982812" />
43
+ <path style="fill:inherit;stroke:inherit;stroke-width:0.6;stroke-linecap:butt;stroke-linejoin:round" d="M 8.7563195,11.547017 9.4236603,8.0485339 12.598584,10.940344 Z"/>
44
+ <path style="fill:none;stroke:inherit;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:miter" d="M 16.097068,4.2264914 10.920121,9.6258847"/>
45
+ <path style="fill:none;stroke:inherit;stroke-width:0.9;stroke-linecap:round;stroke-linejoin:miter" d="M 14.742164,2.2244692 13.811931,6.3296259"/>
46
+ <path style="fill:none;stroke:inherit;stroke-width:0.9;stroke-linecap:round;stroke-linejoin:miter" d="M 18.200202,5.0151668 13.953489,6.5318504"/>
47
+ </symbol>
48
+ <symbol id="archimate-course-of-action-badge" class="archimate-badge" viewBox="0 0 20 20">
49
+ <circle style="fill:inherit;stroke:inherit;stroke-width:1" cx="14.5" cy="6" r="1" />
50
+ <circle style="fill:none;stroke:inherit;stroke-width:1" cx="14.5" cy="6" r="2.8" />
51
+ <circle style="fill:none;stroke:inherit;stroke-width:1" cx="14.5" cy="6" r="4.6" />
52
+ <path style="fill:inherit;stroke:inherit;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter" d="M 1.1664063,14.167969 C 2.5664063,12.167969 4.1,10.95 5.6,9.85 L 4.5,9 C 4.3,8.25 4.54,7.9 5.25,7.9 l 4.5,0.6 c -0.5108623,0.013713 1.081001,-0.037861 0.5,1.1 l -3,3.7 c -0.6,0.4 -1,0.25 -1.2,-0.15 L 6.01,11.75 C 4.5,12.5 3.5,14 2.5,15 1.83125,15.09375 1.1875,14.617188 1.1703125,14.171875 Z"/>
53
+ </symbol>
54
+ <symbol id="archimate-capability-badge" class="archimate-badge" viewBox="0 0 20 20">
55
+ <rect x="4" y="11.5" width="5" height="5" style="fill:none;stroke:#423f30"/>
56
+ <rect x="9" y="11.5" width="5" height="5" style="fill:none;stroke:#423f30"/>
57
+ <rect x="14" y="11.5" width="5" height="5" style="fill:none;stroke:#423f30"/>
58
+ <rect x="9" y="6.5" width="5" height="5" style="fill:none;stroke:#423f30"/>
59
+ <rect x="14" y="6.5" width="5" height="5" style="fill:none;stroke:#423f30"/>
60
+ <rect x="14" y="1.5" width="5" height="5" style="fill:none;stroke:#423f30"/>
61
+ </symbol>
62
+ <symbol id="archimate-diagram-model-reference-badge" class="archimate-badge" viewBox="0 0 20 20">
63
+ <rect x="1" y="0.5" width="7" height="7" style="fill:none;stroke:#1c6aa9"/>
64
+ <rect x="2" y="1.5" width="4.5" height="4.5" style="fill:#c2e8fe;stroke:#c2e8fe"/>
65
+ <path d="M11 4 h7" style="fill:none;stroke:#c2e8fe"/>
66
+ <path d="M11 5 h7" style="fill:none;stroke:#1c6aa9"/>
67
+ <rect x="12" y="8.5" width="2" height="2" style="fill:none;stroke:#1c6aa9"/>
68
+ <path d="M15 9.5 h3" style="fill:none;stroke:#1c6aa9"/>
69
+ <rect x="1" y="11.7" width="7" height="7" style="fill:none;stroke:#1c6aa9"/>
70
+ <rect x="2" y="12.7" width="4.5" height="4.5" style="fill:#c2e8fe;stroke:#c2e8fe"/>
71
+ <path d="M11 14.7 h7" style="fill:none;stroke:#c2e8fe"/>
72
+ <path d="M11 15.7 h7" style="fill:none;stroke:#1c6aa9"/>
73
+ </symbol>
74
+ <symbol id="archimate-actor-badge" class="archimate-badge" viewBox="0 0 20 20">
75
+ <path d="M 11 18 l 4 -5 l 4 5 m -4 -5 v -3 h -4 h 8 h -4 v -3 a 3 3 0 1 0 0 -6 a 3 3 0 1 0 0 6" style="fill:inherit;stroke:inherit"/>
76
+ </symbol>
77
+ <symbol id="archimate-assessment-badge" class="archimate-badge" viewBox="0 0 20 15">
78
+ <path d="m4.5 13 l 5 -5 a 4 4 0 1 0 8 -8 a 4 4 0 1 0 -8 8" style="fill:inherit;stroke:inherit"/>
79
+ </symbol>
80
+ <symbol id="archimate-collaboration-badge" class="archimate-badge" viewBox="0 0 20 15" preserveAspectRatio="xMaxYMin meet">
81
+ <path d="m7.5 14 a 6.5 6.5 0 0 1 0 -13 a 6.5 6.5 0 0 1 0 13 m 5 0 a 6.5 6.5 0 0 1 0 -13 a 6.5 6.5 0 0 1 0 13" style="fill:inherit;stroke:inherit"/>
82
+ </symbol>
83
+ <symbol id="archimate-communication-badge" class="archimate-badge" viewBox="0 0 20 15">
84
+ <path d="m7.5 -1 l -6.5 6.5 l 6.5 6.5 m 5 -13 l 6.5 6.5 l -6.5 6.5 m -7 -6.5 h 3 m 3 0 h 3" style="fill:inherit;stroke:inherit"/>
85
+ </symbol>
86
+ <symbol id="archimate-constraint-badge" class="archimate-badge" viewBox="0 0 20 15">
87
+ <path d="m6 -1 h 13 l -5 10 h -13 z m 4 0 l -5 10" style="fill:inherit;stroke:inherit"/>
88
+ </symbol>
89
+ <symbol id="archimate-device-badge" class="archimate-badge" viewBox="0 0 20 20">
90
+ <rect x="2" y="1" width="16" height="10" rx="3" ry="3" style="fill:inherit;stroke:inherit;"/>
91
+ <path d="M6 11 l -4.5 4 h 17 l -4.5 -4" stroke="black" style="fill:inherit;stroke:inherit;"/>
92
+ </symbol>
93
+ <symbol id="archimate-driver-badge" class="archimate-badge" viewBox="0 0 20 15">
94
+ <path d="m17.5 6.5 a 6.5 6.5 0 0 0 -13 0 a 6.5 6.5 0 0 0 13 0 m 2 0 h -17 m 8.5 -8.5 v 17 m -6.01 -2.49 l 12.02 -12.02 m 0 12.02 l -12.02 -12.02" style="fill:inherit;stroke:inherit"/>
95
+ </symbol>
96
+ <symbol id="archimate-function-badge" class="archimate-badge" viewBox="0 0 20 20" preserveAspectRatio="xMaxYMin meet">
97
+ <path d="m7 15 l 0 -9 l 6 -5 l 6 5 l 0 9 l -6 -6 z" style="fill:none;stroke:inherit"/>
98
+ </symbol>
99
+ <symbol id="archimate-gap-badge" class="archimate-badge" viewBox="0 0 20 15">
100
+ <path d="m4.5 5 a 6.5 6.5 0 0 0 13 0 a 6.5 6.5 0 0 0 -13 0 m -2 -1.5 h 17 m -17 3 h 17" style="fill:inherit;stroke:inherit"/>
101
+ </symbol>
102
+ <symbol id="archimate-goal-badge" class="archimate-badge" viewBox="0 0 20 15">
103
+ <circle cx="12" cy="6" r="7" style="fill:inherit;stroke:inherit"/>
104
+ <circle cx="12" cy="6" r="4.7" style="fill:inherit;stroke:inherit"/>
105
+ <circle cx="12" cy="6" r="2" style="fill:black;stroke:inherit;"/>
106
+ </symbol>
107
+ <symbol id="archimate-interaction-badge" class="archimate-badge" viewBox="0 0 20 15" preserveAspectRatio="xMaxYMin meet">
108
+ <path d="M11 14 a 5 6 0 0 1 0 -13 z" style="fill:inherit;stroke:inherit"/>
109
+ <path d="M14 14 a 5 6 0 0 0 0 -13 z" style="fill:inherit;stroke:inherit"/>
110
+ </symbol>
111
+ <symbol id="archimate-interface-badge" class="archimate-badge" viewBox="0 0 20 15" preserveAspectRatio="xMaxYMin meet">
112
+ <path d="m0.5 6 h 8.5 a 5 5 0 0 1 10 0 a 5 5 0 0 1 -10 0" style="fill:inherit;stroke:inherit"/>
113
+ </symbol>
114
+ <symbol id="archimate-location-badge" class="archimate-badge" viewBox="0 0 20 15">
115
+ <path d="m10 6.5 a 5 5, 0, 1, 1, 8 0 l -4 7 z" style="fill:inherit;stroke:inherit"/>
116
+ </symbol>
117
+ <symbol id="archimate-network-badge" class="archimate-badge" viewBox="0 0 20 15">
118
+ <path d="m9 9.5 a 2.5 2.5 0 0 0 -5 0 a 2.5 2.5 0 0 0 5 0 m -2 -2.5 l 1 -3 m 0.5 0 a 2.5 2.5 0 0 0 0 -5 a 2.5 2.5 0 0 0 0 5 m 2 -2.5 h 3.5 a 2.5 2.5 0 0 0 5 0 a 2.5 2.5 0 0 0 -5 0 m 2 2.5 l -1 3 m -0.5 0 a 2.5 2.5 0 0 0 0 5 a 2.5 2.5 0 0 0 0 -5 m -2 2.5 h -3.5" style="fill:inherit;stroke:inherit"/>
119
+ </symbol>
120
+ <symbol id="archimate-node-badge" class="archimate-badge" viewBox="0 0 20 20">
121
+ <path d="M1 19 v -15 l 3 -3 h 15 v 15 l -3 3 z M 16 19 v -15 l 3 -3 m -3 3 h -15" style="fill:none;stroke:inherit;stroke-linejoin:miter;"/>
122
+ </symbol>
123
+ <symbol id="archimate-plateau-badge" class="archimate-badge" viewBox="0 0 20 15">
124
+ <path d="m7 0 h 12 m -12 1 h 12 m -14 3 h 12 m -12 1 h 12 m -14 3 h 12 m -12 1 h 12" style="fill:inherit;stroke:inherit"/>
125
+ </symbol>
126
+ <symbol id="archimate-principle-badge" class="archimate-badge" viewBox="0 0 20 15">
127
+ <path d="m8.5 -1 h 8 a 2 2 0 0 0 2 2 v 9 a 2 2 0 0 0 -2 2 h -8 a 2 2 0 0 0 -2 -2 v -9 a 2 2 0 0 0 2 -2 m 4 1 v7 m 1 -7 v7 m -1 1.5 v2 m 1 -2 v2" style="fill:inherit;stroke:inherit"/>
128
+ </symbol>
129
+ <symbol id="archimate-process-badge" class="archimate-badge" viewBox="0 0 20 15">
130
+ <path d="m1 3 h 11 v -4 l 7 6 l -7 6 v -4 h -11 z" style="fill:inherit;stroke:inherit"/>
131
+ </symbol>
132
+ <symbol id="archimate-requirement-badge" class="archimate-badge" viewBox="0 0 20 15">
133
+ <path d="m6 -1 h 13 l -5 10 h -13 z" style="fill:inherit;stroke:inherit"/>
134
+ </symbol>
135
+ <symbol id="archimate-role-badge" class="archimate-badge" viewBox="0 0 20 20">
136
+ <path d="m15 10.5 h -10 a 4.5 4.5 0 0 1 0 -9 h 10 a 4.5 4.5 0 0 1 0 9 a 4.5 4.5 0 0 1 0 -9" style="fill:inherit;stroke:inherit"/>
137
+ </symbol>
138
+ <symbol id="archimate-service-badge" class="archimate-badge" viewBox="0 0 20 20">
139
+ <rect x="1" y="1" width="17" height="10" rx="5" ry="5" style="fill:inherit;stroke:inherit;"/>
140
+ </symbol>
141
+ <symbol id="archimate-system-software-badge" class="archimate-badge" viewBox="0 0 20 15">
142
+ <path d="m9.5 1 a 5.5 5.5 0 0 1 0 11 a 5.5 5.5 0 0 1 0 -11 m -2.8 0.7 a 5.5 5.5 0 1 1 7.6 7.6" style="fill:inherit;stroke:inherit"/>
143
+ </symbol>
144
+
145
+ <!-- Line Markers -->
146
+ <marker id="archimate-dot-marker" viewBox="0 0 10 10" refX="4" refY="4" markerUnits="strokeWidth" markerWidth="8" markerHeight="8">
147
+ <circle cx="4" cy="4" r="3" fill="black" stroke="black" />
148
+ </marker>
149
+ <marker id="archimate-used-by-arrow" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="8" orient="auto">
150
+ <path d="M 1 1 L 9 5 L 1 9" fill="none" stroke="black" style="fill:none;stroke:black;"/>
151
+ </marker>
152
+ <marker id="archimate-open-arrow" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="8" orient="auto">
153
+ <path d="M 1 1 L 9 5 L 1 9" fill="none" stroke="black"/>
154
+ </marker>
155
+ <marker id="archimate-filled-arrow" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="12" markerHeight="12" orient="auto">
156
+ <polygon points="1,1 9,5 1,9" fill="black" stroke="black"/>
157
+ </marker>
158
+ <marker id="archimate-hollow-arrow" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="12" markerHeight="12" orient="auto">
159
+ <polygon points="1,1 9,5 1,9" fill="white" stroke="black"/>
160
+ </marker>
161
+ <marker id="archimate-filled-diamond" viewBox="0 0 10 10" refX="1" refY="5" markerUnits="strokeWidth" markerWidth="12" markerHeight="12" orient="auto">
162
+ <polygon points="5,2.5 9,5 5,7.5 1,5" fill="black" stroke="black"/>
163
+ </marker>
164
+ <marker id="archimate-hollow-diamond" viewBox="0 0 10 10" refX="1" refY="5" markerUnits="strokeWidth" markerWidth="13" markerHeight="13" orient="auto">
165
+ <polygon points="5,2.5 9,5 5,7.5 1,5" fill="white" stroke="black"/>
166
+ </marker>
167
+ </defs>
168
+ <g id="archimate-diagram"></g>
169
+ </svg>
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+ module Archimate
3
+ VERSION = "1.1.0"
4
+ end
data/lib/archimate.rb ADDED
@@ -0,0 +1,114 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "dry-types"
4
+ require "dry-struct"
5
+
6
+ module Archimate
7
+ SUPPORTED_FORMATS = %i[
8
+ archi_3
9
+ archi_4
10
+ archimate_2_1
11
+ archimate_3_0
12
+ ].freeze
13
+
14
+ ARCHIMATE_VERSIONS = %i[
15
+ archimate_2_1
16
+ archimate_3_0
17
+ ].freeze
18
+
19
+ module Cli
20
+ autoload :Archi, 'archimate/cli/archi'
21
+ autoload :Cleanup, 'archimate/cli/cleanup'
22
+ autoload :ConflictResolver, 'archimate/cli/conflict_resolver'
23
+ autoload :Convert, 'archimate/cli/convert'
24
+ autoload :Diff, 'archimate/cli/diff'
25
+ autoload :DiffSummary, 'archimate/cli/diff_summary'
26
+ autoload :Duper, 'archimate/cli/duper'
27
+ autoload :Lint, 'archimate/cli/lint'
28
+ autoload :Mapper, 'archimate/cli/mapper'
29
+ autoload :Merge, 'archimate/cli/merge'
30
+ autoload :Merger, 'archimate/cli/merger'
31
+ autoload :Stats, 'archimate/cli/stats'
32
+ autoload :Svger, 'archimate/cli/svger'
33
+ end
34
+
35
+ module Export
36
+ autoload :NQuads, 'archimate/export/n_quads'
37
+ autoload :GraphML, 'archimate/export/graph_ml'
38
+ autoload :CSVExport, 'archimate/export/csv_export'
39
+ autoload :Cypher, 'archimate/export/cypher'
40
+ end
41
+
42
+ module FileFormats
43
+ autoload :ArchimateV2, 'archimate/file_formats/archimate_v2'
44
+ autoload :ArchiFileFormat, 'archimate/file_formats/archi_file_format'
45
+ autoload :ArchiFileReader, 'archimate/file_formats/archi_file_reader'
46
+ autoload :ArchiFileWriter, 'archimate/file_formats/archi_file_writer'
47
+ autoload :ModelExchangeFileFormat, 'archimate/file_formats/model_exchange_file_format'
48
+ autoload :ModelExchangeFileReader, 'archimate/file_formats/model_exchange_file_reader'
49
+ autoload :ModelExchangeFileReader21, 'archimate/file_formats/model_exchange_file_reader_21'
50
+ autoload :ModelExchangeFileReader30, 'archimate/file_formats/model_exchange_file_reader_30'
51
+ autoload :ModelExchangeFileWriter, 'archimate/file_formats/model_exchange_file_writer'
52
+ autoload :ModelExchangeFileWriter21, 'archimate/file_formats/model_exchange_file_writer_21'
53
+ autoload :ModelExchangeFileWriter30, 'archimate/file_formats/model_exchange_file_writer_30'
54
+ autoload :Writer, 'archimate/file_formats/writer'
55
+ module ModelExchangeFile
56
+ autoload :XmlLangString, 'archimate/file_formats/model_exchange_file/xml_lang_string'
57
+ autoload :XmlMetadata, 'archimate/file_formats/model_exchange_file/xml_metadata'
58
+ autoload :XmlPropertyDefinitions, 'archimate/file_formats/model_exchange_file/xml_property_definitions'
59
+ autoload :XmlPropertyDefs, 'archimate/file_formats/model_exchange_file/xml_property_defs'
60
+ end
61
+ end
62
+
63
+ module Lint
64
+ autoload :DuplicateEntities, 'archimate/lint/duplicate_entities'
65
+ autoload :Linter, 'archimate/lint/linter'
66
+ end
67
+
68
+ module Svg
69
+ autoload :Child, 'archimate/svg/child'
70
+ autoload :CssStyle, 'archimate/svg/css_style'
71
+ autoload :Connection, 'archimate/svg/connection'
72
+ autoload :Diagram, 'archimate/svg/diagram'
73
+ autoload :Entity, 'archimate/svg/entity'
74
+ autoload :EntityFactory, 'archimate/svg/entity_factory'
75
+ autoload :Extents, 'archimate/svg/extents'
76
+ autoload :Point, 'archimate/svg/point'
77
+ autoload :SvgTemplate, 'archimate/svg/svg_template'
78
+ end
79
+
80
+ autoload :FileFormat, 'archimate/file_format'
81
+ autoload :MaybeIO, 'archimate/maybe_io'
82
+ autoload :ProgressIndicator, 'archimate/progress_indicator'
83
+
84
+ require "archimate/version"
85
+ require "archimate/config"
86
+ require "archimate/logging"
87
+ require "archimate/color"
88
+ require 'archimate/data_model'
89
+ require 'archimate/diff'
90
+
91
+ # Computes the set of differences between base and remote models
92
+ def self.diff(base, remote)
93
+ base.diff(remote)
94
+ end
95
+
96
+ # Reads the given file and returns the Archimate model
97
+ #
98
+ # @param filename File name of the file to read
99
+ # @return Archimate::DataModel::Model of ArchiMate model in the file
100
+ def self.read(filename)
101
+ FileFormat.read(filename)
102
+ end
103
+
104
+ # Reads the given file and returns the Archimate model
105
+ #
106
+ # @param filename File name of the file to read
107
+ # @return Archimate::DataModel::Model of ArchiMate model in the file
108
+ def self.parse(filename)
109
+ FileFormat.parse(filename)
110
+ end
111
+
112
+ using DataModel::DiffablePrimitive
113
+ using DataModel::DiffableArray
114
+ end