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
new(inputStr, query, sourceFileInfo)
click to toggle source
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.
# File lib/taskjuggler/SimpleQueryExpander.rb, line 32 def initialize(inputStr, query, sourceFileInfo) @inputStr = inputStr @query = query.dup @sourceFileInfo = sourceFileInfo end
Public Instance Methods
expand()
click to toggle 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