199: def scan_for_resource(container, code)
200: code = [code] unless code.is_a?(Array)
201: code.each do |stmt|
202: scan_for_resource(container,stmt.children) if stmt.is_a?(Puppet::Parser::AST::ASTArray)
203:
204: if stmt.is_a?(Puppet::Parser::AST::Resource) and !stmt.type.nil?
205: begin
206: type = stmt.type.split("::").collect { |s| s.capitalize }.join("::")
207: title = stmt.title.is_a?(Puppet::Parser::AST::ASTArray) ? stmt.title.to_s.gsub(/\[(.*)\]/,'\1') : stmt.title.to_s
208: Puppet.debug "rdoc: found resource: #{type}[#{title}]"
209:
210: param = []
211: stmt.parameters.children.each do |p|
212: res = {}
213: res["name"] = p.param
214: res["value"] = "#{p.value.to_s}" unless p.value.nil?
215:
216: param << res
217: end
218:
219: container.add_resource(PuppetResource.new(type, title, stmt.doc, param))
220: rescue => detail
221: raise Puppet::ParseError, "impossible to parse resource in #{stmt.file} at line #{stmt.line}: #{detail}"
222: end
223: end
224: end
225: end