Class: Dropsite::DirRenderer
- Inherits:
-
Object
- Object
- Dropsite::DirRenderer
- Defined in:
- lib/dropsite/dir_renderer.rb
Direct Known Subclasses
Constant Summary collapse
- TEMPLATE_EXTENSIONS =
['.erb']
- @@renderers =
[]
Instance Attribute Summary collapse
-
#assets_dir ⇒ Object
Returns the value of attribute assets_dir.
-
#template_path ⇒ Object
Returns the value of attribute template_path.
Class Method Summary collapse
Instance Method Summary collapse
- #built_in? ⇒ Boolean
-
#can_render?(site_dir) ⇒ Boolean
Overridden in subclass to indicate, usually based on the SiteDir contents, whether this renderer can render the SiteDir.
-
#render(site_dir) ⇒ Object
Optionally overridden in subclass to do the work of rendering.
-
#write_page_assets(site_dir) ⇒ Object
Optionally overridden in subclass to write any files that will be needed to display the page (rendered by the render method) properly.
Instance Attribute Details
#assets_dir ⇒ Object
Returns the value of attribute assets_dir.
23 24 25 |
# File 'lib/dropsite/dir_renderer.rb', line 23 def assets_dir @assets_dir end |
#template_path ⇒ Object
Returns the value of attribute template_path.
23 24 25 |
# File 'lib/dropsite/dir_renderer.rb', line 23 def template_path @template_path end |
Class Method Details
.inherited(subclass) ⇒ Object
9 10 11 12 13 14 15 16 17 |
# File 'lib/dropsite/dir_renderer.rb', line 9 def self.inherited(subclass) renderer = subclass.new plugin_dir = File.dirname(caller[0].split(':')[0]) template_file = Dir.entries(plugin_dir).find {|e| TEMPLATE_EXTENSIONS.include? File.extname(e)} renderer.template_path = template_file ? File.join(plugin_dir, template_file) : nil renderer.assets_dir = File.join(plugin_dir, 'assets') @@renderers << renderer end |
.renderers ⇒ Object
19 20 21 |
# File 'lib/dropsite/dir_renderer.rb', line 19 def self.renderers @@renderers end |
Instance Method Details
#built_in? ⇒ Boolean
50 51 52 |
# File 'lib/dropsite/dir_renderer.rb', line 50 def built_in? false end |
#can_render?(site_dir) ⇒ Boolean
Overridden in subclass to indicate, usually based on the SiteDir contents, whether this renderer can render the SiteDir. This is false by default, unless the renderer is a built_in (included with Dropsite).
28 29 30 |
# File 'lib/dropsite/dir_renderer.rb', line 28 def can_render?(site_dir) built_in? end |
#render(site_dir) ⇒ Object
Optionally overridden in subclass to do the work of rendering. By default this will find plugin_name.erb in the plugin directory and use it to render.
34 35 36 37 38 39 40 41 42 43 |
# File 'lib/dropsite/dir_renderer.rb', line 34 def render(site_dir) site_dir.rendered_by = self.class if File.extname(template_path) == '.erb' @template = @template || ERB.new(IO.read(template_path)) @template.result(site_dir.get_binding) else raise "Don't know how to render: #{template_path}" end end |
#write_page_assets(site_dir) ⇒ Object
Optionally overridden in subclass to write any files that will be needed to display the page (rendered by the render method) properly. This does nothing by default.
47 48 |
# File 'lib/dropsite/dir_renderer.rb', line 47 def write_page_assets(site_dir) end |