1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
# frozen_string_literal: true
# The Slim module contains all Slim related classes (e.g. Engine, Parser).
# Plugins might also reside within the Slim module (e.g. Include, Smart).
# @api public
module Slim
# Slim engine which transforms slim code to executable ruby code
# @api public
class Engine < Temple::Engine
# This overwrites some Temple default options or sets default options for Slim specific filters.
# It is recommended to set the default settings only once in the code and avoid duplication. Only use
# `define_options` when you have to override some default settings.
define_options pretty: false,
sort_attrs: true,
format: :xhtml,
attr_quote: '"',
merge_attrs: {'class' => ' '},
generator: Temple::Generators::StringBuffer,
default_tag: 'div'
filter :Encoding
filter :RemoveBOM
use Slim::Parser
use Slim::Embedded
use Slim::Interpolation
use Slim::Splat::Filter
use Slim::DoInserter
use Slim::EndInserter
use Slim::Controls
html :AttributeSorter
html :AttributeMerger
use Slim::CodeAttributes
use(:AttributeRemover) { Temple::HTML::AttributeRemover.new(remove_empty_attrs: options[:merge_attrs].keys) }
html :Pretty
filter :Ambles
filter :Escapable
filter :StaticAnalyzer
filter :ControlFlow
filter :MultiFlattener
filter :StaticMerger
use(:Generator) { options[:generator] }
end
end
|