lutaml 0.10.18 → 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/.gitignore +4 -0
- data/.rubocop_todo.yml +82 -161
- data/CLAUDE.md +32 -8
- 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 -860
- data/Makefile +0 -2
- data/TODO.cleanups/05-replace-marshal-load.md +0 -37
- data/TODO.cleanups/06-replace-eval-in-tests.md +0 -41
- data/TODO.cleanups/10-split-large-files.md +0 -47
- 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/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 -466
- 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 -208
- 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 -562
- 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 -10
- 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 -225
- data/lib/lutaml/uml/abstraction.rb +0 -11
- data/lib/lutaml/uml/action.rb +0 -15
- data/lib/lutaml/uml/activity.rb +0 -11
- data/lib/lutaml/uml/actor.rb +0 -11
- data/lib/lutaml/uml/association.rb +0 -35
- data/lib/lutaml/uml/association_generalization.rb +0 -18
- data/lib/lutaml/uml/behavior.rb +0 -11
- data/lib/lutaml/uml/cardinality.rb +0 -10
- data/lib/lutaml/uml/class.rb +0 -50
- data/lib/lutaml/uml/classifier.rb +0 -17
- data/lib/lutaml/uml/comment.rb +0 -13
- data/lib/lutaml/uml/connector.rb +0 -18
- data/lib/lutaml/uml/connector_end.rb +0 -20
- data/lib/lutaml/uml/constraint.rb +0 -22
- data/lib/lutaml/uml/data_type.rb +0 -54
- data/lib/lutaml/uml/dependency.rb +0 -18
- data/lib/lutaml/uml/diagram.rb +0 -23
- data/lib/lutaml/uml/diagram_link.rb +0 -26
- data/lib/lutaml/uml/diagram_object.rb +0 -30
- data/lib/lutaml/uml/document.rb +0 -62
- data/lib/lutaml/uml/enum.rb +0 -19
- data/lib/lutaml/uml/event.rb +0 -11
- data/lib/lutaml/uml/fidelity.rb +0 -10
- data/lib/lutaml/uml/final_state.rb +0 -11
- data/lib/lutaml/uml/fontname.rb +0 -13
- data/lib/lutaml/uml/general_attribute.rb +0 -22
- data/lib/lutaml/uml/generalization.rb +0 -35
- data/lib/lutaml/uml/group.rb +0 -19
- 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 -15
- data/lib/lutaml/uml/model.rb +0 -13
- data/lib/lutaml/uml/model_helpers.rb +0 -93
- data/lib/lutaml/uml/namespace.rb +0 -10
- 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 -11
- data/lib/lutaml/uml/operation.rb +0 -21
- data/lib/lutaml/uml/operation_parameter.rb +0 -17
- data/lib/lutaml/uml/package.rb +0 -31
- 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 -23
- data/lib/lutaml/uml/port.rb +0 -8
- data/lib/lutaml/uml/primitive_type.rb +0 -13
- data/lib/lutaml/uml/property.rb +0 -25
- data/lib/lutaml/uml/pseudostate.rb +0 -11
- data/lib/lutaml/uml/qualified_name.rb +0 -175
- data/lib/lutaml/uml/realization.rb +0 -11
- data/lib/lutaml/uml/region.rb +0 -11
- data/lib/lutaml/uml/state.rb +0 -20
- data/lib/lutaml/uml/state_machine.rb +0 -11
- data/lib/lutaml/uml/tagged_value.rb +0 -21
- data/lib/lutaml/uml/top_element.rb +0 -83
- data/lib/lutaml/uml/top_element_attribute.rb +0 -62
- data/lib/lutaml/uml/transition.rb +0 -22
- data/lib/lutaml/uml/trigger.rb +0 -16
- data/lib/lutaml/uml/validation/document_structure_validator.rb +0 -387
- data/lib/lutaml/uml/value.rb +0 -35
- data/lib/lutaml/uml/vertex.rb +0 -11
- data/lib/lutaml/uml.rb +0 -113
- data/lib/lutaml/uml_repository/class_lookup_index.rb +0 -40
- 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 -209
- 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/association_serialization.rb +0 -77
- data/lib/lutaml/uml_repository/static_site/configuration.rb +0 -268
- data/lib/lutaml/uml_repository/static_site/data_transformer.rb +0 -121
- data/lib/lutaml/uml_repository/static_site/generator.rb +0 -434
- data/lib/lutaml/uml_repository/static_site/id_generator.rb +0 -115
- 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 -39
- 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 -19
- data/lib/lutaml/uml_repository/static_site/models/spa_class.rb +0 -59
- 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 -23
- 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 -35
- 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 -35
- 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 -21
- data/lib/lutaml/uml_repository/static_site/models.rb +0 -46
- data/lib/lutaml/uml_repository/static_site/search_index_builder.rb +0 -239
- data/lib/lutaml/uml_repository/static_site/serializers/attribute_serializer.rb +0 -60
- data/lib/lutaml/uml_repository/static_site/serializers/class_serializer.rb +0 -123
- data/lib/lutaml/uml_repository/static_site/serializers/diagram_serializer.rb +0 -73
- data/lib/lutaml/uml_repository/static_site/serializers/inheritance_resolver.rb +0 -262
- data/lib/lutaml/uml_repository/static_site/serializers/metadata_builder.rb +0 -48
- data/lib/lutaml/uml_repository/static_site/serializers/operation_serializer.rb +0 -57
- data/lib/lutaml/uml_repository/static_site/serializers/package_serializer.rb +0 -79
- data/lib/lutaml/uml_repository/static_site/serializers/package_tree_builder.rb +0 -91
- data/lib/lutaml/uml_repository/static_site/serializers.rb +0 -26
- data/lib/lutaml/uml_repository/static_site.rb +0 -94
- data/lib/lutaml/uml_repository/statistics_calculator.rb +0 -342
- data/lib/lutaml/uml_repository/validators/repository_validator.rb +0 -392
- 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 -63
- 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,431 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Lutaml
|
|
4
|
-
module UmlRepository
|
|
5
|
-
# Enhanced Repository with unified model transformation support.
|
|
6
|
-
#
|
|
7
|
-
# This class extends the original Repository to support the new
|
|
8
|
-
# unified model transformation system, providing seamless integration
|
|
9
|
-
# with XMI, QEA, and future format parsers.
|
|
10
|
-
#
|
|
11
|
-
# The enhanced repository follows SOLID principles and provides
|
|
12
|
-
# backward compatibility with existing code while enabling new
|
|
13
|
-
# transformation capabilities.
|
|
14
|
-
#
|
|
15
|
-
# @example Enhanced XMI parsing
|
|
16
|
-
# repo = RepositoryEnhanced.from_model("model.xmi")
|
|
17
|
-
#
|
|
18
|
-
# @example Enhanced QEA parsing
|
|
19
|
-
# repo = RepositoryEnhanced.from_model("model.qea")
|
|
20
|
-
#
|
|
21
|
-
# @example With custom configuration
|
|
22
|
-
# config = ModelTransformations::Configuration.load("my_config.yml")
|
|
23
|
-
# repo = RepositoryEnhanced.from_model("model.qea", config: config)
|
|
24
|
-
class RepositoryEnhanced < Repository
|
|
25
|
-
WARNING_SCORE_PENALTY = 5
|
|
26
|
-
ERROR_SCORE_PENALTY = 10
|
|
27
|
-
SLOW_PARSING_THRESHOLD = 60
|
|
28
|
-
MAX_ERRORS_FOR_VALID = 5
|
|
29
|
-
|
|
30
|
-
PARSING_OPTION_KEYS = %i[validate include_diagrams
|
|
31
|
-
resolve_references].freeze
|
|
32
|
-
|
|
33
|
-
# @return [ModelTransformations::TransformationEngine]
|
|
34
|
-
# The transformation engine
|
|
35
|
-
attr_reader :transformation_engine
|
|
36
|
-
|
|
37
|
-
# @return [Hash] Transformation metadata
|
|
38
|
-
attr_reader :transformation_metadata
|
|
39
|
-
|
|
40
|
-
# Initialize enhanced repository
|
|
41
|
-
#
|
|
42
|
-
# @param document [Lutaml::Uml::Document] The UML document
|
|
43
|
-
# @param indexes [Hash, nil] Pre-built indexes
|
|
44
|
-
# @param transformation_engine
|
|
45
|
-
# [ModelTransformations::TransformationEngine, nil] Custom engine
|
|
46
|
-
# @param transformation_metadata [Hash]
|
|
47
|
-
# Metadata from transformation process
|
|
48
|
-
def initialize(
|
|
49
|
-
document:, indexes: nil, transformation_engine: nil,
|
|
50
|
-
transformation_metadata: {}
|
|
51
|
-
)
|
|
52
|
-
super(document: document, indexes: indexes)
|
|
53
|
-
|
|
54
|
-
@transformation_engine = transformation_engine ||
|
|
55
|
-
ModelTransformations.engine
|
|
56
|
-
@transformation_metadata = transformation_metadata.freeze
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
# Build enhanced repository from any supported model format
|
|
60
|
-
#
|
|
61
|
-
# This method auto-detects the format and uses the appropriate parser
|
|
62
|
-
# from the unified transformation system.
|
|
63
|
-
#
|
|
64
|
-
# @param model_path [String] Path to the model file
|
|
65
|
-
# @param options [Hash] Parsing and repository options
|
|
66
|
-
# @option options [ModelTransformations::Configuration] :config
|
|
67
|
-
# Custom configuration
|
|
68
|
-
# @option options [Boolean] :validate Validate model after parsing
|
|
69
|
-
# @option options [Boolean] :lazy Enable lazy loading
|
|
70
|
-
# @option options [Symbol] :preset Use configuration preset
|
|
71
|
-
# (:fast, :comprehensive, :production)
|
|
72
|
-
# @return [RepositoryEnhanced] Enhanced repository instance
|
|
73
|
-
def self.from_model(model_path, options = {}) # rubocop:disable Metrics/MethodLength
|
|
74
|
-
# Setup transformation engine with custom config if provided
|
|
75
|
-
engine = setup_transformation_engine(options)
|
|
76
|
-
|
|
77
|
-
# Apply preset if specified
|
|
78
|
-
apply_preset(engine, options[:preset]) if options[:preset]
|
|
79
|
-
|
|
80
|
-
# Parse model using unified transformation system
|
|
81
|
-
document = engine.parse(model_path, extract_parsing_options(options))
|
|
82
|
-
|
|
83
|
-
# Build indexes
|
|
84
|
-
indexes = options[:lazy] ? nil : IndexBuilder.build_all(document)
|
|
85
|
-
|
|
86
|
-
# Create enhanced repository
|
|
87
|
-
enhanced_repo = new(
|
|
88
|
-
document: document,
|
|
89
|
-
indexes: indexes,
|
|
90
|
-
transformation_engine: engine,
|
|
91
|
-
transformation_metadata: extract_transformation_metadata(engine,
|
|
92
|
-
model_path),
|
|
93
|
-
)
|
|
94
|
-
|
|
95
|
-
# Validate if requested
|
|
96
|
-
enhanced_repo.validate if options[:validate]
|
|
97
|
-
|
|
98
|
-
enhanced_repo
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
# Build enhanced repository from XMI with legacy compatibility
|
|
102
|
-
#
|
|
103
|
-
# This method provides backward compatibility with the original from_xmi
|
|
104
|
-
# method while using the new transformation system internally.
|
|
105
|
-
#
|
|
106
|
-
# @param xmi_path [String] Path to XMI file
|
|
107
|
-
# @param options [Hash] Options for parsing
|
|
108
|
-
# @return [RepositoryEnhanced] Enhanced repository instance
|
|
109
|
-
def self.from_xmi_enhanced(xmi_path, options = {})
|
|
110
|
-
from_model(xmi_path, options.merge(format_hint: :xmi))
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
# Build enhanced repository from QEA
|
|
114
|
-
#
|
|
115
|
-
# @param qea_path [String] Path to QEA file
|
|
116
|
-
# @param options [Hash] Options for parsing
|
|
117
|
-
# @return [RepositoryEnhanced] Enhanced repository instance
|
|
118
|
-
def self.from_qea_enhanced(qea_path, options = {})
|
|
119
|
-
from_model(qea_path, options.merge(format_hint: :qea))
|
|
120
|
-
end
|
|
121
|
-
|
|
122
|
-
# Auto-detect and load from file with enhanced capabilities
|
|
123
|
-
#
|
|
124
|
-
# @param file_path [String] Path to model file
|
|
125
|
-
# @param options [Hash] Loading options
|
|
126
|
-
# @return [RepositoryEnhanced] Enhanced repository instance
|
|
127
|
-
def self.from_file_enhanced(file_path, options = {})
|
|
128
|
-
from_model(file_path, options)
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
# Load from LUR package with transformation metadata
|
|
132
|
-
#
|
|
133
|
-
# @param lur_path [String] Path to LUR package
|
|
134
|
-
# @param options [Hash] Loading options
|
|
135
|
-
# @return [RepositoryEnhanced] Enhanced repository instance
|
|
136
|
-
def self.from_package_enhanced(lur_path, _options = {}) # rubocop:disable Metrics/MethodLength
|
|
137
|
-
# Load using original method but wrap in enhanced repository
|
|
138
|
-
original_repo = from_package(lur_path)
|
|
139
|
-
|
|
140
|
-
new(
|
|
141
|
-
document: original_repo.document,
|
|
142
|
-
indexes: original_repo.indexes,
|
|
143
|
-
transformation_metadata: {
|
|
144
|
-
source_file: lur_path,
|
|
145
|
-
source_format: "LUR Package",
|
|
146
|
-
loaded_at: Time.now,
|
|
147
|
-
loader: "Enhanced Package Loader",
|
|
148
|
-
},
|
|
149
|
-
)
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
# Get transformation statistics and metadata
|
|
153
|
-
#
|
|
154
|
-
# @return [Hash] Comprehensive transformation information
|
|
155
|
-
def transformation_info # rubocop:disable Metrics/MethodLength
|
|
156
|
-
base_info = {
|
|
157
|
-
source_file: @transformation_metadata[:source_file],
|
|
158
|
-
source_format: @transformation_metadata[:source_format],
|
|
159
|
-
parsed_at: @transformation_metadata[:parsed_at],
|
|
160
|
-
parser: @transformation_metadata[:parser],
|
|
161
|
-
transformation_engine: @transformation_engine.class.name,
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
# Add engine statistics if available
|
|
165
|
-
if @transformation_engine.class.method_defined?(:statistics)
|
|
166
|
-
base_info[:engine_statistics] = @transformation_engine.statistics
|
|
167
|
-
end
|
|
168
|
-
|
|
169
|
-
base_info
|
|
170
|
-
end
|
|
171
|
-
|
|
172
|
-
# Get parsing history for the source file
|
|
173
|
-
#
|
|
174
|
-
# @return [Array<Hash>] Parsing history entries
|
|
175
|
-
def parsing_history
|
|
176
|
-
source_file = @transformation_metadata[:source_file]
|
|
177
|
-
return [] unless source_file
|
|
178
|
-
|
|
179
|
-
@transformation_engine.history_for_file(source_file)
|
|
180
|
-
end
|
|
181
|
-
|
|
182
|
-
# Check if repository supports a file format
|
|
183
|
-
#
|
|
184
|
-
# @param file_path [String] Path to check
|
|
185
|
-
# @return [Boolean] true if format is supported
|
|
186
|
-
def self.supports_file?(file_path)
|
|
187
|
-
ModelTransformations.engine.supports_file?(file_path)
|
|
188
|
-
end
|
|
189
|
-
|
|
190
|
-
# Get list of supported file extensions
|
|
191
|
-
#
|
|
192
|
-
# @return [Array<String>] Supported extensions
|
|
193
|
-
def self.supported_extensions
|
|
194
|
-
ModelTransformations.engine.supported_extensions
|
|
195
|
-
end
|
|
196
|
-
|
|
197
|
-
# Detect format for a file
|
|
198
|
-
#
|
|
199
|
-
# @param file_path [String] Path to analyze
|
|
200
|
-
# @return [String, nil] Detected format name or nil
|
|
201
|
-
def self.detect_format(file_path)
|
|
202
|
-
parser_class = ModelTransformations.engine.detect_parser(file_path)
|
|
203
|
-
return nil unless parser_class
|
|
204
|
-
|
|
205
|
-
# Create temporary instance to get format name
|
|
206
|
-
temp_parser = parser_class.new
|
|
207
|
-
temp_parser.format_name
|
|
208
|
-
rescue StandardError
|
|
209
|
-
nil
|
|
210
|
-
end
|
|
211
|
-
|
|
212
|
-
# Export with enhanced metadata
|
|
213
|
-
#
|
|
214
|
-
# @param output_path [String] Path for output file
|
|
215
|
-
# @param options [Hash] Export options
|
|
216
|
-
# @return [void]
|
|
217
|
-
def export_to_package_enhanced(output_path, options = {})
|
|
218
|
-
# Include transformation metadata in export
|
|
219
|
-
enhanced_options = options.merge(
|
|
220
|
-
transformation_metadata: @transformation_metadata,
|
|
221
|
-
engine_info: {
|
|
222
|
-
engine_class: @transformation_engine.class.name,
|
|
223
|
-
supported_formats: @transformation_engine.supported_extensions,
|
|
224
|
-
configuration_version: @transformation_engine.configuration.version,
|
|
225
|
-
},
|
|
226
|
-
)
|
|
227
|
-
|
|
228
|
-
export_to_package(output_path, enhanced_options)
|
|
229
|
-
end
|
|
230
|
-
|
|
231
|
-
# Validate with enhanced error reporting
|
|
232
|
-
#
|
|
233
|
-
# @return [Hash] Enhanced validation results
|
|
234
|
-
def validate_enhanced # rubocop:disable Metrics/MethodLength
|
|
235
|
-
base_validation = validate
|
|
236
|
-
|
|
237
|
-
# Add transformation-specific validation
|
|
238
|
-
transformation_validation = validate_transformation_quality
|
|
239
|
-
|
|
240
|
-
{
|
|
241
|
-
base_validation: base_validation,
|
|
242
|
-
transformation_validation: transformation_validation,
|
|
243
|
-
overall_valid: base_validation.valid? &&
|
|
244
|
-
transformation_validation[:valid],
|
|
245
|
-
recommendations: generate_recommendations(base_validation,
|
|
246
|
-
transformation_validation),
|
|
247
|
-
}
|
|
248
|
-
end
|
|
249
|
-
|
|
250
|
-
# Get comprehensive statistics including transformation info
|
|
251
|
-
#
|
|
252
|
-
# @return [Hash] Enhanced statistics
|
|
253
|
-
def statistics_enhanced
|
|
254
|
-
base_stats = statistics
|
|
255
|
-
|
|
256
|
-
transformation_stats = {
|
|
257
|
-
source_format: @transformation_metadata[:source_format],
|
|
258
|
-
parsing_duration: @transformation_metadata[:parsing_duration],
|
|
259
|
-
parser_used: @transformation_metadata[:parser],
|
|
260
|
-
transformation_warnings: @transformation_metadata[:warnings]&.size ||
|
|
261
|
-
0,
|
|
262
|
-
transformation_errors: @transformation_metadata[:errors]&.size || 0,
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
base_stats.merge(transformation_stats: transformation_stats)
|
|
266
|
-
end
|
|
267
|
-
|
|
268
|
-
# Register custom parser with the transformation engine
|
|
269
|
-
#
|
|
270
|
-
# @param extension [String] File extension
|
|
271
|
-
# @param parser_class [Class] Parser class
|
|
272
|
-
# @return [void]
|
|
273
|
-
def register_parser(extension, parser_class)
|
|
274
|
-
@transformation_engine.register_parser(extension, parser_class)
|
|
275
|
-
end
|
|
276
|
-
|
|
277
|
-
# Update transformation engine configuration
|
|
278
|
-
#
|
|
279
|
-
# @param config [ModelTransformations::Configuration] New configuration
|
|
280
|
-
# @return [void]
|
|
281
|
-
def update_configuration(config)
|
|
282
|
-
@transformation_engine.configuration = config
|
|
283
|
-
end
|
|
284
|
-
|
|
285
|
-
private
|
|
286
|
-
|
|
287
|
-
# Setup transformation engine with custom configuration
|
|
288
|
-
#
|
|
289
|
-
# @param options [Hash] Setup options
|
|
290
|
-
# @return [ModelTransformations::TransformationEngine] Configured engine
|
|
291
|
-
def self.setup_transformation_engine(options)
|
|
292
|
-
if options[:config]
|
|
293
|
-
ModelTransformations::TransformationEngine.new(options[:config])
|
|
294
|
-
else
|
|
295
|
-
ModelTransformations.engine
|
|
296
|
-
end
|
|
297
|
-
end
|
|
298
|
-
|
|
299
|
-
# Apply configuration preset
|
|
300
|
-
#
|
|
301
|
-
# @param engine [ModelTransformations::TransformationEngine]
|
|
302
|
-
# Engine to configure
|
|
303
|
-
# @param preset [Symbol] Preset name
|
|
304
|
-
# @return [void]
|
|
305
|
-
def self.apply_preset(_engine, preset)
|
|
306
|
-
# This would apply preset configurations from the YAML config
|
|
307
|
-
# For now, this is a placeholder for future implementation
|
|
308
|
-
case preset
|
|
309
|
-
when :fast
|
|
310
|
-
# Apply fast parsing settings
|
|
311
|
-
when :comprehensive
|
|
312
|
-
# Apply comprehensive parsing settings
|
|
313
|
-
when :production
|
|
314
|
-
# Apply production settings
|
|
315
|
-
end
|
|
316
|
-
end
|
|
317
|
-
|
|
318
|
-
# Extract parsing options from repository options
|
|
319
|
-
#
|
|
320
|
-
# @param options [Hash] Repository options
|
|
321
|
-
# @return [Hash] Parsing options
|
|
322
|
-
def self.extract_parsing_options(options)
|
|
323
|
-
options.slice(*PARSING_OPTION_KEYS).tap do |parsed|
|
|
324
|
-
if parsed.key?(:validate)
|
|
325
|
-
parsed[:validate_output] =
|
|
326
|
-
parsed.delete(:validate)
|
|
327
|
-
end
|
|
328
|
-
end
|
|
329
|
-
end
|
|
330
|
-
|
|
331
|
-
# Extract transformation metadata from engine
|
|
332
|
-
#
|
|
333
|
-
# @param engine [ModelTransformations::TransformationEngine]
|
|
334
|
-
# Transformation engine
|
|
335
|
-
# @param file_path [String] Source file path
|
|
336
|
-
# @return [Hash] Transformation metadata
|
|
337
|
-
def self.extract_transformation_metadata(engine, file_path) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/MethodLength,Metrics/PerceivedComplexity
|
|
338
|
-
# Get the most recent transformation for this file
|
|
339
|
-
history = engine.history_for_file(file_path)
|
|
340
|
-
latest = history.last
|
|
341
|
-
|
|
342
|
-
if latest
|
|
343
|
-
{
|
|
344
|
-
source_file: file_path,
|
|
345
|
-
source_format: latest[:parser]&.format_name,
|
|
346
|
-
parsed_at: latest[:timestamp],
|
|
347
|
-
parser: latest[:parser]&.class&.name,
|
|
348
|
-
parsing_duration: latest[:duration],
|
|
349
|
-
success: latest[:success],
|
|
350
|
-
warnings: latest[:parser]&.warnings || [],
|
|
351
|
-
errors: latest[:parser]&.errors || [],
|
|
352
|
-
}
|
|
353
|
-
else
|
|
354
|
-
{
|
|
355
|
-
source_file: file_path,
|
|
356
|
-
parsed_at: Time.now,
|
|
357
|
-
}
|
|
358
|
-
end
|
|
359
|
-
end
|
|
360
|
-
|
|
361
|
-
# Validate transformation quality
|
|
362
|
-
#
|
|
363
|
-
# @return [Hash] Transformation validation results
|
|
364
|
-
def validate_transformation_quality # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/MethodLength,Metrics/PerceivedComplexity
|
|
365
|
-
results = {
|
|
366
|
-
valid: true,
|
|
367
|
-
warnings: [],
|
|
368
|
-
errors: [],
|
|
369
|
-
quality_score: 100.0,
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
if @transformation_metadata[:warnings]&.any?
|
|
373
|
-
results[:warnings].concat(@transformation_metadata[:warnings])
|
|
374
|
-
results[:quality_score] -= @transformation_metadata[:warnings].size * WARNING_SCORE_PENALTY
|
|
375
|
-
end
|
|
376
|
-
|
|
377
|
-
if @transformation_metadata[:errors]&.any?
|
|
378
|
-
results[:errors].concat(@transformation_metadata[:errors])
|
|
379
|
-
results[:quality_score] -= @transformation_metadata[:errors].size * ERROR_SCORE_PENALTY
|
|
380
|
-
if @transformation_metadata[:errors].size > MAX_ERRORS_FOR_VALID
|
|
381
|
-
results[:valid] =
|
|
382
|
-
false
|
|
383
|
-
end
|
|
384
|
-
end
|
|
385
|
-
|
|
386
|
-
if @transformation_metadata[:parsing_duration]&.> SLOW_PARSING_THRESHOLD
|
|
387
|
-
duration = @transformation_metadata[:parsing_duration].round(2)
|
|
388
|
-
results[:warnings] << "Long parsing duration (#{duration}s)"
|
|
389
|
-
results[:quality_score] -= WARNING_SCORE_PENALTY
|
|
390
|
-
end
|
|
391
|
-
|
|
392
|
-
results[:quality_score] = [results[:quality_score], 0].max
|
|
393
|
-
results
|
|
394
|
-
end
|
|
395
|
-
|
|
396
|
-
# Generate recommendations based on validation results
|
|
397
|
-
#
|
|
398
|
-
# @param base_validation [Object] Base validation results
|
|
399
|
-
# @param transformation_validation [Hash] Transformation validation
|
|
400
|
-
# results
|
|
401
|
-
# @return [Array<String>] Recommendations
|
|
402
|
-
def generate_recommendations(base_validation, transformation_validation) # rubocop:disable Metrics/MethodLength
|
|
403
|
-
recommendations = []
|
|
404
|
-
|
|
405
|
-
# Base validation recommendations
|
|
406
|
-
unless base_validation.valid?
|
|
407
|
-
recommendations << "Address model validation errors for better " \
|
|
408
|
-
"reliability"
|
|
409
|
-
end
|
|
410
|
-
|
|
411
|
-
# Transformation-specific recommendations
|
|
412
|
-
if transformation_validation[:errors].any?
|
|
413
|
-
recommendations << "Review transformation errors to ensure data " \
|
|
414
|
-
"completeness"
|
|
415
|
-
end
|
|
416
|
-
|
|
417
|
-
if transformation_validation[:warnings].size > 10
|
|
418
|
-
recommendations << "Consider using a different parser or format " \
|
|
419
|
-
"for better results"
|
|
420
|
-
end
|
|
421
|
-
|
|
422
|
-
if transformation_validation[:quality_score] < 80
|
|
423
|
-
recommendations << "Model quality is below recommended threshold, " \
|
|
424
|
-
"review source file"
|
|
425
|
-
end
|
|
426
|
-
|
|
427
|
-
recommendations
|
|
428
|
-
end
|
|
429
|
-
end
|
|
430
|
-
end
|
|
431
|
-
end
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "lutaml/model"
|
|
4
|
-
|
|
5
|
-
module Lutaml
|
|
6
|
-
module UmlRepository
|
|
7
|
-
# Immutable value object representing a search result.
|
|
8
|
-
#
|
|
9
|
-
# Wraps a UML element (Class, Attribute, Association, etc.) with metadata
|
|
10
|
-
# about how it matched the search query.
|
|
11
|
-
#
|
|
12
|
-
# Uses lutaml-model for automatic JSON/YAML serialization.
|
|
13
|
-
#
|
|
14
|
-
# @example Creating a search result
|
|
15
|
-
# result = SearchResult.new(
|
|
16
|
-
# element: class_obj,
|
|
17
|
-
# element_type: :class,
|
|
18
|
-
# qualified_name: "ModelRoot::Package::ClassName",
|
|
19
|
-
# package_path: "ModelRoot::Package",
|
|
20
|
-
# match_field: :name,
|
|
21
|
-
# match_context: {}
|
|
22
|
-
# )
|
|
23
|
-
class SearchResult < Lutaml::Model::Serializable
|
|
24
|
-
# Type of element (class, attribute, association, enum, datatype)
|
|
25
|
-
attribute :element_type, Lutaml::Model::Type::String
|
|
26
|
-
|
|
27
|
-
# Fully qualified name of the element
|
|
28
|
-
attribute :qualified_name, Lutaml::Model::Type::String
|
|
29
|
-
|
|
30
|
-
# Package path where element is located
|
|
31
|
-
attribute :package_path, Lutaml::Model::Type::String
|
|
32
|
-
|
|
33
|
-
# Which field matched (name, documentation)
|
|
34
|
-
attribute :match_field, Lutaml::Model::Type::String
|
|
35
|
-
|
|
36
|
-
# Optional context about the match
|
|
37
|
-
attribute :match_context, Lutaml::Model::Type::Hash, default: -> { {} }
|
|
38
|
-
|
|
39
|
-
# The UML element that matched (not serialized - internal use only)
|
|
40
|
-
attr_reader :element
|
|
41
|
-
|
|
42
|
-
# Override initialize to accept element parameter
|
|
43
|
-
#
|
|
44
|
-
# @param element [Object] The UML element that matched
|
|
45
|
-
# @param element_type [Symbol, String] Type of element
|
|
46
|
-
# @param qualified_name [String] Fully qualified name
|
|
47
|
-
# @param package_path [String] Package path
|
|
48
|
-
# @param match_field [Symbol, String] Field that matched
|
|
49
|
-
# @param match_context [Hash, nil] Optional context
|
|
50
|
-
def initialize( # rubocop:disable Metrics/ParameterLists
|
|
51
|
-
element_type:, qualified_name:, package_path:,
|
|
52
|
-
match_field:, element: nil, match_context: nil
|
|
53
|
-
)
|
|
54
|
-
# Store element before calling super (not for serialization)
|
|
55
|
-
@element = element
|
|
56
|
-
|
|
57
|
-
# Initialize lutaml-model with serializable attributes only
|
|
58
|
-
super(
|
|
59
|
-
element_type: element_type.to_s,
|
|
60
|
-
qualified_name: qualified_name,
|
|
61
|
-
package_path: package_path,
|
|
62
|
-
match_field: match_field.to_s,
|
|
63
|
-
match_context: match_context || {}
|
|
64
|
-
)
|
|
65
|
-
|
|
66
|
-
freeze
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
json do
|
|
70
|
-
map "element_type", to: :element_type
|
|
71
|
-
map "qualified_name", to: :qualified_name
|
|
72
|
-
map "package_path", to: :package_path
|
|
73
|
-
map "match_field", to: :match_field
|
|
74
|
-
map "match_context", to: :match_context
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
yaml do
|
|
78
|
-
map "element_type", to: :element_type
|
|
79
|
-
map "qualified_name", to: :qualified_name
|
|
80
|
-
map "package_path", to: :package_path
|
|
81
|
-
map "match_field", to: :match_field
|
|
82
|
-
map "match_context", to: :match_context
|
|
83
|
-
end
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
|
-
end
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Lutaml
|
|
4
|
-
module UmlRepository
|
|
5
|
-
module StaticSite
|
|
6
|
-
module AssociationSerialization
|
|
7
|
-
private
|
|
8
|
-
|
|
9
|
-
def build_associations_map
|
|
10
|
-
associations = {}
|
|
11
|
-
|
|
12
|
-
repository.associations_index.each do |assoc|
|
|
13
|
-
id = @id_generator.association_id(assoc)
|
|
14
|
-
associations[id] = serialize_association(assoc, id)
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
associations
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def serialize_association(association, id)
|
|
21
|
-
Models::SpaAssociation.new(
|
|
22
|
-
id: id,
|
|
23
|
-
xmi_id: association.xmi_id,
|
|
24
|
-
name: resolve_association_name(association),
|
|
25
|
-
type: "Association",
|
|
26
|
-
definition: format_definition(association.definition),
|
|
27
|
-
source: build_association_source(association),
|
|
28
|
-
target: build_association_target(association),
|
|
29
|
-
)
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def resolve_association_name(association)
|
|
33
|
-
name = association.name
|
|
34
|
-
return name if name && !name.empty?
|
|
35
|
-
|
|
36
|
-
role = association.owner_end_attribute_name
|
|
37
|
-
return role if role && !role.empty?
|
|
38
|
-
|
|
39
|
-
association.member_end_attribute_name
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def build_association_source(association)
|
|
43
|
-
return nil unless association.owner_end
|
|
44
|
-
|
|
45
|
-
Models::SpaAssociationEnd.new(
|
|
46
|
-
klass: association.owner_end_xmi_id,
|
|
47
|
-
class_name: association.owner_end,
|
|
48
|
-
role: association.owner_end_attribute_name,
|
|
49
|
-
cardinality: serialize_cardinality(association.owner_end_cardinality),
|
|
50
|
-
aggregation: association.owner_end_type,
|
|
51
|
-
)
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
def build_association_target(association)
|
|
55
|
-
return nil unless association.member_end
|
|
56
|
-
|
|
57
|
-
Models::SpaAssociationEnd.new(
|
|
58
|
-
klass: association.member_end_xmi_id,
|
|
59
|
-
class_name: association.member_end,
|
|
60
|
-
role: association.member_end_attribute_name,
|
|
61
|
-
cardinality: serialize_cardinality(association.member_end_cardinality),
|
|
62
|
-
aggregation: association.member_end_type,
|
|
63
|
-
)
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
def serialize_cardinality(cardinality)
|
|
67
|
-
return nil unless cardinality
|
|
68
|
-
|
|
69
|
-
Models::SpaCardinality.new(
|
|
70
|
-
min: cardinality.min,
|
|
71
|
-
max: cardinality.max,
|
|
72
|
-
)
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
end
|