diff options
| author | Max Martin <max@puppetlabs.com> | 2011-04-13 17:30:44 -0700 |
|---|---|---|
| committer | Max Martin <max@puppetlabs.com> | 2011-04-13 17:30:44 -0700 |
| commit | 3dde838ac992571e13262ea29ba3a0eb8152e753 (patch) | |
| tree | 90520cf62bfa2f1bb9c992bbfe1bc47ae10471f2 /lib/puppet/parser/templatewrapper.rb | |
| parent | fe45c2417af580597cd39adec96a30a05a7cd66a (diff) | |
| parent | 3ab44c7ce01ab86a995deb66228f5be95239c92a (diff) | |
| download | puppet-3dde838ac992571e13262ea29ba3a0eb8152e753.tar.gz puppet-3dde838ac992571e13262ea29ba3a0eb8152e753.tar.xz puppet-3dde838ac992571e13262ea29ba3a0eb8152e753.zip | |
Merge branch 'next'
* next: (204 commits)
Revert "(#6928) Removed --ignoreimport"
Updated CHANGELOG for 2.6.8rc1
(#6928) Removed --ignoreimport
(#6928) Remove --parseonly
(#6928) Add a Parser face with Validate action
(#6830) Fix sha1 to digest/sha1 require issue for Ruby 1.9
(#6830) Fix UTF-8 encoding issue for Ruby 1.9
(#6830) Fix string method sub call on a symbol for Ruby 1.9
(#2331) Remove darwinports pkg provider, replace with rewritten macports provider
(#7059) handle inherited action binding scope
maint: ensure we handle '-foo=' options correctly in faces.
(#2150) Fix File const lookup when configuring routes
Fixed #7082 - Added system support for groups
maint: install erb templates under lib/
maint: clean up the spec test headers in bulk.
(#7056) Use 'face' rather than 'faces' in the production code.
maint: eliminate deprecated since 2008 code from Puppet.
(#6117) Add POST support to indirector requests
(#6962) Move option handling into #parse_options, not #preinit.
maint: whitespace cleanup for puppet/util/command_line.
...
Diffstat (limited to 'lib/puppet/parser/templatewrapper.rb')
| -rw-r--r-- | lib/puppet/parser/templatewrapper.rb | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/lib/puppet/parser/templatewrapper.rb b/lib/puppet/parser/templatewrapper.rb index 6864aa1a9..180a03dc9 100644 --- a/lib/puppet/parser/templatewrapper.rb +++ b/lib/puppet/parser/templatewrapper.rb @@ -18,13 +18,14 @@ class Puppet::Parser::TemplateWrapper @__scope__ end + def script_line + # find which line in the template (if any) we were called from + caller.find { |l| l =~ /#{file}:/ }.first[/:(\d+):/,1] + end + # Should return true if a variable is defined, false if it is not def has_variable?(name) - if scope.lookupvar(name.to_s, false) != :undefined - true - else - false - end + scope.lookupvar(name.to_s, :file => file, :line => script_line) != :undefined end # Allow templates to access the defined classes @@ -55,15 +56,13 @@ class Puppet::Parser::TemplateWrapper # the missing_method definition here until we declare the syntax finally # dead. def method_missing(name, *args) - # We have to tell lookupvar to return :undefined to us when - # appropriate; otherwise it converts to "". - value = scope.lookupvar(name.to_s, false) + value = scope.lookupvar(name.to_s,:file => file,:line => script_line) if value != :undefined return value else # Just throw an error immediately, instead of searching for # other missingmethod things or whatever. - raise Puppet::ParseError, "Could not find value for '#{name}'" + raise Puppet::ParseError.new("Could not find value for '#{name}'",@file,script_line) end end @@ -103,6 +102,7 @@ class Puppet::Parser::TemplateWrapper result = nil benchmark(:debug, "Interpolated template #{template_source}") do template = ERB.new(self.string, 0, "-") + template.filename = file result = template.result(binding) end |
