Class: Lutaml::UmlRepository::StaticSite::Serializers::AttributeSerializer

Inherits:
Object
  • Object
show all
Includes:
Lutaml::Uml::ModelHelpers
Defined in:
lib/lutaml/uml_repository/static_site/serializers/attribute_serializer.rb

Instance Method Summary collapse

Methods included from Lutaml::Uml::ModelHelpers

#class_type_for, #format_cardinality, #normalize_stereotypes, #package_path_for, #parse_cardinality, #qualified_name_for

Constructor Details

#initialize(repository, id_generator, options) ⇒ AttributeSerializer

Returns a new instance of AttributeSerializer.



12
13
14
15
16
# File 'lib/lutaml/uml_repository/static_site/serializers/attribute_serializer.rb', line 12

def initialize(repository, id_generator, options)
  @repository = repository
  @id_generator = id_generator
  @options = options
end

Instance Method Details

#build_mapObject



18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/lutaml/uml_repository/static_site/serializers/attribute_serializer.rb', line 18

def build_map
  attributes = {}
  @repository.classes_index.each do |klass|
    next unless klass.attributes

    klass.attributes.each do |attr|
      id = @id_generator.attribute_id(attr, klass)
      attributes[id] = serialize(attr, klass, id)
    end
  end
  attributes
end

#serialize(attribute, owner, id) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/lutaml/uml_repository/static_site/serializers/attribute_serializer.rb', line 31

def serialize(attribute, owner, id)
  {
    id: id,
    name: attribute.name,
    type: attribute.type,
    visibility: attribute.visibility,
    owner: @id_generator.class_id(owner),
    ownerName: owner.name,
    cardinality: serialize_cardinality(attribute.cardinality),
    definition: format_definition(attribute.definition),
    stereotypes: normalize_stereotypes(
      attribute.respond_to?(:stereotype) ? attribute.stereotype : nil,
    ),
    isStatic: attribute.respond_to?(:is_static) ? attribute.is_static : false,
    isReadOnly: attribute.respond_to?(:is_read_only) ? attribute.is_read_only : false,
    defaultValue: attribute.respond_to?(:default) ? attribute.default : nil,
  }
end