match(o, scope)
click to toggle source
def match(o, scope)
@@match_visitor.visit_this_1(self, o, scope)
end
match_AndExpression(o, scope)
click to toggle source
def match_AndExpression(o, scope)
left_match = match(o.left_expr, scope)
right_match = match(o.right_expr, scope)
return [left_match, 'and', right_match]
end
match_ComparisonExpression(o, scope)
click to toggle source
def match_ComparisonExpression(o, scope)
left_match = match(o.left_expr, scope)
right_match = match(o.right_expr, scope)
return [left_match, o.operator.to_s, right_match]
end
match_ConcatenatedString(o, scope)
click to toggle source
def match_ConcatenatedString(o, scope)
@@evaluator.evaluate(o, scope)
end
match_LiteralBoolean(o, scope)
click to toggle source
def match_LiteralBoolean(o, scope)
@@evaluator.evaluate(o, scope)
end
match_LiteralNumber(o, scope)
click to toggle source
def match_LiteralNumber(o, scope)
@@evaluator.evaluate(o, scope)
end
match_LiteralString(o, scope)
click to toggle source
def match_LiteralString(o, scope)
@@evaluator.evaluate(o, scope)
end
match_Object(o, scope)
click to toggle source
def match_Object(o, scope)
raise ArgumentError, "Cannot transform object of class #{o.class}"
end
match_OrExpression(o, scope)
click to toggle source
def match_OrExpression(o, scope)
left_match = match(o.left_expr, scope)
right_match = match(o.right_expr, scope)
return [left_match, 'or', right_match]
end
match_ParenthesizedExpression(o, scope)
click to toggle source
def match_ParenthesizedExpression(o, scope)
match(o.expr, scope)
end
match_QualifiedName(o, scope)
click to toggle source
def match_QualifiedName(o, scope)
@@evaluator.evaluate(o, scope)
end
match_VariableExpression(o, scope)
click to toggle source
def match_VariableExpression(o, scope)
@@evaluator.evaluate(o, scope)
end
match_unless_nop(query, scope)
click to toggle source
def match_unless_nop(query, scope)
unless query.expr.nil? || query.expr.is_a?(Puppet::Pops::Model::Nop)
match(query.expr, scope)
end
end
query(o, scope)
click to toggle source
def query(o, scope)
@@query_visitor.visit_this_1(self, o, scope)
end
query_AndExpression(o, scope)
click to toggle source
def query_AndExpression(o, scope)
left_code = query(o.left_expr, scope)
right_code = query(o.right_expr, scope)
proc do |resource|
left_code.call(resource) && right_code.call(resource)
end
end
query_ComparisonExpression(o, scope)
click to toggle source
def query_ComparisonExpression(o, scope)
left_code = query(o.left_expr, scope)
right_code = query(o.right_expr, scope)
case o.operator
when :'=='
if left_code == "tag"
if right_code.is_a?(Array)
tags = right_code
else
tags = [ right_code ]
end
tags = tags.collect do |t|
raise ArgumentError, 'Cannot transform a number to a tag' if t.is_a?(Numeric)
t.to_s.downcase
end
proc do |resource|
resource.raw_tagged?(tags)
end
else
proc do |resource|
if (tmp = resource[left_code]).is_a?(Array)
@@compare_operator.include?(tmp, right_code, scope)
else
@@compare_operator.equals(tmp, right_code)
end
end
end
when :'!='
proc do |resource|
!@@compare_operator.equals(resource[left_code], right_code)
end
end
end
query_ConcatenatedString(o, scope)
click to toggle source
def query_ConcatenatedString(o, scope)
@@evaluator.evaluate(o, scope)
end
query_LiteralBoolean(o, scope)
click to toggle source
def query_LiteralBoolean(o, scope)
@@evaluator.evaluate(o, scope)
end
query_LiteralNumber(o, scope)
click to toggle source
def query_LiteralNumber(o, scope)
@@evaluator.evaluate(o, scope)
end
query_LiteralString(o, scope)
click to toggle source
def query_LiteralString(o, scope)
@@evaluator.evaluate(o, scope)
end
query_Object(o, scope)
click to toggle source
def query_Object(o, scope)
raise ArgumentError, "Cannot transform object of class #{o.class}"
end
query_OrExpression(o, scope)
click to toggle source
def query_OrExpression(o, scope)
left_code = query(o.left_expr, scope)
right_code = query(o.right_expr, scope)
proc do |resource|
left_code.call(resource) || right_code.call(resource)
end
end
query_ParenthesizedExpression(o, scope)
click to toggle source
def query_ParenthesizedExpression(o, scope)
query(o.expr, scope)
end
query_QualifiedName(o, scope)
click to toggle source
def query_QualifiedName(o, scope)
@@evaluator.evaluate(o, scope)
end
query_VariableExpression(o, scope)
click to toggle source
def query_VariableExpression(o, scope)
@@evaluator.evaluate(o, scope)
end
query_unless_nop(query, scope)
click to toggle source
def query_unless_nop(query, scope)
unless query.expr.nil? || query.expr.is_a?(Puppet::Pops::Model::Nop)
query(query.expr, scope)
end
end