Class: Dropsite::DirRenderer

Inherits:
Object
  • Object
show all
Defined in:
lib/dropsite/dir_renderer.rb

Direct Known Subclasses

ImageThumbnails, SimpleIndex

Constant Summary collapse

TEMPLATE_EXTENSIONS =
['.erb']
@@renderers =
[]

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#assets_dirObject

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_pathObject

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

.renderersObject



19
20
21
# File 'lib/dropsite/dir_renderer.rb', line 19

def self.renderers
  @@renderers
end

Instance Method Details

#built_in?Boolean

Returns:

  • (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).

Returns:

  • (Boolean)


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