Class: Distant::Translator

Inherits:
Object
  • Object
show all
Defined in:
lib/distant/translator.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeTranslator

Returns a new instance of Translator.



6
7
8
9
10
# File 'lib/distant/translator.rb', line 6

def initialize
  # Sensible defaults:
  self.from_hash_translator = Proc.new{ |hash| hash }
  self.to_hash_translator = Proc.new{ |obj| obj.to_h }
end

Instance Attribute Details

#from_hash_translatorObject

Returns the value of attribute from_hash_translator.



4
5
6
# File 'lib/distant/translator.rb', line 4

def from_hash_translator
  @from_hash_translator
end

#to_hash_translatorObject

Returns the value of attribute to_hash_translator.



4
5
6
# File 'lib/distant/translator.rb', line 4

def to_hash_translator
  @to_hash_translator
end

Instance Method Details

#from_hash(&block) ⇒ Object



20
21
22
# File 'lib/distant/translator.rb', line 20

def from_hash(&block)
  self.from_hash_translator = block
end

#recursive_underscore(thing) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/distant/translator.rb', line 28

def recursive_underscore(thing)
  if thing.is_a? Hash
    out = {}
    thing.each do |key, val|
      out[key.to_s.underscore.to_sym] = recursive_underscore(val)
    end
    out
  elsif thing.is_a? Array
    thing.map{ |item| recursive_underscore(item) }
  else
    thing
  end
end

#to_hash(&block) ⇒ Object



24
25
26
# File 'lib/distant/translator.rb', line 24

def to_hash(&block)
  self.to_hash_translator = block
end

#translate_from_hash(hash) ⇒ Object



12
13
14
# File 'lib/distant/translator.rb', line 12

def translate_from_hash(hash)
  self.from_hash_translator.call(hash)
end

#translate_to_hash(obj) ⇒ Object



16
17
18
# File 'lib/distant/translator.rb', line 16

def translate_to_hash(obj)
  self.to_hash_translator.call(obj)
end