class Gumdrop::Generator

Public Class Methods

new(content=nil, opts={}, &block) click to toggle source
# File lib/gumdrop/generator.rb, line 6
def initialize(content=nil, opts={}, &block) # block?
  @content= content || block
  @dsl= DSL.new self
  @pages= []
  @filename= content.nil? ? (opts[:filename] || '') : content.filename
  @base_path= content.nil? ? (opts[:base_path] || '') : content.dirname 
end

Public Instance Methods

_render_inline_content(opts) click to toggle source
# File lib/gumdrop/generator.rb, line 66
def _render_inline_content(opts)
  Proc.new {
    renderer= site.active_renderer || Renderer.new
    raise "Generator: page :render=>'partial' param is missing!" unless opts[:render]
    content= site.resolve(opts[:render], opts)
    opts[:inline_render]= true
    renderer.draw content, opts
  }
end
execute() click to toggle source
# File lib/gumdrop/generator.rb, line 52
def execute
  log.debug "(Generator '#{ @filename }')"
  if @content.is_a? Proc
    if @content.arity == 1
      @content.call @dsl
    else
      @dsl.instance_eval &@content
    end
  else
    @dsl.instance_eval @content.body
  end
  log.debug "   created: #{ @pages.size } pages"
end
gen_page(name, opts={}, params={}, &block) click to toggle source
# File lib/gumdrop/generator.rb, line 30
def gen_page(name, opts={}, params={}, &block)
  event_block :generate_item do
    name.relative!
    opts= params.reverse_merge(opts)
    filepath= if @base_path.empty?
        site.source_path / name
      else
        site.source_path / @base_path / name
      end
    if block.nil?
      handler= _render_inline_content opts
      content= site.contents.create filepath, self, &handler          
    else
      content= site.contents.create filepath, self, &block
    end
    content.params.merge! opts
    content.params.merge! opts[:params] if opts.has_key?(:params)
    log.debug " generated: #{content.uri}"
    @pages << content
  end
end
pages() click to toggle source
# File lib/gumdrop/generator.rb, line 26
def pages
  @pages
end
reload() click to toggle source
# File lib/gumdrop/generator.rb, line 21
def reload
  unload
  execute
end
unload() click to toggle source
# File lib/gumdrop/generator.rb, line 14
def unload
  pages.each do |content|
    site.contents.remove content
  end
  @dsl= DSL.new self
end