Class: Alephant::MultiRenderer
- Inherits:
-
Object
- Object
- Alephant::MultiRenderer
- Defined in:
- lib/alephant/models/multi_renderer.rb
Constant Summary collapse
- DEFAULT_LOCATION =
'components'
Instance Method Summary collapse
- #base_path ⇒ Object
- #base_path=(path) ⇒ Object
- #create_instance(template_file, data) ⇒ Object
-
#initialize(component_id, view_base_path = nil) ⇒ MultiRenderer
constructor
A new instance of MultiRenderer.
- #render(data) ⇒ Object
- #render_template(template_file, data) ⇒ Object
- #renderer(template_file, base_path, data) ⇒ Object
Constructor Details
#initialize(component_id, view_base_path = nil) ⇒ MultiRenderer
Returns a new instance of MultiRenderer.
5 6 7 8 9 |
# File 'lib/alephant/models/multi_renderer.rb', line 5 def initialize(component_id, view_base_path=nil) self.base_path = "#{view_base_path}/#{component_id}" unless view_base_path.nil? @component_id = component_id @logger = ::Alephant.logger end |
Instance Method Details
#base_path ⇒ Object
11 12 13 |
# File 'lib/alephant/models/multi_renderer.rb', line 11 def base_path @base_path || DEFAULT_LOCATION end |
#base_path=(path) ⇒ Object
15 16 17 |
# File 'lib/alephant/models/multi_renderer.rb', line 15 def base_path=(path) @base_path = File.directory?(path) ? path : (raise Errors::InvalidViewPath) end |
#create_instance(template_file, data) ⇒ Object
46 47 48 49 50 51 52 53 |
# File 'lib/alephant/models/multi_renderer.rb', line 46 def create_instance(template_file, data) begin create_model(template_file, data) rescue Exception => e @logger.error("MultiRenderer.create_instance: exeception #{e.message}") raise Errors::ViewModelNotFound end end |
#render(data) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/alephant/models/multi_renderer.rb', line 19 def render(data) template_locations.reduce({}) do |obj, file| template_id = template_id_for file @logger.info("MultiRenderer.render: attempting to render #{template_id}") obj.tap do |o| o[template_id.to_sym] = render_template( template_id, data ) end end end |
#render_template(template_file, data) ⇒ Object
33 34 35 36 37 38 39 40 |
# File 'lib/alephant/models/multi_renderer.rb', line 33 def render_template(template_file, data) @logger.info("MultiRenderer.render_template: rendering template #{template_file} (base_path: #{base_path})") renderer( template_file, base_path, data ).render end |
#renderer(template_file, base_path, data) ⇒ Object
42 43 44 |
# File 'lib/alephant/models/multi_renderer.rb', line 42 def renderer(template_file, base_path, data) Renderer.new(template_file, base_path, create_instance(template_file, data)) end |