Module: Ea::Transformers::QeaToXmi::GuidFormat
- Defined in:
- lib/ea/transformers/qea_to_xmi/guid_format.rb
Overview
Pure conversions between Sparx EA GUID strings and XMI identifier strings. No state, no I/O — same input always yields same output.
EA stores identifiers as {ABCD-1234-...} braced GUID strings. XMI
serializations use unbraced, dash→underscore forms prefixed with
EAID_ (most elements) or EAPK_ (packages at the model root).
Constant Summary collapse
- SEP =
Braces and dashes both become underscores; collapse runs of consecutive underscores so
{AB-CD}→AB_CD(not_AB_CD_). /[-{}]/
Class Method Summary collapse
-
.connector_end_xmi_id(connector_xmi_id, side:) ⇒ String
Build a member-end xmi:id for one side of a connector.
-
.ea_guid_to_xmi_id(ea_guid, prefix: "EAID") ⇒ String?
E.g.
-
.xmi_id_to_ea_guid(xmi_id) ⇒ String?
E.g.
Class Method Details
.connector_end_xmi_id(connector_xmi_id, side:) ⇒ String
Build a member-end xmi:id for one side of a connector.
Sparx EA's convention: take the connector's GUID, drop the first two
hex characters of its first segment, and prepend src or dst.
46 47 48 49 50 51 52 |
# File 'lib/ea/transformers/qea_to_xmi/guid_format.rb', line 46 def connector_end_xmi_id(connector_xmi_id, side:) tag = side == :source ? "src" : "dst" body = connector_xmi_id.sub(/\A(?:EAID|EAPK)_/, "") first_segment, rest = body.split("_", 2) trimmed = first_segment.length > 2 ? first_segment[2..] : first_segment rest ? "EAID_#{tag}#{trimmed}_#{rest}" : "EAID_#{tag}#{trimmed}" end |
.ea_guid_to_xmi_id(ea_guid, prefix: "EAID") ⇒ String?
Returns e.g. "EAID_AB_CD_EF".
22 23 24 25 26 27 |
# File 'lib/ea/transformers/qea_to_xmi/guid_format.rb', line 22 def ea_guid_to_xmi_id(ea_guid, prefix: "EAID") return nil if ea_guid.nil? || ea_guid.empty? clean = ea_guid.gsub(SEP, "_").gsub(/_+/, "_").gsub(/\A_/, "").gsub(/_\z/, "") "#{prefix}_#{clean}" end |
.xmi_id_to_ea_guid(xmi_id) ⇒ String?
Returns e.g. "AB-CD-EF".
31 32 33 34 35 36 |
# File 'lib/ea/transformers/qea_to_xmi/guid_format.rb', line 31 def xmi_id_to_ea_guid(xmi_id) return nil if xmi_id.nil? || xmi_id.empty? body = xmi_id.sub(/\A(?:EAID|EAPK)_/, "") "{#{body.tr('_', '-')}}" end |