Module: Renshi::AttributeExpressions

Defined in:
lib/renshi/attribute_expressions.rb,
lib/renshi/attribute_expressions/if.rb,
lib/renshi/attribute_expressions/for.rb,
lib/renshi/attribute_expressions/each.rb,
lib/renshi/attribute_expressions/else.rb,
lib/renshi/attribute_expressions/elsif.rb,
lib/renshi/attribute_expressions/while.rb,
lib/renshi/attribute_expressions/unless.rb

Defined Under Namespace

Classes: Each, Else, Elsif, For, If, Unless, While

Class Method Summary collapse

Class Method Details

.encode_xml_entities(expression) ⇒ Object



29
30
31
32
33
34
# File 'lib/renshi/attribute_expressions.rb', line 29

def self.encode_xml_entities(expression)
  expression.gsub!("<", Renshi::Parser::XML_LT)
  expression.gsub!(">", Renshi::Parser::XML_GT)
  expression.gsub!("&", Renshi::Parser::XML_AMP)
  return expression
end

.perform_expression(node, command) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/renshi/attribute_expressions.rb', line 12

def self.perform_expression(node, command)
  expression = command[0][2..-1]
  
  obj = nil
  begin
    obj = eval "Renshi::AttributeExpressions::#{expression.capitalize}.new"
  rescue StandardError 
    raise Renshi::SyntaxError, "Could not find attribute expression called #{expression}.rb", caller
  end
  
  expression = encode_xml_entities(command[1].to_s)
  obj.evaluate(expression, node)
  
  #removes attribute after it's performed so it doesn't appear in end document
  node.remove_attribute(command[0])
end