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/ruby
require "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
end
end
def 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"
end
def to_prestr (str)
if str and str.length > 0
str.gsub(/^/, " ")
else
str
end
end
contents = File.open("inst").read.chomp
contents = contents.split(/<hr>/i).grep(/§/)
list = []
contents.each do |e|
list.push SoftInfo.new(e)
end
list.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)