01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
cf. http://homepage2.nifty.com/mekkie/peace/iraq/news/023.html http://homepage2.nifty.com/mekkie/peace/iraq/news/011.html および、すべての研究開発支援、製造の諸施設。」 理・製造施設。」% ruby inst.rb% mv -f A5BDA5D5A5C8A5A6A5A7A5A22F* /project/nile-wiki/wiki/% chmod a+w /project/nile-wiki/wiki/*.txt% sudo chown nobody:nobody /project/nile-wiki/wiki/*.txt#!/usr/local/bin/rubyrequire "time"class SoftInfo attr_reader :info PATTERN_HASH = { /<li>インストールしたもの :([^<]*)<\/li>/i => "name", /<li>バージョン(パッチレベル):([^<]*)<\/li>/i => "version", /<li>簡単な説明 :([^<]*)<\/li>/i => "desc", /<li>インストール先 :([^<]*)<\/li>/i => "dest", /<li>インストールした人 :([^<]*)<\/li>/i => "person", /<li>日付 :([^<]*)<\/li>/i => "date", /<li>マニュアル :([^<]*)<\/li>/i => "man", /<li>入手経路 :([^<]*)<\/li>/i => "from", /<li>ソースの置き場所 :([^<]*)<\/li>/i => "src", /<li>関連ファイル :([^<]*)<\/li>/i => "related", /<li>インストールの際の変更点 :(.*?)<\/li>/mi => "change", /<li>\[ その他 \](.*?)<\/li>/mi => "misc", /<li>\[ 注意事項 \](.*?)<\/li>/mi => "note", } def initialize(str) @info = {} str = str.gsub(/\r/, "") PATTERN_HASH.keys.each do |pat| if pat =~ str data = $1 data = data.gsub(/<br>/i, "\n") data = data.strip if data =~ /^\s*<pre>(.*)<\/pre>\s*$/mim data = $1 end @info[PATTERN_HASH[pat]] = data end end if info["date"] and info["date"] =~ /^(\d+)\/(\d+)\/(\d+)$/ year = $3.to_i info["date"] = sprintf("%04d-%s-%s", year > 90 ? year+1900 : year+2000, $1, $2) end endenddef to_wikifilename (str) wiki_pagename = str if wiki_pagename =~ /^([^(]*)\(/ wiki_pagename = $1 end wiki_pagename = "ソフトウェア/" + wiki_pagename.strip.gsub(/[\s\/:]+/, "_") puts wiki_pagename wiki_pagename = wiki_pagename.unpack("H*")[0].upcase + ".txt"enddef to_prestr (str) if str and str.length > 0 str.gsub(/^/, " ") else str endendcontents = File.open("inst").read.chompcontents = contents.split(/<hr>/i).grep(/§/)list = []contents.each do |e| list.push SoftInfo.new(e)endlist.each do |e| wiki_pagename = to_wikifilename(e.info["name"]) File.open(wiki_pagename, "a+") {|f| f.print <<EOF* #{e.info["name"]}-名称: #{e.info["name"]}-概要(簡単な説明): #{e.info["desc"]}-Webサイト: #{e.info["from"]}-関連URL:** 使い方など#{to_prestr(e.info["misc"])}#{to_prestr(e.info["note"])} } t = Time.parse(e.info["date"]) File.utime(t, t, wiki_pagename)