Sha256: 9af80c776f089ce3d7bb12dc62990887f5da4225778b4a8318303e148dd7a7e4

Contents?: true

Size: 1.66 KB

Versions: 2

Compression:

Stored size: 1.66 KB

Contents

class HamlRenderer
  class HamlHelper
    attr_reader :stats

    def initialize(templatedir, stats, verbose)
      @templatedir = templatedir
      @stats = stats
      @verbose = verbose
      @layout = nil

      Dir.glob(File.join(templatedir, 'helpers', '*.rb')).sort.each do |file|
        eval(IO::readlines(file).join(''))
      end
    end

    def partial(name, hash = {})
      name = name.to_s
      puts "rendering partial '#{name}' ..." if @verbose
      hash = hash.to_h unless hash.is_a? Hash
      lines = IO::readlines(File.join(@templatedir, 'partials', "#{name}.haml")).join('')
      engine = Haml::Engine.new(lines)
      engine.render(self, hash)
    end

    def layout(name)
      @layout = name.to_s
    end

    def get_layout
      @layout
    end
  end

  def initialize(templatedir, outdir, verbose)
    @templatedir = templatedir
    @outdir = outdir
    @verbose = verbose
  end

  def name
    'haml'
  end

  def handle?(file)
    file =~ /\.haml$/
  end

  def render(file, stats)
    ifile = File.join(@templatedir, file)
    ofile = File.join(@outdir, File.basename(file, '.haml') + '.html')

    lines = IO::readlines(ifile).join('')

    helper = HamlHelper.new(@templatedir, stats, @verbose)

    engine = Haml::Engine.new(lines)
    lines = engine.render(helper)

    if !helper.get_layout.nil?
      puts "rendering layout '#{helper.get_layout}' ..." if @verbose
      layout = IO::readlines(File.join(@templatedir, 'layouts', helper.get_layout + '.haml')).join('')
      engine = Haml::Engine.new(layout)
      lines = engine.render(Object.new, :content => lines)
    end

    File.new(ofile, 'w').write(lines)
  end
end

Renderer.register HamlRenderer

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
gitstats-ruby-1.0.1 lib/gitstats/renderer/haml.rb
gitstats-ruby-1.0.0 lib/gitstats/renderer/haml.rb