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/old_attribute'
|
||||
require 'hamlit/concerns/included'
|
||||
|
||||
module Hamlit
|
||||
module Compilers
|
||||
module Attributes
|
||||
extend Concerns::Included
|
||||
include Compilers::NewAttribute
|
||||
include Compilers::OldAttribute
|
||||
|
||||
def self.included(base)
|
||||
base.define_options :format
|
||||
included do
|
||||
define_options :format
|
||||
end
|
||||
|
||||
def on_haml_attrs(*attrs)
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
require 'hamlit/concerns/included'
|
||||
require 'hamlit/concerns/registerable'
|
||||
require 'hamlit/filters/css'
|
||||
require 'hamlit/filters/javascript'
|
||||
|
@ -6,17 +7,17 @@ require 'hamlit/filters/ruby'
|
|||
module Hamlit
|
||||
module Compilers
|
||||
module Filter
|
||||
extend Concerns::Included
|
||||
|
||||
BASE_DEPTH = 2
|
||||
IGNORED_FILTERS = %w[ruby].freeze
|
||||
|
||||
def self.included(base)
|
||||
base.class_eval do
|
||||
extend Concerns::Registerable
|
||||
included do
|
||||
extend Concerns::Registerable
|
||||
|
||||
register :javascript, Filters::Javascript
|
||||
register :css, Filters::Css
|
||||
register :ruby, Filters::Ruby
|
||||
end
|
||||
register :javascript, Filters::Javascript
|
||||
register :css, Filters::Css
|
||||
register :ruby, Filters::Ruby
|
||||
end
|
||||
|
||||
def on_haml_filter(name, exp)
|
||||
|
|
|
@ -1,10 +1,13 @@
|
|||
require 'hamlit/concerns/escapable'
|
||||
require 'hamlit/concerns/included'
|
||||
|
||||
module Hamlit
|
||||
module Compilers
|
||||
module Script
|
||||
def self.included(base)
|
||||
base.send(:include, Concerns::Escapable)
|
||||
extend Concerns::Included
|
||||
|
||||
included do
|
||||
include Concerns::Escapable
|
||||
end
|
||||
|
||||
def on_haml_script(*exps)
|
||||
|
|
|
@ -1,8 +1,12 @@
|
|||
require 'hamlit/concerns/included'
|
||||
|
||||
module Hamlit
|
||||
module Concerns
|
||||
module Escapable
|
||||
def self.included(base)
|
||||
base.define_options(escape_html: false)
|
||||
extend Included
|
||||
|
||||
included do
|
||||
define_options escape_html: false
|
||||
end
|
||||
|
||||
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