Class: TaskJuggler::SimpleQueryExpander
- Includes:
- MessageHandler
- Defined in:
- lib/taskjuggler/SimpleQueryExpander.rb
Overview
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.
Instance Method Summary collapse
- #expand ⇒ Object
-
#initialize(inputStr, query, sourceFileInfo) ⇒ SimpleQueryExpander
constructor
inputStr is the String with the embedded queries.
Methods included from MessageHandler
#critical, #debug, #error, #fatal, #info, #warning
Constructor Details
#initialize(inputStr, query, sourceFileInfo) ⇒ SimpleQueryExpander
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.
32 33 34 35 36 |
# File 'lib/taskjuggler/SimpleQueryExpander.rb', line 32 def initialize(inputStr, query, sourceFileInfo) @inputStr = inputStr @query = query.dup @sourceFileInfo = sourceFileInfo end |
Instance Method Details
#expand ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/taskjuggler/SimpleQueryExpander.rb', line 38 def # 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 |