lutaml 0.10.19 → 0.11.2
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.
- checksums.yaml +4 -4
- data/.github/workflows/release.yml +8 -1
- data/CLAUDE.md +26 -19
- data/Gemfile +14 -10
- data/Rakefile +6 -4
- data/lib/lutaml/version.rb +1 -1
- data/lib/lutaml.rb +3 -9
- data/lutaml.gemspec +2 -18
- metadata +5 -892
- data/Makefile +0 -2
- data/config/diagram_styles.yml +0 -200
- data/config/model_transformations.yml +0 -266
- data/config/package_metadata.example.yml +0 -58
- data/config/qea_schema.yml +0 -1024
- data/config/static_site.yml +0 -166
- data/examples/UML_EA.DTD +0 -6856
- data/examples/lur/20251010_current_plateau_v5.1.lur +0 -0
- data/examples/lur/basic.lur +0 -0
- data/examples/lur/test-output.lur +0 -0
- data/examples/lur/test.lur +0 -0
- data/examples/lur_basic_usage.rb +0 -220
- data/examples/lur_cli_workflow.rb +0 -262
- data/examples/lur_statistics.rb +0 -325
- data/examples/qea/20251010_current_plateau_v5.1.qea +0 -0
- data/examples/qea/ArcGISWorkspace_template.qea +0 -0
- data/examples/qea/README_qea_parser.adoc +0 -230
- data/examples/qea/UmlModel_template.qea +0 -0
- data/examples/qea/basic.qea +0 -0
- data/examples/qea/simple.qea +0 -0
- data/examples/qea/simple_example.qea +0 -0
- data/examples/qea/test.qea +0 -0
- data/examples/xmi/20251010_current_plateau_v5.1.xmi +0 -118121
- data/examples/xmi/ArcGISWorkspace_template.xmi +0 -1467
- data/examples/xmi/Images/EAID_0016F797_D055_4717_AF1A_606413D0A166.svg +0 -158
- data/examples/xmi/Images/EAID_00C5C772_5A03_434f_BF30_AC37542A1AAC.svg +0 -659
- data/examples/xmi/Images/EAID_0114FD24_9E58_4664_98CD_71305B59AD11.svg +0 -411
- data/examples/xmi/Images/EAID_01661E1B_31B6_4167_BCCF_A00678FB4EA2.svg +0 -102
- data/examples/xmi/Images/EAID_039FE004_5408_4fc0_89AA_EB319E4F61C7.svg +0 -169
- data/examples/xmi/Images/EAID_04EE9625_17A0_4721_BC71_21756DB21D06.svg +0 -403
- data/examples/xmi/Images/EAID_05FF9417_1619_4170_B0C9_55AA6B988EF1.svg +0 -175
- data/examples/xmi/Images/EAID_09853FB2_AF8A_432f_94C5_6C47461BD937.svg +0 -360
- data/examples/xmi/Images/EAID_09927B7F_A657_4819_99E5_AC9DC99227D9.svg +0 -195
- data/examples/xmi/Images/EAID_09AF6B8A_557C_43bc_BBB0_47C1E9401EF3.svg +0 -218
- data/examples/xmi/Images/EAID_0BE81AC5_031B_4973_A9A0_223CCD92BAA1.svg +0 -471
- data/examples/xmi/Images/EAID_0EDEA6EF_4DC8_4979_BB80_28B1B9EBD1D4.svg +0 -56
- data/examples/xmi/Images/EAID_0F413534_6AD2_48bc_B4AF_8699D530D91D.svg +0 -262
- data/examples/xmi/Images/EAID_1321F39B_AD67_47b5_B5C3_3A42BBFCBDF9.svg +0 -286
- data/examples/xmi/Images/EAID_13E09C71_99E7_40b4_B72D_48AF6379BC2E.svg +0 -164
- data/examples/xmi/Images/EAID_144955D8_CB4E_4b59_BB0C_E549F7F84943.svg +0 -66
- data/examples/xmi/Images/EAID_14E9F5FD_F6CD_4f48_B1CD_F5A40C6D8E83.svg +0 -95
- data/examples/xmi/Images/EAID_157826AA_96A7_4278_89A6_94BD0F31409A.svg +0 -63
- data/examples/xmi/Images/EAID_159E9DA0_7A54_4817_B72A_401C750F675D.svg +0 -306
- data/examples/xmi/Images/EAID_17BC8309_8051_492b_BE87_61CCFE83DB16.svg +0 -45
- data/examples/xmi/Images/EAID_1A10EB6D_E2E5_42a6_A31E_B293D93FD07E.svg +0 -193
- data/examples/xmi/Images/EAID_1A290AFD_CE96_46a2_8351_A986D77CC727.svg +0 -444
- data/examples/xmi/Images/EAID_1B2D9309_C66B_492a_995C_95B2B02E0D7C.svg +0 -168
- data/examples/xmi/Images/EAID_1DE6B973_CE8A_416f_909B_54CEA1E5944E.svg +0 -10
- data/examples/xmi/Images/EAID_204F4ACC_2230_4c8d_9861_EF5A6844B712.svg +0 -60
- data/examples/xmi/Images/EAID_227300E2_4F4B_4955_83B9_FA626CE8680B.svg +0 -188
- data/examples/xmi/Images/EAID_22C24D4C_4894_480a_B113_0CB034CB59E9.svg +0 -426
- data/examples/xmi/Images/EAID_234BC4F5_8100_4969_BDCB_A24E0E641F23.svg +0 -169
- data/examples/xmi/Images/EAID_24446BFC_9FEB_4935_8970_65A4C562A93F.svg +0 -277
- data/examples/xmi/Images/EAID_24E8A45C_C99F_49b7_860A_9CF65FF76C76.svg +0 -575
- data/examples/xmi/Images/EAID_272F3181_4300_48b7_98A0_A8CFD12B1A72.svg +0 -255
- data/examples/xmi/Images/EAID_292E0D94_392C_4da6_A0B5_841501FAE50A.svg +0 -183
- data/examples/xmi/Images/EAID_29DD0967_ADAB_4abb_99C5_544821F5E7DA.svg +0 -10
- data/examples/xmi/Images/EAID_2A339928_E5EF_4ed2_9E5D_CC2CA5CF248B.svg +0 -310
- data/examples/xmi/Images/EAID_2A5E0832_06BE_4381_85D4_9B00E4F95575.svg +0 -155
- data/examples/xmi/Images/EAID_2AAB709F_EFCE_496f_8AFE_92809D66A0A9.svg +0 -81
- data/examples/xmi/Images/EAID_2C8DD882_8DEA_4065_89F8_DDA796AA0C85.svg +0 -520
- data/examples/xmi/Images/EAID_2E98EA19_37D8_4b70_BDCE_CFEE4FA800B0.svg +0 -173
- data/examples/xmi/Images/EAID_30D62231_110F_44e8_9C06_6FCDCBA53A09.svg +0 -722
- data/examples/xmi/Images/EAID_3206D3FD_1FC4_41c7_8D00_36DB908E9319.svg +0 -181
- data/examples/xmi/Images/EAID_3452CC53_9ACB_44eb_9C9D_B90CF862F284.svg +0 -92
- data/examples/xmi/Images/EAID_348EE46E_ABD9_40b0_82A1_0285E75BDC52.svg +0 -187
- data/examples/xmi/Images/EAID_34FF671B_CFDC_47ad_91DF_ECA6D8358180.svg +0 -217
- data/examples/xmi/Images/EAID_359DD694_0100_4bdf_AD5F_712D97E9C69B.svg +0 -157
- data/examples/xmi/Images/EAID_35DE714C_49A8_490e_913A_56F39EF317F9.svg +0 -180
- data/examples/xmi/Images/EAID_360C79F1_8EDF_41db_A069_DECDC55625BC.svg +0 -31
- data/examples/xmi/Images/EAID_36913C58_FF35_4ba2_A04B_9A4824E24609.svg +0 -166
- data/examples/xmi/Images/EAID_372F7F7B_57ED_469a_A640_70DB578B3C56.svg +0 -361
- data/examples/xmi/Images/EAID_37AC19B9_8433_4fee_A326_763170D54D06.svg +0 -32
- data/examples/xmi/Images/EAID_38170608_32B5_4a6f_A68D_A0D7C0C9D019.svg +0 -234
- data/examples/xmi/Images/EAID_3A77A5D0_4E1B_4116_8AAD_407FC422B47F.svg +0 -183
- data/examples/xmi/Images/EAID_3B8BD087_1683_46b1_8D0D_6F839C46C578.svg +0 -42
- data/examples/xmi/Images/EAID_3DC20801_AE8B_4e76_B08C_F574E8A90E13.svg +0 -192
- data/examples/xmi/Images/EAID_3DE28C70_C6D4_406c_B49F_EEF52148C8C1.svg +0 -124
- data/examples/xmi/Images/EAID_458E093C_BA2B_4292_BEC4_37511C163DDC.svg +0 -140
- data/examples/xmi/Images/EAID_45F9B1F7_E568_47c9_B229_953BC2E707E4.svg +0 -266
- data/examples/xmi/Images/EAID_46B3041A_8C23_46e6_8E14_ADE7012274C5.svg +0 -80
- data/examples/xmi/Images/EAID_47E4600F_CEC9_4245_9BF5_EE38007A9DDB.svg +0 -584
- data/examples/xmi/Images/EAID_4881CEEE_792C_4cb0_BEA7_54333B643D0A.svg +0 -155
- data/examples/xmi/Images/EAID_48D364F0_DCA4_41e8_B4D4_509B3023B969.svg +0 -17
- data/examples/xmi/Images/EAID_4DBDAB9E_4C1C_4cb1_A767_06BD743A50A7.svg +0 -78
- data/examples/xmi/Images/EAID_4EB75007_B31D_4f2c_8855_7E9D3A3B17F4.svg +0 -454
- data/examples/xmi/Images/EAID_4F421236_FCF3_4aae_B22A_C7E6A5EFBAC7.svg +0 -81
- data/examples/xmi/Images/EAID_4FC1D352_2102_4b73_BCB0_1410B29C6BD7.svg +0 -379
- data/examples/xmi/Images/EAID_4FE346EA_01E1_4b30_8BE6_BB32EA191E47.svg +0 -126
- data/examples/xmi/Images/EAID_5038EEE3_7DD0_4cca_9829_364E044D37E8.svg +0 -199
- data/examples/xmi/Images/EAID_508A37DC_9378_4f5a_BD96_48F4D24E03A5.svg +0 -162
- data/examples/xmi/Images/EAID_516DA1A2_F0EC_415c_9664_E4CA54E7F05C.svg +0 -136
- data/examples/xmi/Images/EAID_52A1DBD3_D3DA_4b6d_8F96_FC6F39F64242.svg +0 -161
- data/examples/xmi/Images/EAID_575E87BA_32E9_4a84_AA4E_0EFDFC5D4C07.svg +0 -71
- data/examples/xmi/Images/EAID_57E0F1A0_6C72_47ef_B922_B806F9A875E8.svg +0 -209
- data/examples/xmi/Images/EAID_5957C373_3FC1_482f_8F35_D809153A17F5.svg +0 -123
- data/examples/xmi/Images/EAID_59A66AE2_412C_48a6_BFC7_EA56CF11D269.svg +0 -218
- data/examples/xmi/Images/EAID_5A43833E_680B_4a90_8931_0C902304E029.svg +0 -236
- data/examples/xmi/Images/EAID_5D6DB5A0_5047_4bac_9E60_69904A60B56D.svg +0 -353
- data/examples/xmi/Images/EAID_5DA1E7A7_8E59_4803_A831_E9F3EC27328F.svg +0 -242
- data/examples/xmi/Images/EAID_5E2C1E2A_82A8_47f4_B2ED_1398D72BFCFD.svg +0 -246
- data/examples/xmi/Images/EAID_6052620C_4BD5_49f6_A21C_AD7E6DCA2795.svg +0 -290
- data/examples/xmi/Images/EAID_6481E2CC_35A6_43b0_88D4_10A667A2BC2D.svg +0 -60
- data/examples/xmi/Images/EAID_660C7D03_A26C_4977_A7BA_9D0A773DA811.svg +0 -318
- data/examples/xmi/Images/EAID_671F3C3D_35B6_4514_B5B6_DD7E84925493.svg +0 -24
- data/examples/xmi/Images/EAID_676B9C9A_D85F_4d2f_A46B_73F02090DC87.svg +0 -127
- data/examples/xmi/Images/EAID_6797FEFA_5801_48e4_8B9C_3C824C0E165D.svg +0 -412
- data/examples/xmi/Images/EAID_6807F4EE_18EF_4e7e_ACCF_D5BD323AFDE9.svg +0 -130
- data/examples/xmi/Images/EAID_69E81E34_CF28_4c7f_A48F_5941BA85CEE3.svg +0 -96
- data/examples/xmi/Images/EAID_6A3C55E8_3C3C_4f3a_8AAC_0299C5B23070.svg +0 -10
- data/examples/xmi/Images/EAID_6BAC333E_E2C2_42c7_8DDF_6B4FA0FFC03B.svg +0 -143
- data/examples/xmi/Images/EAID_6D0349D5_3F1B_4b28_82D2_910743DEB5E5.svg +0 -114
- data/examples/xmi/Images/EAID_6E95B74E_8A09_4698_9E9E_23BCFD2CE194.svg +0 -37
- data/examples/xmi/Images/EAID_70C77F92_5614_4b22_8C8E_67859F59D8FD.svg +0 -254
- data/examples/xmi/Images/EAID_71F9216B_E7A7_4083_B08E_6C71B57F3A1F.svg +0 -187
- data/examples/xmi/Images/EAID_73025C5A_08FC_47ff_AB2F_C7F79CF54B41.svg +0 -145
- data/examples/xmi/Images/EAID_74C974B6_6D07_425d_B7AC_C8899E3B4967.svg +0 -76
- data/examples/xmi/Images/EAID_7504FCD2_524C_4e7d_BAE4_4E58A8A8A12C.svg +0 -196
- data/examples/xmi/Images/EAID_78030266_3603_4747_9D75_03D16614BE7D.svg +0 -35
- data/examples/xmi/Images/EAID_785226C1_12B1_4104_A4C1_F19B70B9FB71.svg +0 -348
- data/examples/xmi/Images/EAID_7854470F_26B8_4d3c_AFDF_C05BCE6ED0CD.svg +0 -72
- data/examples/xmi/Images/EAID_794F4A8F_18CA_4e9f_8477_A6F0E5ED22D4.svg +0 -187
- data/examples/xmi/Images/EAID_7A24839E_C8AE_424d_B7D2_6DA16DC813E7.svg +0 -114
- data/examples/xmi/Images/EAID_7A3649FD_E960_4ae6_B9B1_A9001C066AE7.svg +0 -181
- data/examples/xmi/Images/EAID_7B2C6765_AB68_439a_87F3_DAC323CB2AF5.svg +0 -196
- data/examples/xmi/Images/EAID_7C44AC09_27C1_47b3_9A85_88EC71C081FF.svg +0 -55
- data/examples/xmi/Images/EAID_7CE102CA_97C1_4cac_BD3B_0500D3712D2A.svg +0 -195
- data/examples/xmi/Images/EAID_7D960BD8_65D8_4934_9C11_4EF860DD8FBA.svg +0 -90
- data/examples/xmi/Images/EAID_80939C98_A456_48c3_BCEA_4B72851F2DF6.svg +0 -174
- data/examples/xmi/Images/EAID_812FE862_76ED_44f0_B678_7A4601B395CF.svg +0 -142
- data/examples/xmi/Images/EAID_81B76F5B_9D64_4bbf_8AC8_34234FB87533.svg +0 -740
- data/examples/xmi/Images/EAID_84352F1A_195B_411b_9552_5BFC40BF90B5.svg +0 -105
- data/examples/xmi/Images/EAID_846DD800_139C_4d47_A1DF_3FB1AC5D130F.svg +0 -554
- data/examples/xmi/Images/EAID_84A9C65B_FD6D_4bb5_818F_E8C35FF5BCD1.svg +0 -228
- data/examples/xmi/Images/EAID_853674F5_7DC9_4aae_809B_5728098B5D5B.svg +0 -154
- data/examples/xmi/Images/EAID_860CBBFB_2F27_408f_9144_751F9D1F487F.svg +0 -273
- data/examples/xmi/Images/EAID_87476527_7B9B_4b92_967E_3D38365470CA.svg +0 -239
- data/examples/xmi/Images/EAID_87DAE930_5069_4c58_AC65_4B0B2C0F32C8.svg +0 -10
- data/examples/xmi/Images/EAID_88AF6BD7_BC34_406f_BB59_47CFAB4A7D5D.svg +0 -116
- data/examples/xmi/Images/EAID_88D0CB44_20D0_44fc_A6E3_B663332EF401.svg +0 -200
- data/examples/xmi/Images/EAID_8BB1CA0C_C003_4678_973B_A1C3308E021D.svg +0 -136
- data/examples/xmi/Images/EAID_8DAB169F_D189_4320_A0F5_4443E3297F0E.svg +0 -181
- data/examples/xmi/Images/EAID_8FD488EF_BAAB_40ec_A7ED_F7CC831D546E.svg +0 -324
- data/examples/xmi/Images/EAID_90BCA409_BB45_42c5_AFA5_45FE3D995904.svg +0 -342
- data/examples/xmi/Images/EAID_926AFE38_01FA_469e_B6AA_ED5F4D62B66F.svg +0 -105
- data/examples/xmi/Images/EAID_92AB0FD0_B0FB_4ceb_8EAE_66B6600D31D7.svg +0 -681
- data/examples/xmi/Images/EAID_92C43670_3057_47f1_A576_C60843FF3D26.svg +0 -136
- data/examples/xmi/Images/EAID_93F63576_BE01_4cd8_8A91_C674FF77FC3D.svg +0 -718
- data/examples/xmi/Images/EAID_9400D9BC_05A5_41fc_83F7_02E5C67F9718.svg +0 -487
- data/examples/xmi/Images/EAID_95246DCF_1C09_4a16_9512_98000F56B3D8.svg +0 -292
- data/examples/xmi/Images/EAID_9994BF62_51E2_42cd_BB35_16C537B6718A.svg +0 -715
- data/examples/xmi/Images/EAID_9AAD6C21_B1E7_4472_B64A_FB5E3569D970.svg +0 -116
- data/examples/xmi/Images/EAID_9BD7189A_877B_4ca9_B42C_817DEF144FB2.svg +0 -284
- data/examples/xmi/Images/EAID_9DA6C553_94FC_4204_83AD_ECC4B45A53EF.svg +0 -159
- data/examples/xmi/Images/EAID_9EE6A41B_5FAA_4c89_B98F_732059778630.svg +0 -10
- data/examples/xmi/Images/EAID_9F1A4B54_46F6_435c_9529_E43E54CF6050.svg +0 -172
- data/examples/xmi/Images/EAID_9FE1EA7B_4CEF_4976_A281_93A94315BD84.svg +0 -153
- data/examples/xmi/Images/EAID_A0695647_6172_4262_8C30_67441399609C.svg +0 -290
- data/examples/xmi/Images/EAID_A081C63E_D6F2_41a7_A99C_307836754AFA.svg +0 -149
- data/examples/xmi/Images/EAID_A24E2778_5AD9_44f2_AB8F_5CD3913477D6.svg +0 -194
- data/examples/xmi/Images/EAID_A264F089_F9B3_406c_A3A8_FF34903797D3.svg +0 -143
- data/examples/xmi/Images/EAID_A282E5D1_2A13_4e7f_BC76_5D086DD4A577.svg +0 -357
- data/examples/xmi/Images/EAID_A3BCE1D6_9DB5_4272_A020_4C0E194B99CC.svg +0 -171
- data/examples/xmi/Images/EAID_A56E3818_D1B8_4b63_B69E_FBAC4A8AF482.svg +0 -218
- data/examples/xmi/Images/EAID_A57215D5_75C5_4532_BCF4_264A77CD62F1.svg +0 -204
- data/examples/xmi/Images/EAID_A59065AF_9669_486c_9582_9693177CFC7F.svg +0 -263
- data/examples/xmi/Images/EAID_A759374D_589A_488c_99EF_537ACB9B1FF9.svg +0 -398
- data/examples/xmi/Images/EAID_A7B25F46_F18A_4373_B16D_8C6AC0B868B0.svg +0 -174
- data/examples/xmi/Images/EAID_A9FE9E6F_A5F4_47e5_A6BA_26E22C7346B6.svg +0 -310
- data/examples/xmi/Images/EAID_AA62CDEB_55EC_498d_B326_4AA2C9AF6A05.svg +0 -144
- data/examples/xmi/Images/EAID_AAF52AF6_F7F9_4005_AE46_8920847BEA03.svg +0 -144
- data/examples/xmi/Images/EAID_AB281AC1_7CB8_404a_8124_34343DDD84E2.svg +0 -198
- data/examples/xmi/Images/EAID_AB7F1FDF_A66B_42a1_B8A3_7F594BAAD508.svg +0 -143
- data/examples/xmi/Images/EAID_AC2191E3_76E3_40b2_9E21_0E0B9B5277D2.svg +0 -114
- data/examples/xmi/Images/EAID_AD451676_A7C8_4c6a_A925_A9B9CA344142.svg +0 -339
- data/examples/xmi/Images/EAID_ADBA40A1_9375_4c1b_9938_0990612EB615.svg +0 -429
- data/examples/xmi/Images/EAID_ADC8773C_1B27_48ac_BAC1_14C1C919FAF6.svg +0 -245
- data/examples/xmi/Images/EAID_AE0718DF_AF69_4ea1_A099_E20028FE40A1.svg +0 -173
- data/examples/xmi/Images/EAID_B0DDB85D_A00C_4a7f_8C06_CCA15E5E4FE5.svg +0 -31
- data/examples/xmi/Images/EAID_B27ED282_D5E5_4f33_8AC1_62802F9E0B35.svg +0 -256
- data/examples/xmi/Images/EAID_B3AFECCB_17DD_44d6_8A44_2C38D9A64C0B.svg +0 -95
- data/examples/xmi/Images/EAID_B3B6C5B1_278E_4714_8244_B6C28B66AB50.svg +0 -176
- data/examples/xmi/Images/EAID_B53E76CD_A0F2_4e2f_B3AB_796D85964EF2.svg +0 -179
- data/examples/xmi/Images/EAID_B55D6E67_0BDD_4163_B359_11A6FBA89C74.svg +0 -207
- data/examples/xmi/Images/EAID_B58D1A53_E860_41a3_8352_11C274093E83.svg +0 -189
- data/examples/xmi/Images/EAID_B62C02B3_69DB_49e9_8089_4EE398BDE666.svg +0 -165
- data/examples/xmi/Images/EAID_BC008774_B539_4150_8174_B675989053D0.svg +0 -22
- data/examples/xmi/Images/EAID_BC1F7E00_082D_4a26_922B_3967A8D66859.svg +0 -266
- data/examples/xmi/Images/EAID_BDA613D8_402A_475a_AA15_683D88FD3D23.svg +0 -183
- data/examples/xmi/Images/EAID_C028B286_4C85_47d8_B6D5_80B28F556E82.svg +0 -303
- data/examples/xmi/Images/EAID_C173A6F4_1D1B_400e_AD8C_64FFF7CD5BE5.svg +0 -178
- data/examples/xmi/Images/EAID_C1834072_CADC_4ce4_B0FC_8284AE5CF4A4.svg +0 -158
- data/examples/xmi/Images/EAID_C1EC985B_5CBD_4e91_8661_EB4EF23781D9.svg +0 -286
- data/examples/xmi/Images/EAID_C31C1314_B679_4413_B8FE_A2CD584FC128.svg +0 -305
- data/examples/xmi/Images/EAID_C37CFBD6_69BA_42fb_9AC7_2D329D931BCF.svg +0 -171
- data/examples/xmi/Images/EAID_C857C934_306F_463a_87D5_257CB225ECFE.svg +0 -174
- data/examples/xmi/Images/EAID_C96797DE_2238_42d3_896A_9F92500270ED.svg +0 -180
- data/examples/xmi/Images/EAID_C96CBC24_B20E_459a_8F9D_75B61CDCB89F.svg +0 -656
- data/examples/xmi/Images/EAID_CACB523D_56A5_4f05_B3C2_51BB18F380FD.svg +0 -158
- data/examples/xmi/Images/EAID_CB34B578_101B_48b4_9271_214FFEA6A83A.svg +0 -409
- data/examples/xmi/Images/EAID_CBBD6CF4_0A1E_4406_9930_89DE43527910.svg +0 -361
- data/examples/xmi/Images/EAID_CC06A828_3750_472f_8DB2_C2E0863FCE17.svg +0 -96
- data/examples/xmi/Images/EAID_CD5CF053_1772_4a0f_962D_B17054D8EEAA.svg +0 -173
- data/examples/xmi/Images/EAID_CE440B5A_9534_4c75_9BA5_50862BB396C2.svg +0 -97
- data/examples/xmi/Images/EAID_CE4734FC_7986_4b3a_807F_A5B2C7EDE9E4.svg +0 -193
- data/examples/xmi/Images/EAID_D14AA320_9D41_4366_8739_9C2C21F96AE1.svg +0 -32
- data/examples/xmi/Images/EAID_D2FA55D3_C733_4a4d_92D0_0BC7AC0BB5BC.svg +0 -108
- data/examples/xmi/Images/EAID_D351FC34_FB03_488d_ADA4_BDB93DA9CB02.svg +0 -49
- data/examples/xmi/Images/EAID_D368FDF3_BDC5_4718_A701_351C8587A376.svg +0 -592
- data/examples/xmi/Images/EAID_D4DA8C48_3998_450d_87C4_9D65C9FECDB4.svg +0 -42
- data/examples/xmi/Images/EAID_D5464ECF_290E_4b2b_A6C4_25BE80F886CB.svg +0 -76
- data/examples/xmi/Images/EAID_D55235B0_61E9_461a_8379_2B8BF2403BE2.svg +0 -147
- data/examples/xmi/Images/EAID_D555ED73_F010_45d7_8A53_45A33C64C249.svg +0 -318
- data/examples/xmi/Images/EAID_D7AAC526_267E_45a0_A853_3207F02363F8.svg +0 -45
- data/examples/xmi/Images/EAID_D998B20D_A875_4ef8_A9CE_996BE56602BD.svg +0 -158
- data/examples/xmi/Images/EAID_DBFA8B39_F5B7_4c0e_9552_19AEAE5BA64E.svg +0 -200
- data/examples/xmi/Images/EAID_DE47A47D_E7BE_4e6f_BA81_F789EE8CFE72.svg +0 -61
- data/examples/xmi/Images/EAID_DFBB1072_8EC5_4384_8241_7EDF4B6B888B.svg +0 -78
- data/examples/xmi/Images/EAID_E325B9D8_E955_4aed_8125_63167BD40320.svg +0 -67
- data/examples/xmi/Images/EAID_E32D9D02_CAE9_4a47_92A8_3290EDCD6E6D.svg +0 -79
- data/examples/xmi/Images/EAID_E3B28611_7857_458a_B0BC_736E777B88EC.svg +0 -194
- data/examples/xmi/Images/EAID_E43C37EC_1176_4d2e_8B98_B6F3DFF6A092.svg +0 -96
- data/examples/xmi/Images/EAID_E591C1CF_7F35_4160_8A72_DFA097AD5811.svg +0 -271
- data/examples/xmi/Images/EAID_E77C66A2_2E94_4196_BFC6_662FE5AEEB6F.svg +0 -332
- data/examples/xmi/Images/EAID_E7AABA98_2450_4986_9736_DCCAF0108C50.svg +0 -639
- data/examples/xmi/Images/EAID_E7D9A2C4_72D6_40b9_8EB8_6B35476246B3.svg +0 -134
- data/examples/xmi/Images/EAID_E9CDAD85_ECF1_43de_819F_30A0D01785E6.svg +0 -193
- data/examples/xmi/Images/EAID_EC8AF507_F441_4e8a_B8A7_C1690F3C7D0B.svg +0 -58
- data/examples/xmi/Images/EAID_ED501058_D540_47ac_8EBC_5921E8C0BF57.svg +0 -384
- data/examples/xmi/Images/EAID_EFBF5F0F_DF74_4944_8791_114F5637C335.svg +0 -590
- data/examples/xmi/Images/EAID_EFFFA027_2A1F_425c_8437_BF89AADC8893.svg +0 -365
- data/examples/xmi/Images/EAID_F07E7718_B2C2_4a65_B5DD_477CB73E971E.svg +0 -165
- data/examples/xmi/Images/EAID_F0F20BDF_C729_47f7_B6FC_25ED2C4609CA.svg +0 -61
- data/examples/xmi/Images/EAID_F32E5AFE_8605_4c77_AE69_D0D0A6E380AC.svg +0 -76
- data/examples/xmi/Images/EAID_F3F00F45_CD37_46fd_B521_D1040EB2FB16.svg +0 -123
- data/examples/xmi/Images/EAID_F46E8F19_D8F1_4a3d_B87B_B0BAB4F50F50.svg +0 -202
- data/examples/xmi/Images/EAID_F48E5F6E_2411_4635_9315_3EAA4CFA29F7.svg +0 -351
- data/examples/xmi/Images/EAID_F4C23F9E_DD74_4fed_B75D_AD3C6448BA24.svg +0 -189
- data/examples/xmi/Images/EAID_F853B3C4_B145_4ef0_B261_C3CC0475B6D2.svg +0 -215
- data/examples/xmi/Images/EAID_F8BE68CA_1F8F_47e5_9454_01A2EB7D388A.svg +0 -124
- data/examples/xmi/Images/EAID_F92A6A28_612E_468e_9E39_D7AE7D24E24D.svg +0 -208
- data/examples/xmi/Images/EAID_F995FA49_B86E_4c94_BE5E_C928FB6B87D0.svg +0 -302
- data/examples/xmi/Images/EAID_FEAE013A_A4E4_4283_A491_1FEB8D0EBA28.svg +0 -524
- data/examples/xmi/Images/EAID_FEBE5726_3751_470b_9023_8C569202E97E.svg +0 -730
- data/examples/xmi/UML_EA.DTD +0 -6856
- data/examples/xmi/UmlModel_template.xmi +0 -23
- data/examples/xmi/basic.xmi +0 -9086
- data/examples/xmi/simple.xmi +0 -655
- data/examples/xmi/simple_example.xmi +0 -23
- data/examples/xmi/test.xmi +0 -1703
- data/exe/lutaml +0 -11
- data/exe/lutaml-sysml +0 -22
- data/exe/lutaml-wsd2uml +0 -63
- data/exe/lutaml-yaml2uml +0 -146
- data/frontend/dist/app.iife.js +0 -24
- data/frontend/dist/style.css +0 -1
- data/frontend/index.html +0 -26
- data/frontend/package-lock.json +0 -2805
- data/frontend/package.json +0 -26
- data/frontend/src/App.vue +0 -59
- data/frontend/src/app.ts +0 -8
- data/frontend/src/components/AppHeader.vue +0 -127
- data/frontend/src/components/AppSidebar.vue +0 -119
- data/frontend/src/components/ClassDetails.vue +0 -247
- data/frontend/src/components/DiagramView.vue +0 -79
- data/frontend/src/components/PackageDetails.vue +0 -92
- data/frontend/src/components/PackageTreeNode.vue +0 -64
- data/frontend/src/components/SearchResults.vue +0 -48
- data/frontend/src/components/WelcomeView.vue +0 -66
- data/frontend/src/shims-vue.d.ts +0 -5
- data/frontend/src/stores/dataStore.ts +0 -79
- data/frontend/src/stores/uiStore.ts +0 -167
- data/frontend/src/styles/main.css +0 -1566
- data/frontend/src/types.ts +0 -221
- data/frontend/tests/e2e/__screenshots__/new-dark-mode.png +0 -0
- data/frontend/tests/e2e/__screenshots__/new-package-details.png +0 -0
- data/frontend/tests/e2e/__screenshots__/new-search-modal.png +0 -0
- data/frontend/tests/e2e/__screenshots__/new-sidebar-collapsed.png +0 -0
- data/frontend/tests/e2e/__screenshots__/new-welcome.png +0 -0
- data/frontend/tests/e2e/render.spec.ts +0 -188
- data/frontend/tsconfig.json +0 -20
- data/frontend/vite.config.ts +0 -26
- data/frontend/vitest.config.ts +0 -8
- data/lib/lutaml/cli/element_identifier.rb +0 -160
- data/lib/lutaml/cli/enhanced_formatter.rb +0 -494
- data/lib/lutaml/cli/interactive_shell/bookmark_commands.rb +0 -85
- data/lib/lutaml/cli/interactive_shell/command_base.rb +0 -32
- data/lib/lutaml/cli/interactive_shell/export_handler.rb +0 -73
- data/lib/lutaml/cli/interactive_shell/help_display.rb +0 -107
- data/lib/lutaml/cli/interactive_shell/navigation_commands.rb +0 -151
- data/lib/lutaml/cli/interactive_shell/query_commands.rb +0 -208
- data/lib/lutaml/cli/interactive_shell.rb +0 -254
- data/lib/lutaml/cli/lml_commands.rb +0 -205
- data/lib/lutaml/cli/output_formatter.rb +0 -348
- data/lib/lutaml/cli/resource_registry.rb +0 -127
- data/lib/lutaml/cli/tree_view_formatter.rb +0 -312
- data/lib/lutaml/cli/uml/build_command.rb +0 -487
- data/lib/lutaml/cli/uml/diagram_command.rb +0 -415
- data/lib/lutaml/cli/uml/export_command.rb +0 -77
- data/lib/lutaml/cli/uml/find_command.rb +0 -119
- data/lib/lutaml/cli/uml/info_command.rb +0 -103
- data/lib/lutaml/cli/uml/inspect_command.rb +0 -85
- data/lib/lutaml/cli/uml/ls_command.rb +0 -102
- data/lib/lutaml/cli/uml/repl_command.rb +0 -49
- data/lib/lutaml/cli/uml/search_command.rb +0 -85
- data/lib/lutaml/cli/uml/serve_command.rb +0 -58
- data/lib/lutaml/cli/uml/shared_helpers.rb +0 -49
- data/lib/lutaml/cli/uml/spa_command.rb +0 -223
- data/lib/lutaml/cli/uml/stats_command.rb +0 -57
- data/lib/lutaml/cli/uml/tree_command.rb +0 -82
- data/lib/lutaml/cli/uml/validate_command.rb +0 -190
- data/lib/lutaml/cli/uml/verify_command.rb +0 -103
- data/lib/lutaml/cli/uml.rb +0 -24
- data/lib/lutaml/cli/uml_commands.rb +0 -145
- data/lib/lutaml/cli.rb +0 -84
- data/lib/lutaml/converter/dsl_to_uml.rb +0 -237
- data/lib/lutaml/converter/xmi_to_uml.rb +0 -329
- data/lib/lutaml/converter/xmi_to_uml_generalization.rb +0 -193
- data/lib/lutaml/converter.rb +0 -10
- data/lib/lutaml/ea/diagram/configuration.rb +0 -379
- data/lib/lutaml/ea/diagram/element_renderers/base_renderer.rb +0 -81
- data/lib/lutaml/ea/diagram/element_renderers/class_renderer.rb +0 -328
- data/lib/lutaml/ea/diagram/element_renderers/connector_renderer.rb +0 -53
- data/lib/lutaml/ea/diagram/element_renderers/package_renderer.rb +0 -67
- data/lib/lutaml/ea/diagram/element_renderers.rb +0 -18
- data/lib/lutaml/ea/diagram/extractor.rb +0 -550
- data/lib/lutaml/ea/diagram/layout_engine.rb +0 -249
- data/lib/lutaml/ea/diagram/path_builder.rb +0 -256
- data/lib/lutaml/ea/diagram/style_parser.rb +0 -315
- data/lib/lutaml/ea/diagram/style_resolver.rb +0 -281
- data/lib/lutaml/ea/diagram/svg_renderer.rb +0 -279
- data/lib/lutaml/ea/diagram/util.rb +0 -69
- data/lib/lutaml/ea/diagram.rb +0 -62
- data/lib/lutaml/ea.rb +0 -7
- data/lib/lutaml/formatter/base.rb +0 -63
- data/lib/lutaml/formatter/graphviz.rb +0 -374
- data/lib/lutaml/formatter.rb +0 -20
- data/lib/lutaml/layout/engine.rb +0 -17
- data/lib/lutaml/layout/graph_viz_engine.rb +0 -19
- data/lib/lutaml/layout.rb +0 -8
- data/lib/lutaml/model_transformations/configuration.rb +0 -333
- data/lib/lutaml/model_transformations/format_registry.rb +0 -392
- data/lib/lutaml/model_transformations/parsers/base_parser.rb +0 -464
- data/lib/lutaml/model_transformations/parsers/qea_parser.rb +0 -450
- data/lib/lutaml/model_transformations/parsers/xmi_parser.rb +0 -289
- data/lib/lutaml/model_transformations/transformation_engine.rb +0 -405
- data/lib/lutaml/model_transformations.rb +0 -143
- data/lib/lutaml/qea/benchmark.rb +0 -210
- data/lib/lutaml/qea/database.rb +0 -270
- data/lib/lutaml/qea/factory/association_builder.rb +0 -203
- data/lib/lutaml/qea/factory/association_transformer.rb +0 -107
- data/lib/lutaml/qea/factory/attribute_tag_transformer.rb +0 -57
- data/lib/lutaml/qea/factory/attribute_transformer.rb +0 -93
- data/lib/lutaml/qea/factory/base_transformer.rb +0 -127
- data/lib/lutaml/qea/factory/class_transformer.rb +0 -164
- data/lib/lutaml/qea/factory/constraint_transformer.rb +0 -75
- data/lib/lutaml/qea/factory/data_type_transformer.rb +0 -133
- data/lib/lutaml/qea/factory/diagram_transformer.rb +0 -157
- data/lib/lutaml/qea/factory/document_builder.rb +0 -273
- data/lib/lutaml/qea/factory/ea_to_uml_factory.rb +0 -243
- data/lib/lutaml/qea/factory/enum_transformer.rb +0 -88
- data/lib/lutaml/qea/factory/generalization_builder.rb +0 -236
- data/lib/lutaml/qea/factory/generalization_transformer.rb +0 -98
- data/lib/lutaml/qea/factory/instance_transformer.rb +0 -84
- data/lib/lutaml/qea/factory/object_property_transformer.rb +0 -58
- data/lib/lutaml/qea/factory/operation_transformer.rb +0 -66
- data/lib/lutaml/qea/factory/package_transformer.rb +0 -208
- data/lib/lutaml/qea/factory/reference_resolver.rb +0 -99
- data/lib/lutaml/qea/factory/stereotype_loader.rb +0 -40
- data/lib/lutaml/qea/factory/tagged_value_transformer.rb +0 -38
- data/lib/lutaml/qea/factory/transformer_registry.rb +0 -77
- data/lib/lutaml/qea/factory.rb +0 -37
- data/lib/lutaml/qea/file_detector.rb +0 -178
- data/lib/lutaml/qea/infrastructure/database_connection.rb +0 -100
- data/lib/lutaml/qea/infrastructure/schema_reader.rb +0 -136
- data/lib/lutaml/qea/infrastructure/table_reader.rb +0 -224
- data/lib/lutaml/qea/infrastructure.rb +0 -12
- data/lib/lutaml/qea/models/base_model.rb +0 -48
- data/lib/lutaml/qea/models/ea_attribute.rb +0 -133
- data/lib/lutaml/qea/models/ea_attribute_tag.rb +0 -107
- data/lib/lutaml/qea/models/ea_complexity_type.rb +0 -79
- data/lib/lutaml/qea/models/ea_connector.rb +0 -160
- data/lib/lutaml/qea/models/ea_connector_type.rb +0 -60
- data/lib/lutaml/qea/models/ea_constraint_type.rb +0 -63
- data/lib/lutaml/qea/models/ea_datatype.rb +0 -104
- data/lib/lutaml/qea/models/ea_diagram.rb +0 -115
- data/lib/lutaml/qea/models/ea_diagram_link.rb +0 -78
- data/lib/lutaml/qea/models/ea_diagram_object.rb +0 -84
- data/lib/lutaml/qea/models/ea_diagram_type.rb +0 -56
- data/lib/lutaml/qea/models/ea_document.rb +0 -66
- data/lib/lutaml/qea/models/ea_object.rb +0 -206
- data/lib/lutaml/qea/models/ea_object_constraint.rb +0 -60
- data/lib/lutaml/qea/models/ea_object_property.rb +0 -94
- data/lib/lutaml/qea/models/ea_object_type.rb +0 -73
- data/lib/lutaml/qea/models/ea_operation.rb +0 -151
- data/lib/lutaml/qea/models/ea_operation_param.rb +0 -71
- data/lib/lutaml/qea/models/ea_package.rb +0 -73
- data/lib/lutaml/qea/models/ea_script.rb +0 -67
- data/lib/lutaml/qea/models/ea_status_type.rb +0 -66
- data/lib/lutaml/qea/models/ea_stereotype.rb +0 -57
- data/lib/lutaml/qea/models/ea_tagged_value.rb +0 -103
- data/lib/lutaml/qea/models/ea_xref.rb +0 -172
- data/lib/lutaml/qea/models.rb +0 -35
- data/lib/lutaml/qea/parser.rb +0 -57
- data/lib/lutaml/qea/repositories/base_repository.rb +0 -215
- data/lib/lutaml/qea/repositories/object_repository.rb +0 -219
- data/lib/lutaml/qea/repositories.rb +0 -10
- data/lib/lutaml/qea/services/configuration.rb +0 -211
- data/lib/lutaml/qea/services/database_loader.rb +0 -186
- data/lib/lutaml/qea/services.rb +0 -10
- data/lib/lutaml/qea/validation/association_validator.rb +0 -73
- data/lib/lutaml/qea/validation/attribute_validator.rb +0 -101
- data/lib/lutaml/qea/validation/base_validator.rb +0 -312
- data/lib/lutaml/qea/validation/class_validator.rb +0 -121
- data/lib/lutaml/qea/validation/database/circular_reference_validator.rb +0 -109
- data/lib/lutaml/qea/validation/database/orphan_validator.rb +0 -153
- data/lib/lutaml/qea/validation/database/referential_integrity_validator.rb +0 -128
- data/lib/lutaml/qea/validation/database.rb +0 -16
- data/lib/lutaml/qea/validation/diagram_validator.rb +0 -112
- data/lib/lutaml/qea/validation/formatters/json_formatter.rb +0 -137
- data/lib/lutaml/qea/validation/formatters/text_formatter.rb +0 -235
- data/lib/lutaml/qea/validation/operation_validator.rb +0 -79
- data/lib/lutaml/qea/validation/package_validator.rb +0 -111
- data/lib/lutaml/qea/validation/validation_engine.rb +0 -477
- data/lib/lutaml/qea/validation/validation_message.rb +0 -144
- data/lib/lutaml/qea/validation/validation_result.rb +0 -210
- data/lib/lutaml/qea/validation/validator_registry.rb +0 -134
- data/lib/lutaml/qea/validation.rb +0 -27
- data/lib/lutaml/qea/verification/comparison_result.rb +0 -264
- data/lib/lutaml/qea/verification/document_normalizer.rb +0 -169
- data/lib/lutaml/qea/verification/document_verifier.rb +0 -323
- data/lib/lutaml/qea/verification/element_comparator.rb +0 -277
- data/lib/lutaml/qea/verification/structure_matcher.rb +0 -287
- data/lib/lutaml/qea/verification.rb +0 -14
- data/lib/lutaml/qea.rb +0 -227
- data/lib/lutaml/uml/abstraction.rb +0 -12
- data/lib/lutaml/uml/action.rb +0 -17
- data/lib/lutaml/uml/activity.rb +0 -12
- data/lib/lutaml/uml/actor.rb +0 -12
- data/lib/lutaml/uml/association.rb +0 -37
- data/lib/lutaml/uml/association_generalization.rb +0 -20
- data/lib/lutaml/uml/behavior.rb +0 -12
- data/lib/lutaml/uml/cardinality.rb +0 -12
- data/lib/lutaml/uml/class.rb +0 -52
- data/lib/lutaml/uml/classifier.rb +0 -19
- data/lib/lutaml/uml/comment.rb +0 -15
- data/lib/lutaml/uml/connector.rb +0 -20
- data/lib/lutaml/uml/connector_end.rb +0 -22
- data/lib/lutaml/uml/constraint.rb +0 -24
- data/lib/lutaml/uml/data_type.rb +0 -56
- data/lib/lutaml/uml/dependency.rb +0 -20
- data/lib/lutaml/uml/diagram.rb +0 -25
- data/lib/lutaml/uml/diagram_link.rb +0 -28
- data/lib/lutaml/uml/diagram_object.rb +0 -32
- data/lib/lutaml/uml/document.rb +0 -64
- data/lib/lutaml/uml/enum.rb +0 -21
- data/lib/lutaml/uml/event.rb +0 -12
- data/lib/lutaml/uml/fidelity.rb +0 -12
- data/lib/lutaml/uml/final_state.rb +0 -12
- data/lib/lutaml/uml/fontname.rb +0 -15
- data/lib/lutaml/uml/general_attribute.rb +0 -24
- data/lib/lutaml/uml/generalization.rb +0 -37
- data/lib/lutaml/uml/group.rb +0 -21
- data/lib/lutaml/uml/has_attributes.rb +0 -14
- data/lib/lutaml/uml/has_members.rb +0 -30
- data/lib/lutaml/uml/inheritance_walker.rb +0 -96
- data/lib/lutaml/uml/instance.rb +0 -17
- data/lib/lutaml/uml/model.rb +0 -15
- data/lib/lutaml/uml/model_helpers.rb +0 -104
- data/lib/lutaml/uml/namespace.rb +0 -12
- data/lib/lutaml/uml/node/attribute.rb +0 -30
- data/lib/lutaml/uml/node/base.rb +0 -19
- data/lib/lutaml/uml/node/class_node.rb +0 -48
- data/lib/lutaml/uml/node/class_relationship.rb +0 -11
- data/lib/lutaml/uml/node/document.rb +0 -15
- data/lib/lutaml/uml/node/has_name.rb +0 -15
- data/lib/lutaml/uml/node/has_type.rb +0 -15
- data/lib/lutaml/uml/node/method_argument.rb +0 -12
- data/lib/lutaml/uml/node/operation.rb +0 -23
- data/lib/lutaml/uml/node/relationship.rb +0 -22
- data/lib/lutaml/uml/opaque_behavior.rb +0 -12
- data/lib/lutaml/uml/operation.rb +0 -23
- data/lib/lutaml/uml/operation_parameter.rb +0 -19
- data/lib/lutaml/uml/package.rb +0 -33
- data/lib/lutaml/uml/package_path.rb +0 -235
- data/lib/lutaml/uml/parsers/attribute.rb +0 -68
- data/lib/lutaml/uml/parsers/dsl.rb +0 -415
- data/lib/lutaml/uml/parsers/dsl_preprocessor.rb +0 -63
- data/lib/lutaml/uml/parsers/dsl_transform.rb +0 -27
- data/lib/lutaml/uml/parsers/yaml.rb +0 -22
- data/lib/lutaml/uml/port.rb +0 -9
- data/lib/lutaml/uml/primitive_type.rb +0 -15
- data/lib/lutaml/uml/property.rb +0 -27
- data/lib/lutaml/uml/pseudostate.rb +0 -12
- data/lib/lutaml/uml/qualified_name.rb +0 -175
- data/lib/lutaml/uml/realization.rb +0 -12
- data/lib/lutaml/uml/region.rb +0 -12
- data/lib/lutaml/uml/state.rb +0 -22
- data/lib/lutaml/uml/state_machine.rb +0 -12
- data/lib/lutaml/uml/tagged_value.rb +0 -23
- data/lib/lutaml/uml/top_element.rb +0 -85
- data/lib/lutaml/uml/top_element_attribute.rb +0 -64
- data/lib/lutaml/uml/transition.rb +0 -24
- data/lib/lutaml/uml/trigger.rb +0 -18
- data/lib/lutaml/uml/validation/document_structure_validator.rb +0 -387
- data/lib/lutaml/uml/value.rb +0 -37
- data/lib/lutaml/uml/vertex.rb +0 -12
- data/lib/lutaml/uml.rb +0 -113
- data/lib/lutaml/uml_repository/class_lookup_index.rb +0 -39
- data/lib/lutaml/uml_repository/error_handler.rb +0 -203
- data/lib/lutaml/uml_repository/exporters/base_exporter.rb +0 -61
- data/lib/lutaml/uml_repository/exporters/json_exporter.rb +0 -343
- data/lib/lutaml/uml_repository/exporters/markdown/class_page_builder.rb +0 -187
- data/lib/lutaml/uml_repository/exporters/markdown/formatting.rb +0 -34
- data/lib/lutaml/uml_repository/exporters/markdown/index_page_builder.rb +0 -81
- data/lib/lutaml/uml_repository/exporters/markdown/link_resolver.rb +0 -40
- data/lib/lutaml/uml_repository/exporters/markdown/package_page_builder.rb +0 -107
- data/lib/lutaml/uml_repository/exporters/markdown.rb +0 -20
- data/lib/lutaml/uml_repository/exporters/markdown_exporter.rb +0 -86
- data/lib/lutaml/uml_repository/index_builder.rb +0 -210
- data/lib/lutaml/uml_repository/index_builders/association_index.rb +0 -155
- data/lib/lutaml/uml_repository/index_builders/class_index.rb +0 -113
- data/lib/lutaml/uml_repository/index_builders/package_index.rb +0 -62
- data/lib/lutaml/uml_repository/index_builders.rb +0 -13
- data/lib/lutaml/uml_repository/lazy_repository.rb +0 -236
- data/lib/lutaml/uml_repository/package_exporter.rb +0 -334
- data/lib/lutaml/uml_repository/package_loader.rb +0 -240
- data/lib/lutaml/uml_repository/package_metadata.rb +0 -77
- data/lib/lutaml/uml_repository/presenters/association_presenter.rb +0 -79
- data/lib/lutaml/uml_repository/presenters/attribute_presenter.rb +0 -94
- data/lib/lutaml/uml_repository/presenters/class_presenter.rb +0 -72
- data/lib/lutaml/uml_repository/presenters/datatype_presenter.rb +0 -97
- data/lib/lutaml/uml_repository/presenters/diagram_presenter.rb +0 -469
- data/lib/lutaml/uml_repository/presenters/element_presenter.rb +0 -91
- data/lib/lutaml/uml_repository/presenters/enum_presenter.rb +0 -78
- data/lib/lutaml/uml_repository/presenters/package_presenter.rb +0 -48
- data/lib/lutaml/uml_repository/presenters/presenter_factory.rb +0 -74
- data/lib/lutaml/uml_repository/queries/association_query.rb +0 -184
- data/lib/lutaml/uml_repository/queries/base_query.rb +0 -45
- data/lib/lutaml/uml_repository/queries/class_query.rb +0 -178
- data/lib/lutaml/uml_repository/queries/diagram_query.rb +0 -108
- data/lib/lutaml/uml_repository/queries/inheritance_query.rb +0 -327
- data/lib/lutaml/uml_repository/queries/package_query.rb +0 -230
- data/lib/lutaml/uml_repository/queries/search_query.rb +0 -236
- data/lib/lutaml/uml_repository/query_dsl/conditions/base_condition.rb +0 -28
- data/lib/lutaml/uml_repository/query_dsl/conditions/block_condition.rb +0 -44
- data/lib/lutaml/uml_repository/query_dsl/conditions/hash_condition.rb +0 -82
- data/lib/lutaml/uml_repository/query_dsl/conditions/package_condition.rb +0 -89
- data/lib/lutaml/uml_repository/query_dsl/order.rb +0 -90
- data/lib/lutaml/uml_repository/query_dsl/query_builder.rb +0 -290
- data/lib/lutaml/uml_repository/repository/deprecated.rb +0 -39
- data/lib/lutaml/uml_repository/repository/loader.rb +0 -117
- data/lib/lutaml/uml_repository/repository.rb +0 -718
- data/lib/lutaml/uml_repository/repository_enhanced.rb +0 -431
- data/lib/lutaml/uml_repository/search_result.rb +0 -86
- data/lib/lutaml/uml_repository/static_site/configuration.rb +0 -377
- data/lib/lutaml/uml_repository/static_site/data_transformer.rb +0 -135
- data/lib/lutaml/uml_repository/static_site/generator.rb +0 -120
- data/lib/lutaml/uml_repository/static_site/id_generator.rb +0 -120
- data/lib/lutaml/uml_repository/static_site/models/spa_association.rb +0 -29
- data/lib/lutaml/uml_repository/static_site/models/spa_association_end.rb +0 -25
- data/lib/lutaml/uml_repository/static_site/models/spa_attribute.rb +0 -58
- data/lib/lutaml/uml_repository/static_site/models/spa_base.rb +0 -12
- data/lib/lutaml/uml_repository/static_site/models/spa_cardinality.rb +0 -28
- data/lib/lutaml/uml_repository/static_site/models/spa_class.rb +0 -60
- data/lib/lutaml/uml_repository/static_site/models/spa_diagram.rb +0 -31
- data/lib/lutaml/uml_repository/static_site/models/spa_document.rb +0 -31
- data/lib/lutaml/uml_repository/static_site/models/spa_inherited_association.rb +0 -25
- data/lib/lutaml/uml_repository/static_site/models/spa_inherited_attribute.rb +0 -25
- data/lib/lutaml/uml_repository/static_site/models/spa_literal.rb +0 -19
- data/lib/lutaml/uml_repository/static_site/models/spa_metadata.rb +0 -39
- data/lib/lutaml/uml_repository/static_site/models/spa_operation.rb +0 -34
- data/lib/lutaml/uml_repository/static_site/models/spa_package.rb +0 -37
- data/lib/lutaml/uml_repository/static_site/models/spa_package_tree_node.rb +0 -32
- data/lib/lutaml/uml_repository/static_site/models/spa_parameter.rb +0 -21
- data/lib/lutaml/uml_repository/static_site/models/spa_search_entry.rb +0 -34
- data/lib/lutaml/uml_repository/static_site/models/spa_search_index.rb +0 -29
- data/lib/lutaml/uml_repository/static_site/models/spa_statistics.rb +0 -25
- data/lib/lutaml/uml_repository/static_site/models/spa_tree_class_ref.rb +0 -22
- data/lib/lutaml/uml_repository/static_site/models.rb +0 -48
- data/lib/lutaml/uml_repository/static_site/output/multi_file_strategy.rb +0 -69
- data/lib/lutaml/uml_repository/static_site/output/strategy.rb +0 -36
- data/lib/lutaml/uml_repository/static_site/output/vue_inlined_strategy.rb +0 -113
- data/lib/lutaml/uml_repository/static_site/output.rb +0 -15
- data/lib/lutaml/uml_repository/static_site/search_index_builder.rb +0 -216
- data/lib/lutaml/uml_repository/static_site/serializers/association_serializer.rb +0 -70
- data/lib/lutaml/uml_repository/static_site/serializers/attribute_serializer.rb +0 -24
- data/lib/lutaml/uml_repository/static_site/serializers/base.rb +0 -66
- data/lib/lutaml/uml_repository/static_site/serializers/class_serializer.rb +0 -97
- data/lib/lutaml/uml_repository/static_site/serializers/diagram_serializer.rb +0 -59
- data/lib/lutaml/uml_repository/static_site/serializers/inheritance_resolver.rb +0 -151
- data/lib/lutaml/uml_repository/static_site/serializers/metadata_builder.rb +0 -102
- data/lib/lutaml/uml_repository/static_site/serializers/operation_serializer.rb +0 -52
- data/lib/lutaml/uml_repository/static_site/serializers/package_serializer.rb +0 -55
- data/lib/lutaml/uml_repository/static_site/serializers/package_tree_builder.rb +0 -77
- data/lib/lutaml/uml_repository/static_site/serializers.rb +0 -30
- data/lib/lutaml/uml_repository/static_site.rb +0 -92
- data/lib/lutaml/uml_repository/statistics_calculator.rb +0 -342
- data/lib/lutaml/uml_repository/validators/repository_validator.rb +0 -402
- data/lib/lutaml/uml_repository/web_ui/app.rb +0 -161
- data/lib/lutaml/uml_repository/web_ui/public/app.js +0 -452
- data/lib/lutaml/uml_repository/web_ui/public/styles.css +0 -381
- data/lib/lutaml/uml_repository/web_ui/views/index.erb +0 -40
- data/lib/lutaml/uml_repository.rb +0 -117
- data/lib/lutaml/xmi/liquid_drops/association_drop.rb +0 -56
- data/lib/lutaml/xmi/liquid_drops/attribute_drop.rb +0 -72
- data/lib/lutaml/xmi/liquid_drops/cardinality_drop.rb +0 -35
- data/lib/lutaml/xmi/liquid_drops/connector_drop.rb +0 -54
- data/lib/lutaml/xmi/liquid_drops/constraint_drop.rb +0 -29
- data/lib/lutaml/xmi/liquid_drops/data_type_drop.rb +0 -63
- data/lib/lutaml/xmi/liquid_drops/dependency_drop.rb +0 -36
- data/lib/lutaml/xmi/liquid_drops/diagram_drop.rb +0 -34
- data/lib/lutaml/xmi/liquid_drops/enum_drop.rb +0 -49
- data/lib/lutaml/xmi/liquid_drops/enum_owned_literal_drop.rb +0 -25
- data/lib/lutaml/xmi/liquid_drops/generalization_attribute_drop.rb +0 -87
- data/lib/lutaml/xmi/liquid_drops/generalization_drop.rb +0 -127
- data/lib/lutaml/xmi/liquid_drops/klass_drop.rb +0 -191
- data/lib/lutaml/xmi/liquid_drops/operation_drop.rb +0 -29
- data/lib/lutaml/xmi/liquid_drops/package_drop.rb +0 -108
- data/lib/lutaml/xmi/liquid_drops/root_drop.rb +0 -34
- data/lib/lutaml/xmi/liquid_drops/source_target_drop.rb +0 -43
- data/lib/lutaml/xmi/parsers/xmi_base.rb +0 -301
- data/lib/lutaml/xmi/parsers/xmi_class_members.rb +0 -45
- data/lib/lutaml/xmi/parsers/xmi_connector.rb +0 -263
- data/lib/lutaml/xmi/parsers/xml.rb +0 -62
- data/lib/lutaml/xmi/xmi_lookup_service.rb +0 -40
- data/lib/lutaml/xmi.rb +0 -47
- data/templates/static_site/assets/images/lutaml-full.svg +0 -1
- data/templates/static_site/assets/images/lutaml-icon.svg +0 -1
- data/templates/static_site/assets/scripts/app.js +0 -45
- data/templates/static_site/assets/scripts/core/state.js +0 -446
- data/templates/static_site/assets/scripts/core/utils.js +0 -133
- data/templates/static_site/assets/scripts/ui/details.js +0 -74
- data/templates/static_site/assets/scripts/ui/diagrams.js +0 -345
- data/templates/static_site/assets/scripts/ui/search.js +0 -187
- data/templates/static_site/assets/scripts/ui/sidebar.js +0 -123
- data/templates/static_site/assets/styles/00-variables.css +0 -144
- data/templates/static_site/assets/styles/01-reset.css +0 -69
- data/templates/static_site/assets/styles/02-base.css +0 -144
- data/templates/static_site/assets/styles/03-layout.css +0 -121
- data/templates/static_site/assets/styles/04-components.css +0 -905
- data/templates/static_site/assets/styles/05-utilities.css +0 -23
- data/templates/static_site/assets/styles/06-diagrams.css +0 -74
- data/templates/static_site/components/class_details.liquid +0 -328
- data/templates/static_site/components/content.liquid +0 -481
- data/templates/static_site/components/diagram_list.liquid +0 -52
- data/templates/static_site/components/diagram_viewer.liquid +0 -71
- data/templates/static_site/components/header.liquid +0 -114
- data/templates/static_site/components/package_details.liquid +0 -119
- data/templates/static_site/components/sidebar.liquid +0 -76
- data/templates/static_site/components/tree_node.liquid +0 -81
- data/templates/static_site/multi_file.liquid +0 -49
- data/templates/static_site/single_file.liquid +0 -57
|
@@ -1,469 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Lutaml
|
|
4
|
-
module UmlRepository
|
|
5
|
-
module Presenters
|
|
6
|
-
# Presenter for UML Diagram elements
|
|
7
|
-
#
|
|
8
|
-
# Coordinates the entire diagram rendering pipeline by:
|
|
9
|
-
# 1. Loading elements and connectors from the repository
|
|
10
|
-
# 2. Converting EA coordinates to SVG format
|
|
11
|
-
# 3. Using StyleResolver to merge EA data + config + defaults
|
|
12
|
-
# 4. Creating a DiagramRenderer wrapper
|
|
13
|
-
# 5. Generating SVG output via SvgRenderer
|
|
14
|
-
class DiagramPresenter < ElementPresenter
|
|
15
|
-
attr_reader :config_path
|
|
16
|
-
|
|
17
|
-
# @param diagram [Lutaml::Uml::Diagram] The diagram to present
|
|
18
|
-
# @param repository [Repository] Repository for looking up elements
|
|
19
|
-
# @param options [Hash] Rendering options
|
|
20
|
-
# @option options [String] :config_path Path to diagram configuration
|
|
21
|
-
def initialize(diagram, repository, options = {})
|
|
22
|
-
super(diagram, repository)
|
|
23
|
-
@config_path = options[:config_path]
|
|
24
|
-
@layout_engine = Ea::Diagram::LayoutEngine.new
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
# Generate SVG output for the diagram
|
|
28
|
-
#
|
|
29
|
-
# @param options [Hash] Rendering options
|
|
30
|
-
# @option options [Integer] :padding (20) Padding around diagram
|
|
31
|
-
# @option options [String] :background_color ("#ffffff")
|
|
32
|
-
# Background color
|
|
33
|
-
# @option options [Boolean] :grid_visible (false) Show grid
|
|
34
|
-
# @option options [Boolean] :interactive (false)
|
|
35
|
-
# Enable interactive features
|
|
36
|
-
# @return [String] Complete SVG content
|
|
37
|
-
def svg_output(options = {}) # rubocop:disable Metrics/MethodLength
|
|
38
|
-
# Build diagram data structure
|
|
39
|
-
diagram_data = {
|
|
40
|
-
name: element.name,
|
|
41
|
-
elements: build_elements_data,
|
|
42
|
-
connectors: build_connectors_data,
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
# Create diagram renderer wrapper
|
|
46
|
-
diagram_renderer = DiagramRendererWrapper.new(diagram_data,
|
|
47
|
-
@layout_engine)
|
|
48
|
-
|
|
49
|
-
# Create SVG renderer with configuration
|
|
50
|
-
renderer_options = options.merge(config_path: config_path)
|
|
51
|
-
svg_renderer = Ea::Diagram::SvgRenderer.new(diagram_renderer,
|
|
52
|
-
renderer_options)
|
|
53
|
-
|
|
54
|
-
# Generate and return SVG
|
|
55
|
-
svg_renderer.render
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
# Get elements in the diagram
|
|
59
|
-
#
|
|
60
|
-
# @return [Array<Hash>] Array of element data hashes
|
|
61
|
-
def elements
|
|
62
|
-
build_elements_data
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
# Get connectors in the diagram
|
|
66
|
-
#
|
|
67
|
-
# @return [Array<Hash>] Array of connector data hashes
|
|
68
|
-
def connectors
|
|
69
|
-
build_connectors_data
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
# Text output for diagram
|
|
73
|
-
def to_text # rubocop:disable Metrics/AbcSize
|
|
74
|
-
lines = []
|
|
75
|
-
lines << "Diagram: #{element.name}"
|
|
76
|
-
lines << ("=" * 50)
|
|
77
|
-
lines << ""
|
|
78
|
-
lines << "Type: #{element.diagram_type}"
|
|
79
|
-
lines << "Package: #{element.package_name || 'Unknown'}"
|
|
80
|
-
lines << "Elements: #{(element.diagram_objects || []).count}"
|
|
81
|
-
lines << "Connectors: #{(element.diagram_links || []).count}"
|
|
82
|
-
lines.join("\n")
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
# Table row for diagram
|
|
86
|
-
def to_table_row
|
|
87
|
-
{
|
|
88
|
-
type: "Diagram",
|
|
89
|
-
name: element.name || "(unnamed)",
|
|
90
|
-
details: "#{element.diagram_type} " \
|
|
91
|
-
"- #{(element.diagram_objects || []).count} elements",
|
|
92
|
-
}
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
# Hash representation
|
|
96
|
-
def to_hash
|
|
97
|
-
{
|
|
98
|
-
type: "Diagram",
|
|
99
|
-
name: element.name,
|
|
100
|
-
diagram_type: element.diagram_type,
|
|
101
|
-
package_name: element.package_name,
|
|
102
|
-
elements_count: (element.diagram_objects || []).count,
|
|
103
|
-
connectors_count: (element.diagram_links || []).count,
|
|
104
|
-
}
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
private
|
|
108
|
-
|
|
109
|
-
# Build element data from diagram_objects
|
|
110
|
-
#
|
|
111
|
-
# @return [Array<Hash>] Array of element data for rendering
|
|
112
|
-
def build_elements_data # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
|
|
113
|
-
return [] unless element.diagram_objects
|
|
114
|
-
|
|
115
|
-
element.diagram_objects.filter_map do |diagram_object|
|
|
116
|
-
# Look up the actual element in the repository
|
|
117
|
-
uml_element = find_element_by_xmi_id(diagram_object.object_xmi_id)
|
|
118
|
-
next nil unless uml_element
|
|
119
|
-
|
|
120
|
-
# Convert EA coordinates to SVG format
|
|
121
|
-
coords = @layout_engine.convert_ea_coordinates(diagram_object)
|
|
122
|
-
|
|
123
|
-
# Build element data hash
|
|
124
|
-
{
|
|
125
|
-
id: diagram_object.object_xmi_id,
|
|
126
|
-
name: uml_element.name,
|
|
127
|
-
type: determine_element_type(uml_element),
|
|
128
|
-
x: coords[:x],
|
|
129
|
-
y: coords[:y],
|
|
130
|
-
width: coords[:width],
|
|
131
|
-
height: coords[:height],
|
|
132
|
-
stereotype: extract_stereotype(uml_element),
|
|
133
|
-
attributes: extract_attributes(uml_element),
|
|
134
|
-
operations: extract_operations(uml_element),
|
|
135
|
-
element: uml_element, # Original UML element
|
|
136
|
-
diagram_object: diagram_object, # Original diagram placement data
|
|
137
|
-
}
|
|
138
|
-
end
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
# Build connector data from diagram_links
|
|
142
|
-
#
|
|
143
|
-
# @return [Array<Hash>] Array of connector data for rendering
|
|
144
|
-
def build_connectors_data # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/MethodLength,Metrics/PerceivedComplexity
|
|
145
|
-
return [] unless element.diagram_links
|
|
146
|
-
|
|
147
|
-
# Build elements index for quick lookup by XMI ID
|
|
148
|
-
elements_map = build_elements_data
|
|
149
|
-
.to_h do |elem|
|
|
150
|
-
[elem[:id], elem]
|
|
151
|
-
end
|
|
152
|
-
|
|
153
|
-
# Build diagram objects map for EA internal ID lookup
|
|
154
|
-
diagram_objects_map = {}
|
|
155
|
-
element.diagram_objects&.each do |dobj|
|
|
156
|
-
diagram_objects_map[extract_ea_id(dobj)] = dobj.object_xmi_id
|
|
157
|
-
end
|
|
158
|
-
|
|
159
|
-
element.diagram_links.filter_map do |diagram_link| # rubocop:disable Metrics/BlockLength
|
|
160
|
-
# Skip hidden connectors
|
|
161
|
-
next nil if diagram_link.hidden
|
|
162
|
-
|
|
163
|
-
# Look up the actual connector in the repository
|
|
164
|
-
connector = find_connector_by_xmi_id(diagram_link.connector_xmi_id)
|
|
165
|
-
|
|
166
|
-
# Even if connector object not found, we can still render
|
|
167
|
-
# Original diagram routing datausing geometry
|
|
168
|
-
# The diagram_link contains all visual information needed
|
|
169
|
-
connector_type = if connector
|
|
170
|
-
determine_connector_type(connector)
|
|
171
|
-
else
|
|
172
|
-
# Default to association if connector object
|
|
173
|
-
# not found
|
|
174
|
-
"association"
|
|
175
|
-
end
|
|
176
|
-
|
|
177
|
-
# Parse source and target from diagram_link style
|
|
178
|
-
# (contains SOID/EOID)
|
|
179
|
-
style_data = parse_diagram_link_style(diagram_link.style)
|
|
180
|
-
|
|
181
|
-
source_elem = nil
|
|
182
|
-
target_elem = nil
|
|
183
|
-
|
|
184
|
-
# Try to find elements using EA internal IDs from style
|
|
185
|
-
if style_data[:soid]
|
|
186
|
-
source_xmi_id = diagram_objects_map[style_data[:soid]]
|
|
187
|
-
source_elem = elements_map[source_xmi_id] if source_xmi_id
|
|
188
|
-
end
|
|
189
|
-
|
|
190
|
-
if style_data[:eoid]
|
|
191
|
-
target_xmi_id = diagram_objects_map[style_data[:eoid]]
|
|
192
|
-
target_elem = elements_map[target_xmi_id] if target_xmi_id
|
|
193
|
-
end
|
|
194
|
-
|
|
195
|
-
# Fallback: try to find from connector object
|
|
196
|
-
# if style parsing failed
|
|
197
|
-
if (!source_elem || !target_elem) && connector
|
|
198
|
-
source_elem ||= find_connector_source(connector, elements_map)
|
|
199
|
-
target_elem ||= find_connector_target(connector, elements_map)
|
|
200
|
-
end
|
|
201
|
-
|
|
202
|
-
# Build connector data hash
|
|
203
|
-
{
|
|
204
|
-
id: diagram_link.connector_xmi_id,
|
|
205
|
-
type: connector_type,
|
|
206
|
-
geometry: diagram_link.geometry,
|
|
207
|
-
style: diagram_link.style,
|
|
208
|
-
# Source element for geometry calculation
|
|
209
|
-
source_element: source_elem,
|
|
210
|
-
# Target element for geometry calculation
|
|
211
|
-
target_element: target_elem,
|
|
212
|
-
# May be nil if not found
|
|
213
|
-
element: connector,
|
|
214
|
-
# Original diagram routing data
|
|
215
|
-
diagram_link: diagram_link,
|
|
216
|
-
}
|
|
217
|
-
end
|
|
218
|
-
end
|
|
219
|
-
|
|
220
|
-
# Parse EA diagram link style string
|
|
221
|
-
#
|
|
222
|
-
# Style format: "Mode=3;EOID=82C649C4;SOID=21096985;
|
|
223
|
-
# Color=-1;LWidth=2;TREE=V;"
|
|
224
|
-
# SOID = Source Object ID (EA internal ID)
|
|
225
|
-
# EOID = End Object ID (EA internal ID)
|
|
226
|
-
#
|
|
227
|
-
# @param style_string [String] EA style string
|
|
228
|
-
# @return [Hash] Parsed style data
|
|
229
|
-
def parse_diagram_link_style(style_string) # rubocop:disable Metrics/CyclomaticComplexity,Metrics/MethodLength
|
|
230
|
-
return {} unless style_string
|
|
231
|
-
|
|
232
|
-
data = {}
|
|
233
|
-
style_string.split(";").each do |pair|
|
|
234
|
-
next if pair.empty?
|
|
235
|
-
|
|
236
|
-
key, value = pair.split("=", 2)
|
|
237
|
-
next unless key && value
|
|
238
|
-
|
|
239
|
-
case key.strip
|
|
240
|
-
when "SOID"
|
|
241
|
-
data[:soid] = value.strip
|
|
242
|
-
when "EOID"
|
|
243
|
-
data[:eoid] = value.strip
|
|
244
|
-
end
|
|
245
|
-
end
|
|
246
|
-
data
|
|
247
|
-
end
|
|
248
|
-
|
|
249
|
-
# Extract EA internal ID from diagram object
|
|
250
|
-
#
|
|
251
|
-
# @param diagram_object [Object] Diagram object
|
|
252
|
-
# @return [String, nil] EA internal ID (DUID from style)
|
|
253
|
-
def extract_ea_id(diagram_object)
|
|
254
|
-
return nil unless diagram_object.style
|
|
255
|
-
|
|
256
|
-
# Parse DUID from style string
|
|
257
|
-
# Style format: "NSL=0;LCol=-1;...;DUID=82C649C4;BCol=16764159;..."
|
|
258
|
-
|
|
259
|
-
# Parse DUID from style string
|
|
260
|
-
# Style format: "NSL=0;LCol=-1;...;DUID=82C649C4;BCol=16764159;..."
|
|
261
|
-
style = diagram_object.style
|
|
262
|
-
match = style.match(/DUID=([^;]+)/)
|
|
263
|
-
return match[1] if match
|
|
264
|
-
|
|
265
|
-
nil
|
|
266
|
-
end
|
|
267
|
-
|
|
268
|
-
# Find element in repository by XMI ID
|
|
269
|
-
#
|
|
270
|
-
# @param xmi_id [String] XMI identifier
|
|
271
|
-
# @return [Object, nil] UML element or nil if not found
|
|
272
|
-
def find_element_by_xmi_id(xmi_id)
|
|
273
|
-
return nil unless xmi_id && repository
|
|
274
|
-
|
|
275
|
-
# Try to find in classes index (includes classes, datatypes, enums)
|
|
276
|
-
element = repository.classes_index.find { |cls| cls.xmi_id == xmi_id }
|
|
277
|
-
return element if element
|
|
278
|
-
|
|
279
|
-
# Try to find in packages index
|
|
280
|
-
repository.packages_index.find { |pkg| pkg.xmi_id == xmi_id }
|
|
281
|
-
end
|
|
282
|
-
|
|
283
|
-
# Find connector in repository by XMI ID
|
|
284
|
-
#
|
|
285
|
-
# @param xmi_id [String] XMI identifier
|
|
286
|
-
# @return [Object, nil] UML connector or nil if not found
|
|
287
|
-
def find_connector_by_xmi_id(xmi_id) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/MethodLength,Metrics/PerceivedComplexity
|
|
288
|
-
return nil unless xmi_id && repository
|
|
289
|
-
|
|
290
|
-
# Look in document-level associations index
|
|
291
|
-
connector = repository.associations_index.find do |assoc|
|
|
292
|
-
assoc.xmi_id == xmi_id
|
|
293
|
-
end
|
|
294
|
-
|
|
295
|
-
return connector if connector
|
|
296
|
-
|
|
297
|
-
repository.classes_index.each do |klass|
|
|
298
|
-
if klass.is_a?(Lutaml::Uml::Class) && klass.generalization
|
|
299
|
-
gen = klass.generalization
|
|
300
|
-
generalizations = gen.is_a?(Array) ? gen : [gen]
|
|
301
|
-
generalizations.each do |g|
|
|
302
|
-
return g if g.xmi_id == xmi_id
|
|
303
|
-
end
|
|
304
|
-
elsif (klass.is_a?(Lutaml::Uml::Class) ||
|
|
305
|
-
klass.is_a?(Lutaml::Uml::DataType)) &&
|
|
306
|
-
klass.associations
|
|
307
|
-
assoc = klass.associations.find do |a|
|
|
308
|
-
a.xmi_id == xmi_id
|
|
309
|
-
end
|
|
310
|
-
return assoc if assoc
|
|
311
|
-
end
|
|
312
|
-
end
|
|
313
|
-
|
|
314
|
-
nil
|
|
315
|
-
end
|
|
316
|
-
|
|
317
|
-
# Find connector target element
|
|
318
|
-
#
|
|
319
|
-
# @param connector [Object] UML connector
|
|
320
|
-
# @param elements_map [Hash] Map of element ID to element data
|
|
321
|
-
# @return [Hash, nil] Target element data
|
|
322
|
-
def find_connector_target(connector, elements_map) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/MethodLength,Metrics/PerceivedComplexity
|
|
323
|
-
target_id = case connector
|
|
324
|
-
when Lutaml::Uml::Generalization
|
|
325
|
-
connector.general
|
|
326
|
-
when Lutaml::Uml::Dependency
|
|
327
|
-
Array(connector.supplier).first
|
|
328
|
-
when Lutaml::Uml::Association
|
|
329
|
-
ends = Array(connector.member_end)
|
|
330
|
-
ends.size > 1 ? ends[1] : nil
|
|
331
|
-
end
|
|
332
|
-
|
|
333
|
-
elements_map[target_id]
|
|
334
|
-
end
|
|
335
|
-
|
|
336
|
-
# Find connector source element
|
|
337
|
-
#
|
|
338
|
-
# @param connector [Object] UML connector
|
|
339
|
-
# @param elements_map [Hash] Map of element ID to element data
|
|
340
|
-
# @return [Hash, nil] Source element data
|
|
341
|
-
def find_connector_source(connector, elements_map) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/MethodLength,Metrics/PerceivedComplexity
|
|
342
|
-
source_id = case connector
|
|
343
|
-
when Lutaml::Uml::Generalization
|
|
344
|
-
nil
|
|
345
|
-
when Lutaml::Uml::Dependency
|
|
346
|
-
Array(connector.client).first
|
|
347
|
-
when Lutaml::Uml::Association
|
|
348
|
-
connector.owner_end || Array(connector.member_end).first
|
|
349
|
-
end
|
|
350
|
-
|
|
351
|
-
elements_map[source_id]
|
|
352
|
-
end
|
|
353
|
-
|
|
354
|
-
# Determine element type for rendering
|
|
355
|
-
#
|
|
356
|
-
# @param uml_element [Object] UML element
|
|
357
|
-
# @return [String] Element type
|
|
358
|
-
def determine_element_type(uml_element)
|
|
359
|
-
case uml_element.class.name
|
|
360
|
-
when /DataType/
|
|
361
|
-
"datatype"
|
|
362
|
-
when /Enum/
|
|
363
|
-
"enum"
|
|
364
|
-
when /Package/
|
|
365
|
-
"package"
|
|
366
|
-
else
|
|
367
|
-
"class"
|
|
368
|
-
end
|
|
369
|
-
end
|
|
370
|
-
|
|
371
|
-
# Determine connector type for rendering
|
|
372
|
-
#
|
|
373
|
-
# @param connector [Object] UML connector
|
|
374
|
-
# @return [String] Connector type
|
|
375
|
-
def determine_connector_type(connector)
|
|
376
|
-
case connector.class.name
|
|
377
|
-
when /Generalization/
|
|
378
|
-
"generalization"
|
|
379
|
-
when /Dependency/
|
|
380
|
-
"dependency"
|
|
381
|
-
when /Realization/
|
|
382
|
-
"realization"
|
|
383
|
-
else
|
|
384
|
-
"association"
|
|
385
|
-
end
|
|
386
|
-
end
|
|
387
|
-
|
|
388
|
-
# Extract stereotype from element
|
|
389
|
-
#
|
|
390
|
-
# @param uml_element [Object] UML element
|
|
391
|
-
# @return [String, nil] Stereotype name
|
|
392
|
-
def extract_stereotype(uml_element)
|
|
393
|
-
stereotype = uml_element.stereotype
|
|
394
|
-
return nil unless stereotype && !stereotype.empty?
|
|
395
|
-
|
|
396
|
-
stereotype.is_a?(Array) ? stereotype.first : stereotype
|
|
397
|
-
end
|
|
398
|
-
|
|
399
|
-
# Extract attributes from element
|
|
400
|
-
#
|
|
401
|
-
# @param uml_element [Object] UML element
|
|
402
|
-
# @return [Array<Hash>] Array of attribute data
|
|
403
|
-
def extract_attributes(uml_element)
|
|
404
|
-
return [] unless uml_element.is_a?(Lutaml::Uml::Classifier)
|
|
405
|
-
return [] unless uml_element.attributes
|
|
406
|
-
|
|
407
|
-
uml_element.attributes.map do |attr|
|
|
408
|
-
{
|
|
409
|
-
name: attr.name,
|
|
410
|
-
type: attr.type,
|
|
411
|
-
visibility: attr.visibility,
|
|
412
|
-
}
|
|
413
|
-
end
|
|
414
|
-
end
|
|
415
|
-
|
|
416
|
-
# Extract operations from element
|
|
417
|
-
#
|
|
418
|
-
# @param uml_element [Object] UML element
|
|
419
|
-
# @return [Array<Hash>] Array of operation data
|
|
420
|
-
def extract_operations(uml_element)
|
|
421
|
-
return [] unless uml_element.is_a?(Lutaml::Uml::Classifier)
|
|
422
|
-
return [] unless uml_element.operations
|
|
423
|
-
|
|
424
|
-
uml_element.operations.map do |op|
|
|
425
|
-
{
|
|
426
|
-
name: op.name,
|
|
427
|
-
visibility: op.visibility,
|
|
428
|
-
return_type: op.return_type,
|
|
429
|
-
parameters: extract_parameters(op),
|
|
430
|
-
}
|
|
431
|
-
end
|
|
432
|
-
end
|
|
433
|
-
|
|
434
|
-
# Extract parameters from operation
|
|
435
|
-
#
|
|
436
|
-
# @param operation [Object] UML operation
|
|
437
|
-
# @return [Array<Hash>] Array of parameter data
|
|
438
|
-
def extract_parameters(operation)
|
|
439
|
-
return [] unless operation.owned_parameter
|
|
440
|
-
|
|
441
|
-
operation.owned_parameter.map do |param|
|
|
442
|
-
{
|
|
443
|
-
name: param.name,
|
|
444
|
-
type: param.type,
|
|
445
|
-
}
|
|
446
|
-
end
|
|
447
|
-
end
|
|
448
|
-
|
|
449
|
-
# Wrapper class to adapt diagram data to SvgRenderer expectations
|
|
450
|
-
class DiagramRendererWrapper
|
|
451
|
-
attr_reader :diagram_data, :bounds, :elements, :connectors
|
|
452
|
-
|
|
453
|
-
def initialize(diagram_data, layout_engine)
|
|
454
|
-
@diagram_data = diagram_data
|
|
455
|
-
@elements = diagram_data[:elements] || []
|
|
456
|
-
@connectors = diagram_data[:connectors] || []
|
|
457
|
-
@bounds = layout_engine.calculate_bounds(diagram_data)
|
|
458
|
-
end
|
|
459
|
-
end
|
|
460
|
-
end
|
|
461
|
-
|
|
462
|
-
# Register with factory
|
|
463
|
-
PresenterFactory.register(
|
|
464
|
-
Lutaml::Uml::Diagram,
|
|
465
|
-
DiagramPresenter,
|
|
466
|
-
)
|
|
467
|
-
end
|
|
468
|
-
end
|
|
469
|
-
end
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Lutaml
|
|
4
|
-
module UmlRepository
|
|
5
|
-
module Presenters
|
|
6
|
-
# Abstract base class for presenting UML elements.
|
|
7
|
-
#
|
|
8
|
-
# Defines the common interface that all element presenters must
|
|
9
|
-
# implement. Provides shared utility methods for formatting.
|
|
10
|
-
#
|
|
11
|
-
# Subclasses must implement: to_text, to_table_row, to_hash
|
|
12
|
-
class ElementPresenter
|
|
13
|
-
attr_reader :element, :repository, :context
|
|
14
|
-
|
|
15
|
-
# @param element [Object] The UML element to present
|
|
16
|
-
# @param repository [UmlRepository, nil] Optional repository for
|
|
17
|
-
# additional context
|
|
18
|
-
# @param context [Hash, nil] Optional context hash
|
|
19
|
-
def initialize(element, repository = nil, context = nil)
|
|
20
|
-
@element = element
|
|
21
|
-
@repository = repository
|
|
22
|
-
@context = context || {}
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
protected
|
|
26
|
-
|
|
27
|
-
# Generate detailed text view of the element.
|
|
28
|
-
#
|
|
29
|
-
# @return [String] Formatted text representation
|
|
30
|
-
# @raise [NotImplementedError] if not implemented by subclass
|
|
31
|
-
def to_text
|
|
32
|
-
raise NotImplementedError,
|
|
33
|
-
"#{self.class} must implement #to_text"
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
# Generate a single row for table display.
|
|
37
|
-
#
|
|
38
|
-
# @return [Hash] Hash with keys: :type, :name, :details, etc.
|
|
39
|
-
# @raise [NotImplementedError] if not implemented by subclass
|
|
40
|
-
def to_table_row
|
|
41
|
-
raise NotImplementedError,
|
|
42
|
-
"#{self.class} must implement #to_table_row"
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
# Generate structured hash for JSON/YAML output.
|
|
46
|
-
#
|
|
47
|
-
# @return [Hash] Structured data representation
|
|
48
|
-
# @raise [NotImplementedError] if not implemented by subclass
|
|
49
|
-
def to_hash
|
|
50
|
-
raise NotImplementedError,
|
|
51
|
-
"#{self.class} must implement #to_hash"
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
# Format cardinality for display.
|
|
55
|
-
#
|
|
56
|
-
# @param attr [Object] Attribute or property with cardinality
|
|
57
|
-
# @return [String] Formatted cardinality like "[1..1]" or "[0..*]"
|
|
58
|
-
def format_cardinality(attr)
|
|
59
|
-
return "" unless attr.cardinality
|
|
60
|
-
|
|
61
|
-
card = attr.cardinality
|
|
62
|
-
min = card.min || "0"
|
|
63
|
-
max = card.max || "*"
|
|
64
|
-
|
|
65
|
-
"[#{min}..#{max}]"
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
# Truncate text to maximum length.
|
|
69
|
-
#
|
|
70
|
-
# @param text [String, nil] Text to truncate
|
|
71
|
-
# @param max_length [Integer] Maximum length
|
|
72
|
-
# @return [String] Truncated text with "..." if needed
|
|
73
|
-
def truncate(text, max_length = 50)
|
|
74
|
-
return "" if text.nil?
|
|
75
|
-
return text if text.length <= max_length
|
|
76
|
-
|
|
77
|
-
"#{text[0...(max_length - 3)]}..."
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
# Extract package path from qualified name.
|
|
81
|
-
#
|
|
82
|
-
# @param qualified_name [String] Fully qualified name
|
|
83
|
-
# @return [String] Package path (everything except last component)
|
|
84
|
-
def extract_package_path(qualified_name)
|
|
85
|
-
parts = qualified_name.to_s.split("::")
|
|
86
|
-
parts[0..-2].join("::")
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
end
|
|
91
|
-
end
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Lutaml
|
|
4
|
-
module UmlRepository
|
|
5
|
-
module Presenters
|
|
6
|
-
# Presenter for UML Enumeration elements.
|
|
7
|
-
#
|
|
8
|
-
# Formats enumeration information including literal values.
|
|
9
|
-
class EnumPresenter < ElementPresenter
|
|
10
|
-
def initialize(element, repository = nil, context = nil)
|
|
11
|
-
super
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def to_text # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/MethodLength,Metrics/PerceivedComplexity
|
|
15
|
-
lines = []
|
|
16
|
-
lines << "Enumeration: #{element.name}"
|
|
17
|
-
lines << ("=" * 50)
|
|
18
|
-
lines << ""
|
|
19
|
-
lines << "Name: #{element.name}"
|
|
20
|
-
if element.xmi_id
|
|
21
|
-
lines << "XMI ID: #{element.xmi_id}"
|
|
22
|
-
end
|
|
23
|
-
if element.stereotype && !element.stereotype.empty?
|
|
24
|
-
lines << "Stereotype: #{element.stereotype}"
|
|
25
|
-
end
|
|
26
|
-
if element.visibility
|
|
27
|
-
lines << "Visibility: #{element.visibility}"
|
|
28
|
-
end
|
|
29
|
-
lines << ""
|
|
30
|
-
|
|
31
|
-
if element.values && !element.values.empty?
|
|
32
|
-
lines << "Literal Values (#{element.values.size}):"
|
|
33
|
-
element.values.each do |value| # rubocop:disable Style/HashEachMethods
|
|
34
|
-
lines << " - #{value.name || value.to_s}"
|
|
35
|
-
end
|
|
36
|
-
else
|
|
37
|
-
lines << "Literal Values: (none)"
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
lines.join("\n")
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def to_table_row
|
|
44
|
-
value_count = element.values ? element.values.size : 0
|
|
45
|
-
{
|
|
46
|
-
type: "Enumeration",
|
|
47
|
-
name: element.name || "(unnamed)",
|
|
48
|
-
details: "#{value_count} literal value(s)",
|
|
49
|
-
}
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def to_hash # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/MethodLength,Metrics/PerceivedComplexity
|
|
53
|
-
data = {
|
|
54
|
-
type: "Enumeration",
|
|
55
|
-
name: element.name,
|
|
56
|
-
value_count: element.values ? element.values.size : 0,
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
data[:xmi_id] = element.xmi_id if element.xmi_id
|
|
60
|
-
data[:stereotype] = element.stereotype if
|
|
61
|
-
element.stereotype && !element.stereotype.empty?
|
|
62
|
-
data[:visibility] = element.visibility if element.visibility
|
|
63
|
-
|
|
64
|
-
if element.values && !element.values.empty?
|
|
65
|
-
data[:values] = element.values.map do |v|
|
|
66
|
-
v.name || v.to_s
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
data
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
# Register with factory
|
|
75
|
-
PresenterFactory.register(Lutaml::Uml::Enum, EnumPresenter)
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
end
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Lutaml
|
|
4
|
-
module UmlRepository
|
|
5
|
-
module Presenters
|
|
6
|
-
# Presenter for UML Package elements.
|
|
7
|
-
#
|
|
8
|
-
# Formats package information for different output types:
|
|
9
|
-
# text, table rows, and structured data.
|
|
10
|
-
class PackagePresenter < ElementPresenter
|
|
11
|
-
# Generate detailed text view.
|
|
12
|
-
#
|
|
13
|
-
# @return [String] Multi-line formatted text
|
|
14
|
-
def to_text # rubocop:disable Metrics/AbcSize
|
|
15
|
-
lines = []
|
|
16
|
-
lines << "Package: #{element.name}"
|
|
17
|
-
lines << ("=" * 50)
|
|
18
|
-
lines << ""
|
|
19
|
-
lines << "Name: #{element.name}"
|
|
20
|
-
if element.is_a?(Lutaml::Uml::TopElement) && element.xmi_id
|
|
21
|
-
lines << "XMI ID: #{element.xmi_id}"
|
|
22
|
-
end
|
|
23
|
-
lines.join("\n")
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# Generate structured hash.
|
|
27
|
-
#
|
|
28
|
-
# @return [Hash] Structured representation
|
|
29
|
-
def to_hash
|
|
30
|
-
data = {
|
|
31
|
-
type: "Package",
|
|
32
|
-
name: element.name,
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
if element.is_a?(Lutaml::Uml::TopElement) && element.xmi_id
|
|
36
|
-
data[:xmi_id] =
|
|
37
|
-
element.xmi_id
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
data
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
# Register with factory
|
|
45
|
-
PresenterFactory.register(Lutaml::Uml::Package, PackagePresenter)
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|