class TaskJuggler::SimpleQueryExpander
The SimpleQueryExpander
class is used to replace embedded attribute queries in a string with the value of the attribute. The embedded queries must have the form <-name-> where name is the name of the attribute. The Query
class is used to determine the value of the attribute within the context of the query.
Public Class Methods
Source
# File lib/taskjuggler/SimpleQueryExpander.rb, line 32 def initialize(inputStr, query, sourceFileInfo) @inputStr = inputStr @query = query.dup @sourceFileInfo = sourceFileInfo end
inputStr is the String
with the embedded queries. query is the Query
with that provides the evaluation context. messageHandle is a MessageHandler
that will be used for error reporting. sourceFileInfo is a SourceFileInfo reference used for error reporting.
Public Instance Methods
Source
# File lib/taskjuggler/SimpleQueryExpander.rb, line 38 def expand # Create a copy of the input string since we will modify it. str = @inputStr.dup # The scenario name is not an attribute that can be queried. We need to # handle this separately if @query.scenarioIdx str.gsub!(/<-scenario->/, @query.project.scenario(@query.scenarioIdx).id) end # Replace all occurences of <-name->. str.gsub!(/<-[a-zA-Z][_a-zA-Z]*->/) do |match| attribute = match[2..-3] @query.attributeId = attribute @query.process if @query.ok @query.to_s else # The query failed. We report an error. error('sqe_expand_failed', "Unknown attribute #{attribute}", @sourceFileInfo) end end str end