次のコードで、多くのメソッドParser
を持つクラスを作成します。parse_something
最後に、それらはparse
メソッドでマージされます。
class Parser
def parse(html)
@data = Nokogiri.HTML(open(html))
merged_hashes = {}
array_of_hashes = [
parse_department,
parse_super_saver,
parse_new_arrivals,
parse_out_of_stock,
parse_categories,
parse_results
]
array_of_hashes.inject(merged_hashes,:update)
return merged_hashes
end
def parse_department
department = @data.css('#ref_2619534011')
@department_hash = {}
department.css('li').drop(1).each do | department |
department_title = department.css('.refinementLink').text
department_count = department.css('.narrowValue').text[/[\d,]+/].delete(",").to_i
@department_hash[:department] ||= {}
@department_hash[:department]["Pet Supplies"] ||= {}
@department_hash[:department]["Pet Supplies"][department_title] = department_count
end
return @department_hash
end
def parse_super_saver
(等...)
だから今、私はそれを次のように使用しています:
def html_pet_supplies
File.open("amazon_pet_supplies.html")
end
Parser.new.parse html_pet_supplies
しかし、代わりに次のように使用したいと思います。Parser.parse html_pet_supplies
削除しようとしnew
ましたが、次のエラーが発生しました。
NoMethodError: Parser:Class の未定義のメソッド `parse'
私がするようにコードを変更する最も簡単な方法は何Parser.parse
ですか?