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:
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