Server IP : 172.67.158.161 / Your IP : 18.117.185.12 Web Server : LiteSpeed System : Linux business53.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : giankuin ( 1871) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/pops/evaluator/ |
Upload File : |
# This module is an integral part of the evaluator. It deals with the concern of validating # external syntax in text produced by heredoc and templates. # require_relative '../../../puppet/plugins/syntax_checkers' module Puppet::Pops::Evaluator::ExternalSyntaxSupport def assert_external_syntax(_, result, syntax, reference_expr) # ignore 'unspecified syntax' return if syntax.nil? || syntax == '' checker = checker_for_syntax(nil, syntax) # ignore syntax with no matching checker return unless checker # Call checker and give it the location information from the expression # (as opposed to where the heredoc tag is (somewhere on the line above)). acceptor = Puppet::Pops::Validation::Acceptor.new() checker.check(result, syntax, acceptor, reference_expr) if acceptor.error_count > 0 checker_message = "Invalid produced text having syntax: '#{syntax}'." Puppet::Pops::IssueReporter.assert_and_report(acceptor, :message => checker_message) raise ArgumentError, _("Internal Error: Configuration of runtime error handling wrong: should have raised exception") end end # Finds the most significant checker for the given syntax (most significant is to the right). # Returns nil if there is no registered checker. # def checker_for_syntax(_, syntax) checkers_hash = Puppet.lookup(:plugins)[Puppet::Plugins::SyntaxCheckers::SYNTAX_CHECKERS_KEY] checkers_hash[lookup_keys_for_syntax(syntax).find {|x| checkers_hash[x] }] end # Returns an array of possible syntax names def lookup_keys_for_syntax(syntax) segments = syntax.split(/\+/) result = [] loop do result << segments.join("+") segments.shift break if segments.empty? end result end end