Class: AlmostHappy::Convertor
- Inherits:
-
Object
- Object
- AlmostHappy::Convertor
- Defined in:
- lib/almost_happy/convertor.rb
Defined Under Namespace
Classes: Renderer
Instance Attribute Summary collapse
-
#object ⇒ Object
readonly
Returns the value of attribute object.
-
#source_field ⇒ Object
readonly
Returns the value of attribute source_field.
Class Method Summary collapse
- .[](key) ⇒ Object
- .add_renderer(key, *args, &blk) ⇒ Object
- .for_select ⇒ Object
- .format_names ⇒ Object
- .render_for(key, content) ⇒ Object
- .valid_format?(name) ⇒ Boolean
Instance Method Summary collapse
-
#initialize(object, source_field) ⇒ Convertor
constructor
A new instance of Convertor.
- #original_content ⇒ Object
- #render ⇒ Object
- #rendered_content=(value) ⇒ Object
- #to_html ⇒ Object
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
#object ⇒ Object (readonly)
Returns the value of attribute object.
59 60 61 |
# File 'lib/almost_happy/convertor.rb', line 59 def object @object end |
#source_field ⇒ Object (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) = args. renderer = (args.pop || blk).to_proc self.renderers[key.to_s] = Renderer.new(key, , renderer) end |
.for_select ⇒ Object
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_names ⇒ Object
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
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_content ⇒ Object
66 67 68 |
# File 'lib/almost_happy/convertor.rb', line 66 def original_content @object.send source_field end |
#render ⇒ Object
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_html ⇒ Object
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 |