Class: Typelizer::SerializerPlugins::Alba::TraitInterface

Inherits:
Object
  • Object
show all
Includes:
TypeInference
Defined in:
lib/typelizer/serializer_plugins/alba/trait_interface.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(serializer:, trait_name:, context:, plugin:) ⇒ TraitInterface

Returns a new instance of TraitInterface.



12
13
14
15
16
17
# File 'lib/typelizer/serializer_plugins/alba/trait_interface.rb', line 12

def initialize(serializer:, trait_name:, context:, plugin:)
  @serializer = serializer
  @trait_name = trait_name
  @context = context
  @plugin = plugin
end

Instance Attribute Details

#contextObject (readonly)

Returns the value of attribute context.



10
11
12
# File 'lib/typelizer/serializer_plugins/alba/trait_interface.rb', line 10

def context
  @context
end

#pluginObject (readonly)

Returns the value of attribute plugin.



10
11
12
# File 'lib/typelizer/serializer_plugins/alba/trait_interface.rb', line 10

def plugin
  @plugin
end

#serializerObject (readonly)

Returns the value of attribute serializer.



10
11
12
# File 'lib/typelizer/serializer_plugins/alba/trait_interface.rb', line 10

def serializer
  @serializer
end

#trait_nameObject (readonly)

Returns the value of attribute trait_name.



10
11
12
# File 'lib/typelizer/serializer_plugins/alba/trait_interface.rb', line 10

def trait_name
  @trait_name
end

Instance Method Details

#configObject



19
20
21
# File 'lib/typelizer/serializer_plugins/alba/trait_interface.rb', line 19

def config
  context.config_for(serializer)
end

#nameObject



23
24
25
26
# File 'lib/typelizer/serializer_plugins/alba/trait_interface.rb', line 23

def name
  base_name = config.serializer_name_mapper.call(serializer).tr_s(":", "")
  "#{base_name}#{trait_name.to_s.camelize}Trait"
end

#propertiesObject



28
29
30
31
32
33
34
# File 'lib/typelizer/serializer_plugins/alba/trait_interface.rb', line 28

def properties
  @properties ||= begin
    props, typelizes = plugin.trait_properties(trait_name)
    props = infer_types(props, typelizes)
    PropertySorter.sort(props, config.properties_sort_order)
  end
end