Sha256: 0e2a55438f724b0809b9309595c56c8366da191d0eb0fb0c2275bb6e759bccbe

Contents?: true

Size: 1.99 KB

Versions: 17

Compression:

Stored size: 1.99 KB

Contents

require "haml"

module Middleman
  module Haml
    module Renderer
      def self.included(base)
        base.supported_formats << "haml"
        base.helpers Middleman::Haml::Helpers
      end
    
      def render_path(path, layout)
        if template_exists?(path, :haml)
          result = nil
          begin
            layout = false if File.extname(path) == ".xml"
            result = haml(path.to_sym, :layout => layout)
          rescue ::Haml::Error => e
            result = "Haml Error: #{e}"
            result << "<pre>Backtrace: #{e.backtrace.join("\n")}</pre>"
          end
          result
        else
          super
        end
      end
    end
  
    module Helpers
      def haml_partial(name, options = {})
        item_name = name.to_sym
        counter_name = "#{name}_counter".to_sym
        if collection = options.delete(:collection)
          collection.enum_for(:each_with_index).collect do |item,index|
            haml_partial name, options.merge(:locals => {item_name => item, counter_name => index+1})
          end.join
        elsif object = options.delete(:object)
          haml_partial name, options.merge(:locals => {item_name => object, counter_name => nil})
        else
          haml "_#{name}".to_sym, options.merge(:layout => false)
        end
      end
    end
  
    module Table
      include ::Haml::Filters::Base

      def render(text)
        output = '<div class="table"><table cellspacing="0" cellpadding="0">'
        line_num = 0
        text.each_line do |line|
          line_num += 1
          next if line.strip.empty?
          output << %Q{<tr class="#{(line_num % 2 == 0) ? "even" : "odd" }#{(line_num == 1) ? " first" : "" }">}

          columns = line.split("|").map { |p| p.strip }
          columns.each_with_index do |col, i|
            output << %Q{<td class="col#{i+1}">#{col}</td>}
          end

          output << "</tr>"
        end
        output + "</table></div>"
      end
    end
  end
end

class Middleman::Base
  include Middleman::Haml::Renderer
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
middleman-0.13.2.pre lib/middleman/haml.rb
middleman-0.13.1 lib/middleman/haml.rb
middleman-0.12.2 lib/middleman/haml.rb
middleman-0.12.1 lib/middleman/haml.rb
middleman-0.12.0.pre3 lib/middleman/haml.rb
middleman-0.12.0.pre2 lib/middleman/haml.rb
middleman-0.12.0.pre lib/middleman/haml.rb
middleman-0.11.5 lib/middleman/haml.rb
middleman-0.11.4 lib/middleman/haml.rb
middleman-0.11.3 lib/middleman/haml.rb
middleman-0.11.2 lib/middleman/haml.rb
middleman-0.11.1 lib/middleman/haml.rb
middleman-0.11.0 lib/middleman/haml.rb
middleman-0.10.17 lib/middleman/haml.rb
middleman-0.10.16 lib/middleman/haml.rb
middleman-0.10.15 lib/middleman/haml.rb
middleman-0.10.14 lib/middleman/haml.rb