Sha256: c8979b2f7f699cd3ab42e37bdf0ccc42366cd80e62d71298fc765b57c89a06b2

Contents?: true

Size: 859 Bytes

Versions: 17

Compression:

Stored size: 859 Bytes

Contents

require 'temple'
require 'hamlit/compiler'
require 'hamlit/html/pretty'
require 'hamlit/html/ugly'
require 'hamlit/parser'

module Hamlit
  class Engine < Temple::Engine
    define_options(
      generator:  Temple::Generators::ArrayBuffer,
      format:     :html,
      attr_quote: "'",
      ugly:       true,
    )

    use Parser
    use Compiler
    use :Html, -> { create(html_compiler) }
    filter :Escapable
    filter :ControlFlow
    filter :MultiFlattener
    filter :StaticMerger
    use :Generator, -> { create(options[:generator]) }

    private

    def create(klass)
      valid_options = options.to_hash.select do |key, value|
        klass.options.valid_key?(key)
      end
      klass.new(valid_options)
    end

    def html_compiler
      if options[:ugly]
        HTML::Ugly
      else
        HTML::Pretty
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
hamlit-0.5.3 lib/hamlit/engine.rb
hamlit-0.5.2 lib/hamlit/engine.rb
hamlit-0.5.1 lib/hamlit/engine.rb
hamlit-0.5.0 lib/hamlit/engine.rb
hamlit-0.4.3 lib/hamlit/engine.rb
hamlit-0.4.2 lib/hamlit/engine.rb
hamlit-0.4.1 lib/hamlit/engine.rb
hamlit-0.3.4 lib/hamlit/engine.rb
hamlit-0.3.3 lib/hamlit/engine.rb
hamlit-0.3.2 lib/hamlit/engine.rb
hamlit-0.3.1 lib/hamlit/engine.rb
hamlit-0.3.0 lib/hamlit/engine.rb
hamlit-0.2.0 lib/hamlit/engine.rb
hamlit-0.1.3 lib/hamlit/engine.rb
hamlit-0.1.2 lib/hamlit/engine.rb
hamlit-0.1.1 lib/hamlit/engine.rb
hamlit-0.1.0 lib/hamlit/engine.rb