素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: すかいぷ:javascripter_  か javascripter あっと tsukkun.net skypeのほうがいいです

AutoPagerize for SeaHorseのSITEINFOをJSONに変換するRubyスクリプト

AutoPagerize for SeaHorseをwedata互換形式に変換する - 素人がプログラミングを勉強するブログRuby使って書き直した。

RubyのオブジェクトをJSONにするのライブラリはRuby 用 JSON パーサーを更新、 JSON への変換も追加 - WebOS Goodiesを使っていて、simple-json.rbっていうファイル名で保存してる。

#!/usr/bin/env ruby

require 'open-uri'
require 'rexml/document'
require 'simple-json'
require 'cgi'

result = []
["http://wikiwiki.jp/958/?cmd=source&page=AutoPagerize%2FSITEINFO",
 "http://wikiwiki.jp/958/?cmd=source&page=AutoPagerize%2FSITEINFO2"].each{|url|
  open(url) {|f|
    doc = REXML::Document.new(f)
    text = CGI.unescapeHTML(REXML::XPath.match(doc, 'string(//pre[@id="source"])').first)
    o = nil
    text.each_line{|str|
        m = nil
        if m = /^\s*\*\*\s*([^\[]*)/.match(str)
            o = Hash.new
            result.push({"name"=>m[1], "data"=> o})
        elsif m = /\s*(\w+):\s*'(.*)',/.match(str)
            o[m[1]] = m[2]
        end
    }
  }
}

puts JsonBuilder.new.build(result)

REXML便利だなあ。