Module: Traitorous
- Defined in:
- lib/traitorous.rb,
lib/traitorous/equality.rb,
lib/traitorous/converter/model.rb,
lib/traitorous/converter/identity.rb,
lib/traitorous/converter/uniform_array.rb,
lib/traitorous/converter/default_value_static.rb
Defined Under Namespace
Modules: ClassMethods, Converter, Equality
Constant Summary
collapse
- HASH =
HashWithIndifferentAccess
- VERSION =
File.read('VERSION')
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.included(base) ⇒ Object
28
29
30
|
# File 'lib/traitorous.rb', line 28
def self.included(base)
base.extend(ClassMethods)
end
|
Instance Method Details
#export ⇒ Object
41
42
43
44
45
46
47
48
|
# File 'lib/traitorous.rb', line 41
def export
exported = HASH.new
traits.each_pair do |trait_name, trait_opts|
attr_value = self.public_send(trait_name.intern)
exported[trait_name] = trait_opts[:converter].do_export(attr_value)
end
exported
end
|
#initialize(opts = {}) ⇒ Object
32
33
34
35
36
37
38
39
|
# File 'lib/traitorous.rb', line 32
def initialize(opts = {})
@opts = HASH.new(opts)
traits.each_pair do |new_trait, trait_opts|
converter = trait_opts[:converter]
val = converter.do_import(@opts.fetch(new_trait, nil))
self.send("#{new_trait}=".intern, val)
end
end
|
#inspect ⇒ Object
54
55
56
57
58
|
# File 'lib/traitorous.rb', line 54
def inspect
string = "#<#{self.class.name}:#{self.object_id} "
fields = self.class.traits.keys.map{|field| "#{field}: #{self.send(field).inspect}"}
string << fields.join(", ") << ">"
end
|
#traits ⇒ Object
50
51
52
|
# File 'lib/traitorous.rb', line 50
def traits
self.class.traits
end
|