1
0
Fork 0
mirror of https://github.com/haml/haml.git synced 2022-11-09 12:33:31 -05:00

Create Hamlit::Concerns::Included

ref: b4c5158936
This commit is contained in:
Takashi Kokubun 2015-03-29 01:09:26 +09:00
parent a5ae2d264b
commit 7a2e33f883
5 changed files with 51 additions and 13 deletions

View file

@ -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)

View file

@ -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)

View file

@ -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)

View file

@ -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)

View 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