Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 8th, 2012  |  syntax: None  |  size: 1.03 KB  |  hits: 12  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. require 'mechanize'
  2. module ArrayToSelfConvert
  3.   def self.included(klass)
  4.     methods = ::Array.public_instance_methods(true) - ::Kernel.public_instance_methods(false)
  5.     methods |= ["to_s","to_a","inspect","==","=~","==="]
  6.     methods.each {|method|
  7.       define_method(method) {|*args, &block|
  8.         res = super(*args, &block)
  9.         if res.class == Array && method != 'to_a'
  10.           cloned = deep_clone ? Marshal.load(Marshal.dump(self)) : self.dup
  11.           cloned.clear.concat(res)
  12.         else
  13.           res
  14.         end
  15.       }
  16.     }
  17.   end
  18.   attr_accessor :deep_clone
  19. end
  20.  
  21. class Dajare < Array
  22.   include ArrayToSelfConvert
  23.   def initialize
  24.     alice = Mechanize.new
  25.     page = alice.get("https://youpy.jottit.com/dajare")
  26.     page.root.xpath("//div[@id='content']/ul/li").map{|x| x.text}.each_with_index{|e,i| self[i] = e}
  27.   end
  28.  
  29.   def save
  30.     # jottit に書き戻す処理をここに書く
  31.   end
  32. end
  33.  
  34. d = Dajare.new
  35. p d.class
  36. d.each{|dajare| puts dajare}
  37.  
  38. #thx to secondlife http://subtech.g.hatena.ne.jp/secondlife/20110615/1308132468