Module: Puppet::Pops::Evaluator::ExternalSyntaxSupport
- Included in:
- EvaluatorImpl, Validation::Checker4_0
- Defined in:
- lib/puppet/pops/evaluator/external_syntax_support.rb
Instance Method Summary collapse
- #assert_external_syntax(_, result, syntax, reference_expr) ⇒ Object
-
#checker_for_syntax(_, syntax) ⇒ Object
Finds the most significant checker for the given syntax (most significant is to the right).
-
#lookup_keys_for_syntax(syntax) ⇒ Object
Returns an array of possible syntax names.
Instance Method Details
#assert_external_syntax(_, result, syntax, reference_expr) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/puppet/pops/evaluator/external_syntax_support.rb', line 8 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 = "Invalid produced text having syntax: '#{syntax}'." Puppet::Pops::IssueReporter.assert_and_report(acceptor, :message => ) raise ArgumentError, _("Internal Error: Configuration of runtime error handling wrong: should have raised exception") end end |
#checker_for_syntax(_, syntax) ⇒ Object
Finds the most significant checker for the given syntax (most significant is to the right). Returns nil if there is no registered checker.
31 32 33 34 |
# File 'lib/puppet/pops/evaluator/external_syntax_support.rb', line 31 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 |
#lookup_keys_for_syntax(syntax) ⇒ Object
Returns an array of possible syntax names
37 38 39 40 41 42 43 44 45 46 |
# File 'lib/puppet/pops/evaluator/external_syntax_support.rb', line 37 def lookup_keys_for_syntax(syntax) segments = syntax.split(/\+/) result = [] loop do result << segments.join("+") segments.shift break if segments.empty? end result end |