Module: Deface::Applicator

Included in:
Override
Defined in:
lib/deface/applicator.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#compatible_with_end_selector?Boolean

Returns:

  • (Boolean)


79
80
81
# File 'lib/deface/applicator.rb', line 79

def compatible_with_end_selector?
  create_action_command.range_compatible?
end

#create_action_commandObject

Raises:



72
73
74
75
76
77
# File 'lib/deface/applicator.rb', line 72

def create_action_command
  commands = Rails.application.config.deface.actions
  command = commands.find { |command| command.to_sym == action }
  raise(DefaceError, "Action #{action} not found") unless command
  command.new(:source_element => safe_source_element, :attributes => attributes)
end

#execute_action(target_element) ⇒ Object



63
64
65
66
# File 'lib/deface/applicator.rb', line 63

def execute_action(target_element)
  validate_original(target_element)
  create_action_command.execute(target_element)
end

#execute_action_on_range(target_range) ⇒ Object



68
69
70
# File 'lib/deface/applicator.rb', line 68

def execute_action_on_range(target_range)
  create_action_command.execute_on_range(target_range)
end

#matcherObject



83
84
85
86
87
88
89
90
91
92
93
# File 'lib/deface/applicator.rb', line 83

def matcher
  if end_selector.blank?
    Deface::Matchers::Element.new(selector) # single css selector
  else
    unless compatible_with_end_selector?
      raise Deface::NotSupportedError, ":#{action} action does not support :closing_selector"
    end
    # targeting range of elements as end_selector is present
    Deface::Matchers::Range.new(name, selector, end_selector)
  end
end