Class: AlmostHappy::Convertor

Inherits:
Object
  • Object
show all
Defined in:
lib/almost_happy/convertor.rb

Defined Under Namespace

Classes: Renderer

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(object, source_field) ⇒ Convertor

Returns a new instance of Convertor.



61
62
63
64
# File 'lib/almost_happy/convertor.rb', line 61

def initialize(object, source_field)
  @object       = object
  @source_field = source_field
end

Instance Attribute Details

#objectObject (readonly)

Returns the value of attribute object.



59
60
61
# File 'lib/almost_happy/convertor.rb', line 59

def object
  @object
end

#source_fieldObject (readonly)

Returns the value of attribute source_field.



59
60
61
# File 'lib/almost_happy/convertor.rb', line 59

def source_field
  @source_field
end

Class Method Details

.[](key) ⇒ Object



51
52
53
# File 'lib/almost_happy/convertor.rb', line 51

def self.[](key)
  renderers[key.to_s].try(:options) || {}
end

.add_renderer(key, *args, &blk) ⇒ Object



29
30
31
32
33
# File 'lib/almost_happy/convertor.rb', line 29

def self.add_renderer(key, *args, &blk)
  options = args.extract_options!
  renderer = (args.pop || blk).to_proc
  self.renderers[key.to_s] = Renderer.new(key, options, renderer)
end

.for_selectObject



41
42
43
44
45
# File 'lib/almost_happy/convertor.rb', line 41

def self.for_select
  self.renderers.values.map do |r|
    [r.human_name, r.name.to_s]
  end.sort
end

.format_namesObject



47
48
49
# File 'lib/almost_happy/convertor.rb', line 47

def self.format_names
  self.renderers.values.map { |r| r.human_name }.to_sentence :two_words_connector => " or ", :last_word_connector => ", or "
end

.render_for(key, content) ⇒ Object



35
36
37
38
39
# File 'lib/almost_happy/convertor.rb', line 35

def self.render_for(key, content)
  renderer = self.renderers[key.to_s]
  content  = content.to_s
  renderer.present? ? renderer.render(content) : content
end

.valid_format?(name) ⇒ Boolean

Returns:

  • (Boolean)


55
56
57
# File 'lib/almost_happy/convertor.rb', line 55

def self.valid_format?(name)
  renderers.keys.include? name.to_s
end

Instance Method Details

#original_contentObject



66
67
68
# File 'lib/almost_happy/convertor.rb', line 66

def original_content
  @object.send source_field
end

#renderObject



79
80
81
# File 'lib/almost_happy/convertor.rb', line 79

def render
  self.rendered_content = self.to_html
end

#rendered_content=(value) ⇒ Object



70
71
72
# File 'lib/almost_happy/convertor.rb', line 70

def rendered_content=(value)
  @object.send :"rendered_#{source_field}=", value
end

#to_htmlObject



74
75
76
77
# File 'lib/almost_happy/convertor.rb', line 74

def to_html
  conversion_from = @object.format rescue nil
  self.class.render_for(conversion_from, original_content)
end