Class: PgSerializable::TraitManager

Inherits:
Object
  • Object
show all
Includes:
Visitable
Defined in:
lib/pg_serializable/trait_manager.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Visitable

#accept

Constructor Details

#initialize(klass) ⇒ TraitManager

Returns a new instance of TraitManager.



7
8
9
10
# File 'lib/pg_serializable/trait_manager.rb', line 7

def initialize(klass)
  @klass = klass
  @traits = ActiveSupport::HashWithIndifferentAccess.new
end

Instance Attribute Details

#klassObject (readonly)

Returns the value of attribute klass.



5
6
7
# File 'lib/pg_serializable/trait_manager.rb', line 5

def klass
  @klass
end

#traitsObject (readonly)

Returns the value of attribute traits.



5
6
7
# File 'lib/pg_serializable/trait_manager.rb', line 5

def traits
  @traits
end

Instance Method Details

#default(&blk) ⇒ Object



12
13
14
15
16
# File 'lib/pg_serializable/trait_manager.rb', line 12

def default(&blk)
  default_trait = PgSerializable::Trait.new(klass)
  default_trait.instance_eval &blk
  @traits[:default] = default_trait
end

#get_trait(trait) ⇒ Object



24
25
26
# File 'lib/pg_serializable/trait_manager.rb', line 24

def get_trait(trait)
  @traits[trait]
end

#trait(trait_name, &blk) ⇒ Object



18
19
20
21
22
# File 'lib/pg_serializable/trait_manager.rb', line 18

def trait(trait_name, &blk)
  trait_instance = PgSerializable::Trait.new(klass)
  trait_instance.instance_eval &blk
  @traits[trait_name] = trait_instance
end

#validate_traits!Object



28
29
30
# File 'lib/pg_serializable/trait_manager.rb', line 28

def validate_traits!
  accept(PgSerializable::Visitors::Validation.new)
end