Module: Metanorma::Plugin::Lutaml::XmiContextBuilder
- Included in:
- LutamlEaXmiBase
- Defined in:
- lib/metanorma/plugin/lutaml/xmi_context_builder.rb
Instance Method Summary collapse
-
#create_context_object(lutaml_document, additional_context, options, context_name = "context") ⇒ Object
rubocop:disable Metrics/AbcSize,Metrics/MethodLength.
- #create_default_context_object(context_name, root_package, additional_context, options) ⇒ Object
-
#fill_in_diagrams_attributes(document, lutaml_document) ⇒ Object
rubocop:disable Metrics/AbcSize,Metrics/MethodLength.
-
#fill_in_entities_refs_attributes(document, lutaml_document, _options) ⇒ Object
rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/MethodLength.
Instance Method Details
#create_context_object(lutaml_document, additional_context, options, context_name = "context") ⇒ Object
rubocop:disable Metrics/AbcSize,Metrics/MethodLength
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/metanorma/plugin/lutaml/xmi_context_builder.rb', line 7 def create_context_object( # rubocop:disable Metrics/AbcSize,Metrics/MethodLength lutaml_document, additional_context, , context_name = "context" ) root_package = package_level(lutaml_document.to_liquid, .package_root_level || 1) contexts = create_default_context_object( context_name, root_package, additional_context, ) if .packages.nil? contexts[context_name]["render_nested_packages"] = true contexts[context_name]["packages"] = root_package.packages return contexts end all_packages = [root_package, *root_package.children_packages] contexts[context_name].merge!( { "packages" => sort_and_filter_out_packages(all_packages, ), "package_entities" => package_hash(, "render_entities"), "package_skip_sections" => package_hash(, "skip_tables"), "render_nested_packages" => !!.render_nested_packages, }, ) contexts end |
#create_default_context_object(context_name, root_package, additional_context, options) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/metanorma/plugin/lutaml/xmi_context_builder.rb', line 37 def create_default_context_object( context_name, root_package, additional_context, ) contexts = {} contexts[context_name] = { "name" => root_package.name, "root_packages" => [root_package], "additional_context" => additional_context .merge("external_classes" => .external_classes), "skip_unrecognized_connector" => !! .skip_unrecognized_connector, } contexts end |
#fill_in_diagrams_attributes(document, lutaml_document) ⇒ Object
rubocop:disable Metrics/AbcSize,Metrics/MethodLength
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/metanorma/plugin/lutaml/xmi_context_builder.rb', line 81 def fill_in_diagrams_attributes(document, lutaml_document) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength package_flat_diagrams = lambda do |pks| pks.each_with_object({}) do |package, res| package.diagrams.map do |diag| res["#{package.name}:#{diag.name}"] = diag.xmi_id end end end children_pks_diags = package_flat_diagrams.call( lutaml_document.packages.map(&:children_packages).flatten, ) document.attributes["lutaml_figure_id"] = package_flat_diagrams .call(lutaml_document.packages) .merge(children_pks_diags) end |
#fill_in_entities_refs_attributes(document, lutaml_document, _options) ⇒ Object
rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/MethodLength
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/metanorma/plugin/lutaml/xmi_context_builder.rb', line 52 def fill_in_entities_refs_attributes(document, # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/MethodLength lutaml_document, ) all_children_packages = lutaml_document.packages .map(&:children_packages).flatten package_flat_packages = lambda do |pks| pks.to_h do |package| [package.name, package.xmi_id] end end children_pks = package_flat_packages.call(all_children_packages) ref_dictionary = package_flat_packages.call(lutaml_document.packages) .merge(children_pks) %w[class enum data_type].each do |type| package_flat = lambda do |pks| pks.each_with_object({}) do |package, res| entities = package_entities(package, type) entities.map do |entity| res["#{type}:#{package.name}:#{entity.name}"] = entity.xmi_id end end end children_pks_diags = package_flat.call(all_children_packages) ref_dictionary = ref_dictionary .merge(package_flat.call(lutaml_document.packages) .merge(children_pks_diags)) end document.attributes["lutaml_entity_id"] = ref_dictionary end |