Sha256: 772d4197e1f6772c6afc8840634930dc6829eb70802f026705ad4a8df6e6ded2

Contents?: true

Size: 1.02 KB

Versions: 3

Compression:

Stored size: 1.02 KB

Contents

module Rail
  module Processor
    class Haml < Base
      def self.input_extension
        'haml'
      end

      def self.output_extension
        'html'
      end

      def self.mime_type
        'text/html'
      end

      def compile(filename, options = {}, &block)
        options = {
          filename: filename,
          line: 1,
          ugly: compress?
        }.merge(options)

        engine = ::Haml::Engine.new(File.read(filename), options)

        layout_filename = find_layout(filename)

        if layout_filename
          compile(layout_filename, options) do
            engine.render(options[:context], {}, &block)
          end
        else
          engine.render(options[:context], {}, &block)
        end
      end

      private

      def find_layout(filename)
        asset = "layouts/#{filename.split('/')[-2]}"

        ["#{asset}.haml", "#{asset}.html.haml"].each do |asset|
          filename = pipeline.find(asset)
          return filename if filename
        end

        nil
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rail-0.1.1 lib/rail/processor/haml.rb
rail-0.1.0 lib/rail/processor/haml.rb
rail-0.0.8 lib/rail/processor/haml.rb