
Untitled
By: a guest on
May 8th, 2012 | syntax:
None | size: 1.03 KB | hits: 12 | expires: Never
require 'mechanize'
module ArrayToSelfConvert
def self.included(klass)
methods = ::Array.public_instance_methods(true) - ::Kernel.public_instance_methods(false)
methods |= ["to_s","to_a","inspect","==","=~","==="]
methods.each {|method|
define_method(method) {|*args, &block|
res = super(*args, &block)
if res.class == Array && method != 'to_a'
cloned = deep_clone ? Marshal.load(Marshal.dump(self)) : self.dup
cloned.clear.concat(res)
else
res
end
}
}
end
attr_accessor :deep_clone
end
class Dajare < Array
include ArrayToSelfConvert
def initialize
alice = Mechanize.new
page = alice.get("https://youpy.jottit.com/dajare")
page.root.xpath("//div[@id='content']/ul/li").map{|x| x.text}.each_with_index{|e,i| self[i] = e}
end
def save
# jottit に書き戻す処理をここに書く
end
end
d = Dajare.new
p d.class
d.each{|dajare| puts dajare}
#thx to secondlife http://subtech.g.hatena.ne.jp/secondlife/20110615/1308132468