ea 0.1.0 → 0.1.5

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 (232) hide show
  1. checksums.yaml +4 -4
  2. data/CLAUDE.md +125 -0
  3. data/Rakefile +12 -4
  4. data/TODO.next/00-publish-blocking-bugs.md +74 -0
  5. data/TODO.next/01-standalone-ea-gem-identity.md +76 -0
  6. data/TODO.next/02-optional-lutaml-uml-dependency.md +47 -0
  7. data/TODO.next/03-slim-lutaml-uml.md +79 -0
  8. data/TODO.next/04-loader-registry-for-uml-repository.md +49 -0
  9. data/TODO.next/05-extract-shared-transformer-methods.md +14 -0
  10. data/TODO.next/06-deduplicate-stereotype-loading.md +17 -0
  11. data/TODO.next/07-transformer-registry-in-factory.md +20 -0
  12. data/TODO.next/08-connector-type-registry.md +27 -0
  13. data/TODO.next/09-element-renderer-registry.md +29 -0
  14. data/TODO.next/10-connector-renderer-lsp.md +18 -0
  15. data/TODO.next/11-consolidate-style-knowledge.md +33 -0
  16. data/TODO.next/12-data-driven-from-db-row.md +24 -0
  17. data/TODO.next/13-extract-duplicated-methods.md +17 -0
  18. data/TODO.next/14-remove-dead-code.md +10 -0
  19. data/TODO.next/15-narrow-exception-handling.md +39 -0
  20. data/TODO.next/16-repository-indexes.md +28 -0
  21. data/TODO.next/17-fix-spec-quality-and-coverage.md +32 -0
  22. data/TODO.next/18-xmi-tool-specific-parser-architecture.md +172 -0
  23. data/TODO.next/19-fix-ea-gemspec-dependency-declarations.md +56 -0
  24. data/TODO.next/20-ci-requires-unreleased-lutaml-uml.md +63 -0
  25. data/TODO.next/21-qeatoxmi-via-xmi-gem.md +340 -0
  26. data/TODO.next/22-strip-respond-to-from-qeatoxmi-specs.md +32 -0
  27. data/TODO.next/23-cleanup-idallocator.md +41 -0
  28. data/TODO.next/24-tighten-parity-specs.md +42 -0
  29. data/TODO.next/25-sparx-eaid-format-for-synthesized-ids.md +62 -0
  30. data/TODO.next/26-fix-uppervalue-lowervalue-count-gap.md +51 -0
  31. data/TODO.next/27-extract-cardinality-module.md +68 -0
  32. data/TODO.next/28-extract-xml-sanitizer.md +51 -0
  33. data/TODO.next/29-ocp-registry-for-classifier-builders.md +58 -0
  34. data/TODO.next/30-struct-return-for-association-end.md +37 -0
  35. data/TODO.next/31-idallocator-specs.md +27 -0
  36. data/TODO.next/32-phase2-gap-sentinel-specs.md +53 -0
  37. data/TODO.next/33-normalize-lower-cleanup.md +30 -0
  38. data/TODO.next/34-document-member-end-order-rt-prefix.md +29 -0
  39. data/TODO.next/35-walk-runstate-for-instance-slots.md +76 -0
  40. data/TODO.next/36-wire-interface-realization.md +50 -0
  41. data/TODO.next/37-visibility-returns-real-booleans.md +36 -0
  42. data/TODO.next/38-xmi-parser-feature-parity.md +75 -0
  43. data/TODO.next/39-ea-spa-cli-command.md +53 -0
  44. data/TODO.next/40-drop-lur-only-check-in-diagrams-extract.md +56 -0
  45. data/config/diagram_styles.yml +200 -0
  46. data/config/model_transformations.yml +266 -0
  47. data/config/qea_schema.yml +1024 -0
  48. data/docs/ea_to_uml_type_mapping.md +89 -0
  49. data/docs/xmi_qea_conversion_capabilities.md +99 -0
  50. data/examples/lur/20251010_current_plateau_v5.1.lur +0 -0
  51. data/examples/lur/basic.lur +0 -0
  52. data/examples/lur/test-output.lur +0 -0
  53. data/examples/lur/test.lur +0 -0
  54. data/examples/lur_basic_usage.rb +221 -0
  55. data/examples/lur_cli_workflow.rb +263 -0
  56. data/examples/lur_statistics.rb +326 -0
  57. data/examples/qea/20251010_current_plateau_v5.1.qea +0 -0
  58. data/examples/qea/ArcGISWorkspace_template.qea +0 -0
  59. data/examples/qea/README_qea_parser.adoc +230 -0
  60. data/examples/qea/UmlModel_template.qea +0 -0
  61. data/examples/qea/basic.qea +0 -0
  62. data/examples/qea/simple.qea +0 -0
  63. data/examples/qea/simple_example.qea +0 -0
  64. data/examples/qea/test.qea +0 -0
  65. data/examples/qea_standalone_query.rb +73 -0
  66. data/examples/qea_to_repository.rb +51 -0
  67. data/examples/smoke_test_real_qea.rb +81 -0
  68. data/exe/ea +7 -0
  69. data/lib/ea/cli/app.rb +81 -0
  70. data/lib/ea/cli/command/base.rb +80 -0
  71. data/lib/ea/cli/command/convert.rb +62 -0
  72. data/lib/ea/cli/command/diagrams.rb +75 -0
  73. data/lib/ea/cli/command/list.rb +61 -0
  74. data/lib/ea/cli/command/parse.rb +29 -0
  75. data/lib/ea/cli/command/repository_builder.rb +64 -0
  76. data/lib/ea/cli/command/spa.rb +79 -0
  77. data/lib/ea/cli/command/stats.rb +20 -0
  78. data/lib/ea/cli/command/validate.rb +41 -0
  79. data/lib/ea/cli/command.rb +17 -0
  80. data/lib/ea/cli/error.rb +34 -0
  81. data/lib/ea/cli/output/formatter.rb +34 -0
  82. data/lib/ea/cli/output/json_formatter.rb +20 -0
  83. data/lib/ea/cli/output/table_formatter.rb +42 -0
  84. data/lib/ea/cli/output/yaml_formatter.rb +20 -0
  85. data/lib/ea/cli/output.rb +56 -0
  86. data/lib/ea/cli.rb +17 -0
  87. data/lib/ea/diagram/configuration.rb +379 -0
  88. data/lib/ea/diagram/element_renderers/base_renderer.rb +77 -0
  89. data/lib/ea/diagram/element_renderers/class_renderer.rb +323 -0
  90. data/lib/ea/diagram/element_renderers/connector_renderer.rb +41 -0
  91. data/lib/ea/diagram/element_renderers/package_renderer.rb +61 -0
  92. data/lib/ea/diagram/element_renderers.rb +43 -0
  93. data/lib/ea/diagram/extractor.rb +560 -0
  94. data/lib/ea/diagram/layout_engine.rb +170 -0
  95. data/lib/ea/diagram/path_builder.rb +202 -0
  96. data/lib/ea/diagram/style_parser.rb +42 -0
  97. data/lib/ea/diagram/style_resolver.rb +276 -0
  98. data/lib/ea/diagram/svg_renderer.rb +274 -0
  99. data/lib/ea/diagram/util.rb +73 -0
  100. data/lib/ea/diagram.rb +47 -0
  101. data/lib/ea/qea/benchmark.rb +210 -0
  102. data/lib/ea/qea/database.rb +308 -0
  103. data/lib/ea/qea/factory/association_builder.rb +203 -0
  104. data/lib/ea/qea/factory/association_transformer.rb +91 -0
  105. data/lib/ea/qea/factory/attribute_tag_transformer.rb +57 -0
  106. data/lib/ea/qea/factory/attribute_transformer.rb +93 -0
  107. data/lib/ea/qea/factory/base_transformer.rb +177 -0
  108. data/lib/ea/qea/factory/class_transformer.rb +116 -0
  109. data/lib/ea/qea/factory/constraint_transformer.rb +75 -0
  110. data/lib/ea/qea/factory/data_type_transformer.rb +77 -0
  111. data/lib/ea/qea/factory/diagram_transformer.rb +157 -0
  112. data/lib/ea/qea/factory/document_builder.rb +283 -0
  113. data/lib/ea/qea/factory/ea_to_uml_factory.rb +229 -0
  114. data/lib/ea/qea/factory/enum_transformer.rb +74 -0
  115. data/lib/ea/qea/factory/generalization_builder.rb +227 -0
  116. data/lib/ea/qea/factory/generalization_transformer.rb +98 -0
  117. data/lib/ea/qea/factory/instance_transformer.rb +68 -0
  118. data/lib/ea/qea/factory/object_property_transformer.rb +58 -0
  119. data/lib/ea/qea/factory/operation_transformer.rb +66 -0
  120. data/lib/ea/qea/factory/package_transformer.rb +145 -0
  121. data/lib/ea/qea/factory/reference_resolver.rb +99 -0
  122. data/lib/ea/qea/factory/stereotype_loader.rb +39 -0
  123. data/lib/ea/qea/factory/tagged_value_transformer.rb +38 -0
  124. data/lib/ea/qea/factory/transformer_registry.rb +80 -0
  125. data/lib/ea/qea/factory.rb +37 -0
  126. data/lib/ea/qea/file_detector.rb +178 -0
  127. data/lib/ea/qea/infrastructure/database_connection.rb +100 -0
  128. data/lib/ea/qea/infrastructure/schema_reader.rb +136 -0
  129. data/lib/ea/qea/infrastructure/table_reader.rb +224 -0
  130. data/lib/ea/qea/infrastructure.rb +12 -0
  131. data/lib/ea/qea/models/base_model.rb +59 -0
  132. data/lib/ea/qea/models/ea_attribute.rb +109 -0
  133. data/lib/ea/qea/models/ea_attribute_tag.rb +100 -0
  134. data/lib/ea/qea/models/ea_complexity_type.rb +79 -0
  135. data/lib/ea/qea/models/ea_connector.rb +160 -0
  136. data/lib/ea/qea/models/ea_connector_type.rb +60 -0
  137. data/lib/ea/qea/models/ea_constraint_type.rb +63 -0
  138. data/lib/ea/qea/models/ea_datatype.rb +104 -0
  139. data/lib/ea/qea/models/ea_diagram.rb +115 -0
  140. data/lib/ea/qea/models/ea_diagram_link.rb +78 -0
  141. data/lib/ea/qea/models/ea_diagram_object.rb +73 -0
  142. data/lib/ea/qea/models/ea_diagram_type.rb +56 -0
  143. data/lib/ea/qea/models/ea_document.rb +63 -0
  144. data/lib/ea/qea/models/ea_object.rb +223 -0
  145. data/lib/ea/qea/models/ea_object_constraint.rb +53 -0
  146. data/lib/ea/qea/models/ea_object_property.rb +87 -0
  147. data/lib/ea/qea/models/ea_object_type.rb +73 -0
  148. data/lib/ea/qea/models/ea_operation.rb +127 -0
  149. data/lib/ea/qea/models/ea_operation_param.rb +76 -0
  150. data/lib/ea/qea/models/ea_package.rb +78 -0
  151. data/lib/ea/qea/models/ea_script.rb +62 -0
  152. data/lib/ea/qea/models/ea_status_type.rb +66 -0
  153. data/lib/ea/qea/models/ea_stereotype.rb +57 -0
  154. data/lib/ea/qea/models/ea_tagged_value.rb +99 -0
  155. data/lib/ea/qea/models/ea_xref.rb +165 -0
  156. data/lib/ea/qea/models.rb +35 -0
  157. data/lib/ea/qea/repositories/base_repository.rb +225 -0
  158. data/lib/ea/qea/repositories/object_repository.rb +219 -0
  159. data/lib/ea/qea/repositories.rb +10 -0
  160. data/lib/ea/qea/services/configuration.rb +211 -0
  161. data/lib/ea/qea/services/database_loader.rb +191 -0
  162. data/lib/ea/qea/services.rb +10 -0
  163. data/lib/ea/qea/validation/association_validator.rb +73 -0
  164. data/lib/ea/qea/validation/attribute_validator.rb +91 -0
  165. data/lib/ea/qea/validation/base_validator.rb +331 -0
  166. data/lib/ea/qea/validation/class_validator.rb +121 -0
  167. data/lib/ea/qea/validation/database/circular_reference_validator.rb +109 -0
  168. data/lib/ea/qea/validation/database/orphan_validator.rb +153 -0
  169. data/lib/ea/qea/validation/database/referential_integrity_validator.rb +128 -0
  170. data/lib/ea/qea/validation/database.rb +16 -0
  171. data/lib/ea/qea/validation/diagram_validator.rb +112 -0
  172. data/lib/ea/qea/validation/formatters/json_formatter.rb +137 -0
  173. data/lib/ea/qea/validation/formatters/text_formatter.rb +235 -0
  174. data/lib/ea/qea/validation/formatters.rb +12 -0
  175. data/lib/ea/qea/validation/operation_validator.rb +71 -0
  176. data/lib/ea/qea/validation/package_validator.rb +111 -0
  177. data/lib/ea/qea/validation/validation_engine.rb +387 -0
  178. data/lib/ea/qea/validation/validation_message.rb +144 -0
  179. data/lib/ea/qea/validation/validation_result.rb +210 -0
  180. data/lib/ea/qea/validation/validator_registry.rb +134 -0
  181. data/lib/ea/qea/validation.rb +28 -0
  182. data/lib/ea/qea/verification/comparison_result.rb +264 -0
  183. data/lib/ea/qea/verification/document_normalizer.rb +169 -0
  184. data/lib/ea/qea/verification/document_verifier.rb +322 -0
  185. data/lib/ea/qea/verification/element_comparator.rb +277 -0
  186. data/lib/ea/qea/verification/structure_matcher.rb +287 -0
  187. data/lib/ea/qea/verification.rb +14 -0
  188. data/lib/ea/qea.rb +185 -0
  189. data/lib/ea/transformations/configuration.rb +333 -0
  190. data/lib/ea/transformations/format_registry.rb +366 -0
  191. data/lib/ea/transformations/parsers/base_parser.rb +482 -0
  192. data/lib/ea/transformations/parsers/qea_parser.rb +401 -0
  193. data/lib/ea/transformations/parsers/xmi_parser.rb +243 -0
  194. data/lib/ea/transformations/transformation_engine.rb +390 -0
  195. data/lib/ea/transformations.rb +85 -0
  196. data/lib/ea/transformers/qea_to_xmi/association_end.rb +19 -0
  197. data/lib/ea/transformers/qea_to_xmi/cardinality.rb +96 -0
  198. data/lib/ea/transformers/qea_to_xmi/context.rb +106 -0
  199. data/lib/ea/transformers/qea_to_xmi/guid_format.rb +56 -0
  200. data/lib/ea/transformers/qea_to_xmi/id_allocator.rb +92 -0
  201. data/lib/ea/transformers/qea_to_xmi/run_state.rb +107 -0
  202. data/lib/ea/transformers/qea_to_xmi/transformer.rb +607 -0
  203. data/lib/ea/transformers/qea_to_xmi/visibility.rb +73 -0
  204. data/lib/ea/transformers/qea_to_xmi.rb +29 -0
  205. data/lib/ea/transformers/uml_to_xmi/id_generator.rb +54 -0
  206. data/lib/ea/transformers/uml_to_xmi/transformer.rb +152 -0
  207. data/lib/ea/transformers/uml_to_xmi/writer.rb +96 -0
  208. data/lib/ea/transformers/uml_to_xmi.rb +16 -0
  209. data/lib/ea/transformers.rb +34 -0
  210. data/lib/ea/version.rb +1 -1
  211. data/lib/ea/xmi/liquid_drops/association_drop.rb +56 -0
  212. data/lib/ea/xmi/liquid_drops/attribute_drop.rb +72 -0
  213. data/lib/ea/xmi/liquid_drops/cardinality_drop.rb +35 -0
  214. data/lib/ea/xmi/liquid_drops/connector_drop.rb +54 -0
  215. data/lib/ea/xmi/liquid_drops/constraint_drop.rb +29 -0
  216. data/lib/ea/xmi/liquid_drops/data_type_drop.rb +63 -0
  217. data/lib/ea/xmi/liquid_drops/dependency_drop.rb +36 -0
  218. data/lib/ea/xmi/liquid_drops/diagram_drop.rb +34 -0
  219. data/lib/ea/xmi/liquid_drops/enum_drop.rb +49 -0
  220. data/lib/ea/xmi/liquid_drops/enum_owned_literal_drop.rb +25 -0
  221. data/lib/ea/xmi/liquid_drops/generalization_attribute_drop.rb +87 -0
  222. data/lib/ea/xmi/liquid_drops/generalization_drop.rb +127 -0
  223. data/lib/ea/xmi/liquid_drops/klass_drop.rb +191 -0
  224. data/lib/ea/xmi/liquid_drops/operation_drop.rb +29 -0
  225. data/lib/ea/xmi/liquid_drops/package_drop.rb +108 -0
  226. data/lib/ea/xmi/liquid_drops/root_drop.rb +34 -0
  227. data/lib/ea/xmi/liquid_drops/source_target_drop.rb +43 -0
  228. data/lib/ea/xmi/lookup_service.rb +89 -0
  229. data/lib/ea/xmi/parser.rb +1015 -0
  230. data/lib/ea/xmi.rb +35 -0
  231. data/lib/ea.rb +10 -1
  232. metadata +387 -9
@@ -0,0 +1,200 @@
1
+ # diagram_styles.yml - Configurable EA Diagram Styling
2
+ # This file defines the default styling for LutaML diagram generation
3
+
4
+ # Global defaults - applied when no other configuration matches
5
+ defaults:
6
+ colors:
7
+ background: "#FFFFFF"
8
+ default_fill: "#E0E0E0"
9
+ default_stroke: "#000000"
10
+ text: "#000000"
11
+
12
+ fonts:
13
+ default:
14
+ family: "Carlito, Arial, sans-serif"
15
+ size: 9
16
+ weight: 400
17
+ style: normal
18
+
19
+ class_name:
20
+ family: "Carlito, Arial, sans-serif"
21
+ size: 9
22
+ weight: 700 # bold
23
+ style: normal
24
+
25
+ stereotype:
26
+ family: "Carlito, Arial, sans-serif"
27
+ size: 9
28
+ weight: 400
29
+ style: normal
30
+
31
+ attribute:
32
+ family: "Carlito, Arial, sans-serif"
33
+ size: 9
34
+ weight: 400
35
+ style: normal
36
+
37
+ operation:
38
+ family: "Carlito, Arial, sans-serif"
39
+ size: 9
40
+ weight: 400
41
+ style: normal
42
+
43
+ box:
44
+ stroke_width: 2
45
+ stroke_linecap: round
46
+ stroke_linejoin: bevel
47
+ corner_radius: 0
48
+ padding: 5
49
+ fill_opacity: 1.0
50
+ stroke_opacity: 1.0
51
+
52
+ text:
53
+ visibility_public: "+"
54
+ visibility_private: "-"
55
+ visibility_protected: "#"
56
+ visibility_package: "~"
57
+ cardinality_format: "[%s]"
58
+ stereotype_format: "«%s»"
59
+
60
+ # Stereotype-based styling
61
+ # These apply when elements have specific stereotypes
62
+ stereotypes:
63
+ DataType:
64
+ colors:
65
+ fill: "#FFCCFF" # Pink for i-UR DataTypes
66
+ stroke: "#000000"
67
+ fonts:
68
+ class_name:
69
+ weight: 700
70
+ style: italic
71
+
72
+ FeatureType:
73
+ colors:
74
+ fill: "#FFFFCC" # Yellow for CityGML FeatureTypes
75
+ stroke: "#000000"
76
+
77
+ GMLType:
78
+ colors:
79
+ fill: "#CCFFCC" # Green for GML Types
80
+ stroke: "#000000"
81
+
82
+ Interface:
83
+ colors:
84
+ fill: "#FFFFEE"
85
+ stroke: "#000000"
86
+ fonts:
87
+ class_name:
88
+ style: italic
89
+
90
+ Enumeration:
91
+ colors:
92
+ fill: "#FFE6CC"
93
+ stroke: "#000000"
94
+
95
+ Abstract:
96
+ fonts:
97
+ class_name:
98
+ style: italic
99
+
100
+ # Package-based styling (optional)
101
+ # Supports wildcards: "CityGML::*" matches any package starting with "CityGML::"
102
+ packages:
103
+ "CityGML::*":
104
+ colors:
105
+ fill: "#FFFFCC"
106
+
107
+ "i-UR::*":
108
+ colors:
109
+ fill: "#FFCCFF"
110
+
111
+ "gml::*":
112
+ colors:
113
+ fill: "#CCFFCC"
114
+
115
+ # Class-specific overrides (highest priority after EA data)
116
+ # These take precedence over package and stereotype styling
117
+ classes: {}
118
+
119
+ # Connector styling
120
+ connectors:
121
+ generalization:
122
+ arrow:
123
+ type: hollow_triangle
124
+ size: 10
125
+ line:
126
+ stroke_width: 1
127
+ stroke: "#000000"
128
+ fill: none
129
+
130
+ association:
131
+ arrow:
132
+ type: open_arrow
133
+ size: 8
134
+ line:
135
+ stroke_width: 1
136
+ stroke: "#000000"
137
+ labels:
138
+ show_role_names: true
139
+ show_cardinality: true
140
+ font:
141
+ family: "Carlito, Arial, sans-serif"
142
+ size: 8
143
+
144
+ dependency:
145
+ arrow:
146
+ type: open_arrow
147
+ size: 8
148
+ line:
149
+ stroke_width: 1
150
+ stroke: "#000000"
151
+ stroke_dasharray: "5,5"
152
+
153
+ aggregation:
154
+ arrow:
155
+ type: diamond
156
+ size: 10
157
+ fill: white
158
+ line:
159
+ stroke_width: 1
160
+ stroke: "#000000"
161
+
162
+ composition:
163
+ arrow:
164
+ type: filled_diamond
165
+ size: 10
166
+ fill: black
167
+ line:
168
+ stroke_width: 1
169
+ stroke: "#000000"
170
+
171
+ realization:
172
+ arrow:
173
+ type: hollow_triangle
174
+ size: 10
175
+ line:
176
+ stroke_width: 1
177
+ stroke: "#000000"
178
+ stroke_dasharray: "5,5"
179
+
180
+ # Legend configuration
181
+ legend:
182
+ enabled: true
183
+ position: bottom_right
184
+ title: "Legend"
185
+ box:
186
+ fill: "#FFFFFF"
187
+ stroke: "#000000"
188
+ stroke_width: 1
189
+ padding: 10
190
+ font:
191
+ family: "Carlito, Arial, sans-serif"
192
+ size: 9
193
+ weight: 400
194
+ entries:
195
+ - label: "i-UR DataTypes"
196
+ color: "#FFCCFF"
197
+ - label: "CityGML FeatureTypes"
198
+ color: "#FFFFCC"
199
+ - label: "GML Types"
200
+ color: "#CCFFCC"
@@ -0,0 +1,266 @@
1
+ # Model Transformations Configuration
2
+ # This file configures the unified model transformation system for LutaML
3
+ #
4
+ # Version: 1.0
5
+ # Description: External configuration for model format parsers and transformation options
6
+
7
+ version: "1.0"
8
+ description: "LutaML Model Transformations Configuration"
9
+
10
+ # Parser configurations define how different model formats are handled
11
+ parsers:
12
+ # XML Metadata Interchange (XMI) Parser
13
+ - format: "xmi"
14
+ extension: ".xmi"
15
+ parser_class: "Lutaml::ModelTransformations::Parsers::XmiParser"
16
+ enabled: true
17
+ priority: 100
18
+ description: "XML Metadata Interchange parser for UML models"
19
+ options:
20
+ - "validate_xml"
21
+ - "resolve_references"
22
+ - "preserve_namespaces"
23
+ - "include_documentation"
24
+
25
+ # Enterprise Architect Database (QEA) Parser
26
+ - format: "qea"
27
+ extension: ".qea"
28
+ parser_class: "Lutaml::ModelTransformations::Parsers::QeaParser"
29
+ enabled: true
30
+ priority: 90
31
+ description: "Enterprise Architect database parser"
32
+ options:
33
+ - "include_diagrams"
34
+ - "validate_transformation"
35
+ - "load_progress_callback"
36
+ - "cache_database"
37
+
38
+ # Legacy XML support (lower priority than XMI)
39
+ - format: "xml"
40
+ extension: ".xml"
41
+ parser_class: "Lutaml::ModelTransformations::Parsers::XmiParser"
42
+ enabled: true
43
+ priority: 80
44
+ description: "Generic XML parser (delegates to XMI parser)"
45
+ options:
46
+ - "validate_xml"
47
+ - "resolve_references"
48
+
49
+ # Enterprise Architect Project files (legacy format)
50
+ - format: "eap"
51
+ extension: ".eap"
52
+ parser_class: "Lutaml::ModelTransformations::Parsers::QeaParser"
53
+ enabled: true
54
+ priority: 70
55
+ description: "Enterprise Architect project file parser"
56
+ options:
57
+ - "include_diagrams"
58
+ - "legacy_format_support"
59
+
60
+ # Enterprise Architect Exchange files
61
+ - format: "eapx"
62
+ extension: ".eapx"
63
+ parser_class: "Lutaml::ModelTransformations::Parsers::QeaParser"
64
+ enabled: true
65
+ priority: 75
66
+ description: "Enterprise Architect exchange file parser"
67
+ options:
68
+ - "include_diagrams"
69
+ - "compressed_format"
70
+
71
+ # Global transformation options
72
+ transformation_options:
73
+ # Validate output document structure after parsing
74
+ validate_output: false
75
+
76
+ # Include diagram information in transformed documents
77
+ include_diagrams: true
78
+
79
+ # Preserve original XMI/QEA IDs in transformed elements
80
+ preserve_ids: true
81
+
82
+ # Resolve cross-references between model elements
83
+ resolve_references: true
84
+
85
+ # Enable strict validation mode (fail on warnings)
86
+ strict_mode: false
87
+
88
+ # Format detection configuration
89
+ format_detection:
90
+ # Use file extensions for format detection
91
+ use_file_extension: true
92
+
93
+ # Use content analysis (magic bytes) for format detection
94
+ use_content_sniffing: true
95
+
96
+ # Fallback parser when format cannot be detected
97
+ fallback_parser: "Lutaml::ModelTransformations::Parsers::XmiParser"
98
+
99
+ # Magic byte signatures for content detection
100
+ magic_bytes:
101
+ - "SQLite format 3" # QEA/SQLite files
102
+ - "<?xml" # XML/XMI files
103
+
104
+ # Error handling configuration
105
+ error_handling:
106
+ # Error handling strategy: "continue", "fail_fast", "collect"
107
+ strategy: "continue"
108
+
109
+ # Log errors and warnings to console
110
+ log_errors: true
111
+
112
+ # Maximum number of errors before aborting (0 = unlimited)
113
+ max_errors: 10
114
+
115
+ # Fail immediately on first error
116
+ fail_fast: false
117
+
118
+ # Format-specific configurations
119
+ format_specific:
120
+ xmi:
121
+ # XMI-specific options
122
+ namespace_handling: "preserve"
123
+ reference_resolution: "eager"
124
+ xml_validation: "lenient"
125
+ encoding_detection: "auto"
126
+
127
+ qea:
128
+ # QEA-specific options
129
+ database_timeout: 30
130
+ load_strategy: "progressive"
131
+ diagram_processing: "full"
132
+ schema_validation: "basic"
133
+
134
+ # Performance tuning
135
+ performance:
136
+ # Enable parser instance caching
137
+ cache_parsers: true
138
+
139
+ # Maximum size for parser cache (number of instances)
140
+ max_parser_cache_size: 10
141
+
142
+ # Enable transformation history tracking
143
+ track_history: true
144
+
145
+ # Maximum number of history entries to keep
146
+ max_history_size: 1000
147
+
148
+ # Logging configuration
149
+ logging:
150
+ # Log level: "debug", "info", "warn", "error"
151
+ level: "info"
152
+
153
+ # Include timestamps in log messages
154
+ include_timestamps: true
155
+
156
+ # Include parser class names in log messages
157
+ include_parser_names: true
158
+
159
+ # Log transformation statistics
160
+ log_statistics: true
161
+
162
+ # Plugin/extension support
163
+ plugins:
164
+ # Enable plugin system
165
+ enabled: false
166
+
167
+ # Plugin discovery paths
168
+ discovery_paths:
169
+ - "lib/lutaml/model_transformations/plugins"
170
+ - "~/.lutaml/plugins"
171
+
172
+ # Auto-load plugins on startup
173
+ auto_load: false
174
+
175
+ # Validation rules
176
+ validation:
177
+ # Required elements validation
178
+ require_packages: false
179
+ require_classes: false
180
+
181
+ # Reference validation
182
+ check_broken_references: true
183
+ allow_external_references: true
184
+
185
+ # Naming validation
186
+ validate_naming_conventions: false
187
+ naming_patterns:
188
+ package: "^[A-Z][a-zA-Z0-9]*$"
189
+ class: "^[A-Z][a-zA-Z0-9]*$"
190
+ attribute: "^[a-z][a-zA-Z0-9]*$"
191
+
192
+ # Transformation presets for common scenarios
193
+ presets:
194
+ # Fast parsing preset (minimal validation, no diagrams)
195
+ fast:
196
+ transformation_options:
197
+ validate_output: false
198
+ include_diagrams: false
199
+ resolve_references: false
200
+ error_handling:
201
+ strategy: "fail_fast"
202
+ log_errors: false
203
+
204
+ # Comprehensive parsing preset (full validation and processing)
205
+ comprehensive:
206
+ transformation_options:
207
+ validate_output: true
208
+ include_diagrams: true
209
+ resolve_references: true
210
+ strict_mode: true
211
+ error_handling:
212
+ strategy: "collect"
213
+ log_errors: true
214
+ max_errors: 0
215
+
216
+ # Production preset (balanced performance and reliability)
217
+ production:
218
+ transformation_options:
219
+ validate_output: true
220
+ include_diagrams: true
221
+ resolve_references: true
222
+ strict_mode: false
223
+ error_handling:
224
+ strategy: "continue"
225
+ log_errors: true
226
+ max_errors: 5
227
+ performance:
228
+ cache_parsers: true
229
+ track_history: false
230
+
231
+ # Compatibility settings
232
+ compatibility:
233
+ # Support legacy LutaML API
234
+ legacy_api_support: true
235
+
236
+ # Automatic migration of old configuration formats
237
+ auto_migrate_config: true
238
+
239
+ # Deprecated feature warnings
240
+ warn_deprecated: true
241
+
242
+ # Development/debugging options
243
+ development:
244
+ # Enable debug mode
245
+ debug_mode: false
246
+
247
+ # Dump intermediate transformation results
248
+ dump_intermediate: false
249
+
250
+ # Benchmark transformation performance
251
+ benchmark_mode: false
252
+
253
+ # Verbose parser output
254
+ verbose_parsing: false
255
+
256
+ # Integration settings
257
+ integration:
258
+ # UML Repository integration
259
+ auto_build_repository: true
260
+ repository_lazy_loading: false
261
+
262
+ # CLI integration
263
+ register_cli_commands: true
264
+
265
+ # Web UI integration
266
+ enable_web_ui: false