Class: Bemer::Pipeline

Inherits:
Object
  • Object
show all
Extended by:
ActiveSupport::Autoload
Defined in:
lib/bemer/pipeline.rb,
lib/bemer/pipeline/handler.rb

Defined Under Namespace

Classes: Handler

Constant Summary collapse

ADD_ATTRS_MODE =
:add_attrs
ADD_CLS_MODE =
:add_cls
ADD_MIX_MODE =
:add_mix
ADD_MODS_MODE =
:add_mods
ATTRS_MODE =
:attrs
BEM_MODE =
:bem
CLS_MODE =
:cls
CONTENT_MODE =
:content
JS_MODE =
:js
MIX_MODE =
:mix
MODS_MODE =
:mods
REPLACE_MODE =
:replace
TAG_MODE =
:tag
ADD_MODES =
[ADD_ATTRS_MODE, ADD_CLS_MODE, ADD_MIX_MODE, ADD_MODS_MODE].freeze
[REPLACE_MODE, CONTENT_MODE].freeze
[MODS_MODE, MIX_MODE, JS_MODE].freeze
[CLS_MODE, ATTRS_MODE, BEM_MODE, *BEM_RELATED_MODES].freeze
MODES =
[REPLACE_MODE, CONTENT_MODE, TAG_MODE, *TAG_RELATED_MODES].freeze

Instance Method Summary collapse

Constructor Details

#initialize(template_catalog) ⇒ Pipeline

Returns a new instance of Pipeline.



33
34
35
36
# File 'lib/bemer/pipeline.rb', line 33

def initialize(template_catalog)
  @handlers         = {}
  @template_catalog = template_catalog
end

Instance Method Details

#apply(mode, template, node, **params) ⇒ Object



54
55
56
# File 'lib/bemer/pipeline.rb', line 54

def apply(mode, template, node, **params)
  handler_by(node.name).apply(mode, template, node, params)
end

#apply_next(template, node, **params) ⇒ Object



50
51
52
# File 'lib/bemer/pipeline.rb', line 50

def apply_next(template, node, **params)
  handler_by(node.name).apply_next(template, node, params)
end

#run!(node) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
# File 'lib/bemer/pipeline.rb', line 38

def run!(node)
  return node if node.instance_of?(Tree::TextNode)

  MODES.each do |mode|
    handler_by(node.name).apply!(mode, node)

    break if processing_completed?(mode, node)
  end

  node
end