# File lib/puppet/parser/parser_support.rb, line 343
343:     def newdefine(name, options = {})
344:         name = name.downcase
345:         if @loaded_code.hostclass(name)
346:             raise Puppet::ParseError, "Cannot redefine class %s as a definition" %
347:                 name
348:         end
349:         # Make sure our definition doesn't already exist
350:         if other = @loaded_code.definition(name)
351:             error("%s is already defined at %s:%s; cannot redefine" % [name, other.file, other.line])
352:         end
353: 
354:         ns, whatever = namesplit(name)
355:         args = {
356:             :namespace => ns,
357:             :arguments => options[:arguments],
358:             :code => options[:code],
359:             :parser => self,
360:             :classname => name,
361:             :doc => options[:doc],
362:             :line => options[:line]
363:         }
364: 
365:         [:code, :arguments].each do |param|
366:             args[param] = options[param] if options[param]
367:         end
368: 
369:         @loaded_code.add_definition(name, ast(AST::Definition, args))
370:     end