Class: Lutaml::UmlRepository::StaticSite::Serializers::InheritanceResolver
- Inherits:
-
Base
- Object
- Base
- Lutaml::UmlRepository::StaticSite::Serializers::InheritanceResolver
- Defined in:
- lib/lutaml/uml_repository/static_site/serializers/inheritance_resolver.rb
Instance Attribute Summary
Attributes inherited from Base
#id_generator, #options, #repository
Instance Method Summary collapse
- #compute_inherited_associations(klass, visited = Set.new) ⇒ Object
- #compute_inherited_attributes(klass, visited = Set.new) ⇒ Object
- #find_generalizations(klass) ⇒ Object
- #find_specializations(klass) ⇒ Object
-
#initialize(repository, id_generator, options, generalization_map) ⇒ InheritanceResolver
constructor
A new instance of InheritanceResolver.
Methods inherited from Base
#class_lookup, #find_assoc_by_id, #find_class_associations, #package_diagrams, #resolve_assoc_role, #serialize_attribute
Methods included from Lutaml::Uml::ModelHelpers
#class_type_for, #extract_package_path, #format_cardinality, #format_definition, #normalize_stereotypes, #package_path_for, #parse_cardinality, #qualified_name_for
Constructor Details
#initialize(repository, id_generator, options, generalization_map) ⇒ InheritanceResolver
Returns a new instance of InheritanceResolver.
8 9 10 11 |
# File 'lib/lutaml/uml_repository/static_site/serializers/inheritance_resolver.rb', line 8 def initialize(repository, id_generator, , generalization_map) super(repository, id_generator, ) @generalization_map = generalization_map end |
Instance Method Details
#compute_inherited_associations(klass, visited = Set.new) ⇒ Object
41 42 43 44 45 46 |
# File 'lib/lutaml/uml_repository/static_site/serializers/inheritance_resolver.rb', line 41 def compute_inherited_associations(klass, visited = Set.new) walk_inheritance_chain(klass, visited, :associations) rescue StandardError => e warn "Error computing inherited associations: #{e.}" [] end |
#compute_inherited_attributes(klass, visited = Set.new) ⇒ Object
34 35 36 37 38 39 |
# File 'lib/lutaml/uml_repository/static_site/serializers/inheritance_resolver.rb', line 34 def compute_inherited_attributes(klass, visited = Set.new) walk_inheritance_chain(klass, visited, :attributes) rescue StandardError => e warn "Error computing inherited attributes: #{e.}" [] end |
#find_generalizations(klass) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/lutaml/uml_repository/static_site/serializers/inheritance_resolver.rb', line 13 def find_generalizations(klass) map_parents = generalization_map_parents(klass) return map_parents unless map_parents.nil? parent = @repository.supertype_of(klass) return [] if parent && parent.xmi_id == klass.xmi_id parent ? [@id_generator.class_id(parent)] : [] rescue StandardError => e warn "Error finding generalizations for #{klass.name}: #{e.}" [] end |
#find_specializations(klass) ⇒ Object
26 27 28 29 30 31 32 |
# File 'lib/lutaml/uml_repository/static_site/serializers/inheritance_resolver.rb', line 26 def find_specializations(klass) children = @repository.subtypes_of(klass) children.reject { |child| child.xmi_id == klass.xmi_id } .map { |child| @id_generator.class_id(child) } rescue StandardError [] end |