mirror of
https://github.com/haml/haml.git
synced 2022-11-09 12:33:31 -05:00
parent
a5ae2d264b
commit
7a2e33f883
5 changed files with 51 additions and 13 deletions
|
@ -1,14 +1,16 @@
|
||||||
require 'hamlit/compilers/new_attribute'
|
require 'hamlit/compilers/new_attribute'
|
||||||
require 'hamlit/compilers/old_attribute'
|
require 'hamlit/compilers/old_attribute'
|
||||||
|
require 'hamlit/concerns/included'
|
||||||
|
|
||||||
module Hamlit
|
module Hamlit
|
||||||
module Compilers
|
module Compilers
|
||||||
module Attributes
|
module Attributes
|
||||||
|
extend Concerns::Included
|
||||||
include Compilers::NewAttribute
|
include Compilers::NewAttribute
|
||||||
include Compilers::OldAttribute
|
include Compilers::OldAttribute
|
||||||
|
|
||||||
def self.included(base)
|
included do
|
||||||
base.define_options :format
|
define_options :format
|
||||||
end
|
end
|
||||||
|
|
||||||
def on_haml_attrs(*attrs)
|
def on_haml_attrs(*attrs)
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
require 'hamlit/concerns/included'
|
||||||
require 'hamlit/concerns/registerable'
|
require 'hamlit/concerns/registerable'
|
||||||
require 'hamlit/filters/css'
|
require 'hamlit/filters/css'
|
||||||
require 'hamlit/filters/javascript'
|
require 'hamlit/filters/javascript'
|
||||||
|
@ -6,17 +7,17 @@ require 'hamlit/filters/ruby'
|
||||||
module Hamlit
|
module Hamlit
|
||||||
module Compilers
|
module Compilers
|
||||||
module Filter
|
module Filter
|
||||||
|
extend Concerns::Included
|
||||||
|
|
||||||
BASE_DEPTH = 2
|
BASE_DEPTH = 2
|
||||||
IGNORED_FILTERS = %w[ruby].freeze
|
IGNORED_FILTERS = %w[ruby].freeze
|
||||||
|
|
||||||
def self.included(base)
|
included do
|
||||||
base.class_eval do
|
extend Concerns::Registerable
|
||||||
extend Concerns::Registerable
|
|
||||||
|
|
||||||
register :javascript, Filters::Javascript
|
register :javascript, Filters::Javascript
|
||||||
register :css, Filters::Css
|
register :css, Filters::Css
|
||||||
register :ruby, Filters::Ruby
|
register :ruby, Filters::Ruby
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def on_haml_filter(name, exp)
|
def on_haml_filter(name, exp)
|
||||||
|
|
|
@ -1,10 +1,13 @@
|
||||||
require 'hamlit/concerns/escapable'
|
require 'hamlit/concerns/escapable'
|
||||||
|
require 'hamlit/concerns/included'
|
||||||
|
|
||||||
module Hamlit
|
module Hamlit
|
||||||
module Compilers
|
module Compilers
|
||||||
module Script
|
module Script
|
||||||
def self.included(base)
|
extend Concerns::Included
|
||||||
base.send(:include, Concerns::Escapable)
|
|
||||||
|
included do
|
||||||
|
include Concerns::Escapable
|
||||||
end
|
end
|
||||||
|
|
||||||
def on_haml_script(*exps)
|
def on_haml_script(*exps)
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
|
require 'hamlit/concerns/included'
|
||||||
|
|
||||||
module Hamlit
|
module Hamlit
|
||||||
module Concerns
|
module Concerns
|
||||||
module Escapable
|
module Escapable
|
||||||
def self.included(base)
|
extend Included
|
||||||
base.define_options(escape_html: false)
|
|
||||||
|
included do
|
||||||
|
define_options escape_html: false
|
||||||
end
|
end
|
||||||
|
|
||||||
def escape_html(exp, force_escape = false)
|
def escape_html(exp, force_escape = false)
|
||||||
|
|
28
lib/hamlit/concerns/included.rb
Normal file
28
lib/hamlit/concerns/included.rb
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
# Mini ActiveSupport::Concern
|
||||||
|
module Hamlit
|
||||||
|
module Concerns
|
||||||
|
class MultipleIncludedBlocks < StandardError
|
||||||
|
def initialize
|
||||||
|
super "Cannot define multiple 'included' blocks for a Concern"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
module Included
|
||||||
|
def self.extended(klass)
|
||||||
|
klass.class_eval do
|
||||||
|
def self.included(base = nil, &block)
|
||||||
|
if block_given?
|
||||||
|
raise MultipleIncludedBlocks if defined?(@_included_block)
|
||||||
|
|
||||||
|
@_included_block = block
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
base.instance_exec(&@_included_block) if defined?(@_included_block)
|
||||||
|
super
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Add table
Reference in a new issue