#<RDoc::Comment:0x22b4b424>
#<RDoc::Comment:0x22f41e70>
#<RDoc::Comment:0x22fd9c70>
#<RDoc::Comment:0x23097d24>
#<RDoc::Comment:0x231582b8>
#<RDoc::Comment:0x231fa388>
#<RDoc::Comment:0x2327cd9c>
#<RDoc::Comment:0x23309134>
#<RDoc::Comment:0x2339b174>
#<RDoc::Comment:0x234319e4>
#<RDoc::Comment:0x23501694>
#<RDoc::Comment:0x2359bed8>
#<RDoc::Comment:0x2360e94c>
#<RDoc::Comment:0x21fdfdb0>
#<RDoc::Comment:0x21611dd8>
#<RDoc::Comment:0x2182ab60>
#<RDoc::Comment:0x2277a5e8>
#<RDoc::Comment:0x2280970c>
#<RDoc::Comment:0x2298ac34>
#<RDoc::Comment:0x229cb964>
#<RDoc::Comment:0x22b2e57c>
#<RDoc::Comment:0x22e98960>
#<RDoc::Comment:0x22efb63c>
#<RDoc::Comment:0x22f2cea8>
#<RDoc::Comment:0x2309da44>
#<RDoc::Comment:0x2313d01c>
#<RDoc::Comment:0x23218f68>
#<RDoc::Comment:0x2329e320>
# File lib/puppet/parser/parser_support.rb, line 99 def initialize(env) # The environment is needed to know how to find the resource type collection. @environment = env.is_a?(String) ? Puppet::Node::Environment.new(env) : env initvars end
# File lib/puppet/parser/parser.rb, line 2504 def _reduce_none(val, _values, result) val[0] end
Add context to a message; useful for error messages and such.
# File lib/puppet/parser/parser_support.rb, line 25 def addcontext(message, obj = nil) obj ||= @lexer message += " on line #{obj.line}" if file = obj.file message += " in file #{file}" end message end
Create an AST array containing a single element
# File lib/puppet/parser/parser_support.rb, line 37 def aryfy(arg) ast AST::ASTArray, :children => [arg] end
Create an AST object, and automatically add the file and line information if available.
# File lib/puppet/parser/parser_support.rb, line 43 def ast(klass, hash = {}) klass.new ast_context(klass.use_docs, hash[:line]).merge(hash) end
# File lib/puppet/parser/parser_support.rb, line 47 def ast_context(include_docs = false, ast_line = nil) result = { :line => ast_line || lexer.line, :file => lexer.file } result[:doc] = lexer.getcomment(result[:line]) if include_docs result end
The fully qualifed name, with the full namespace.
# File lib/puppet/parser/parser_support.rb, line 57 def classname(name) [@lexer.namespace, name].join("::").sub(/^::/, '') end
# File lib/puppet/parser/parser_support.rb, line 61 def clear initvars end
Raise a Parse error.
# File lib/puppet/parser/parser_support.rb, line 66 def error(message, options = {}) if brace = @lexer.expected message += "; expected '%s'" end except = Puppet::ParseError.new(message) except.line = options[:line] || @lexer.line except.file = options[:file] || @lexer.file raise except end
# File lib/puppet/parser/parser_support.rb, line 79 def file=(file) unless FileTest.exist?(file) unless file =~ /\.pp$/ file = file + ".pp" end end raise Puppet::AlreadyImportedError, "Import loop detected" if known_resource_types.watching_file?(file) watch_file(file) @lexer.file = file end
# File lib/puppet/parser/parser_support.rb, line 95 def import(file) known_resource_types.loader.import(file, @lexer.file) end
Initialize or reset all of our variables.
# File lib/puppet/parser/parser_support.rb, line 106 def initvars @lexer = Puppet::Parser::Lexer.new end
Split an fq name into a namespace and name
# File lib/puppet/parser/parser_support.rb, line 111 def namesplit(fullname) ary = fullname.split("::") n = ary.pop || "" ns = ary.join("::") return ns, n end
# File lib/puppet/parser/parser_support.rb, line 118 def on_error(token,value,stack) if token == 0 # denotes end of file value = 'end of file' else value = "'#{value[:value]}'" end error = "Syntax error at #{value}" if brace = @lexer.expected error += "; expected '#{brace}'" end except = Puppet::ParseError.new(error) except.line = @lexer.line except.file = @lexer.file if @lexer.file raise except end
how should I do error handling here?
# File lib/puppet/parser/parser_support.rb, line 138 def parse(string = nil) if self.file =~ /\.rb$/ main = parse_ruby_file else self.string = string if string begin @yydebug = false main = yyparse(@lexer,:scan) rescue Puppet::ParseError => except except.line ||= @lexer.line except.file ||= @lexer.file raise except rescue => except raise Puppet::ParseError.new(except.message, @lexer.file, @lexer.line, except) end end # Store the results as the top-level class. return Puppet::Parser::AST::Hostclass.new('', :code => main) ensure @lexer.clear end
# File lib/puppet/parser/parser_support.rb, line 160 def parse_ruby_file Puppet.deprecation_warning("Use of the Ruby DSL is deprecated.") # Execute the contents of the file inside its own "main" object so # that it can call methods in the resource type API. main_object = Puppet::DSL::ResourceTypeAPI.new main_object.instance_eval(File.read(self.file)) # Then extract any types that were created. Puppet::Parser::AST::ASTArray.new :children => main_object.instance_eval { @__created_ast_objects__ } end