Slmame blog 環境変数名の一覧取得

Asuka Neely

2008年06月25日 03:12


前回、トップページか個別ページ、あるいはアーカイブページそれぞれのテンプレートから、それぞれに含まれる環境変数を一覧化するソースコードを載せました。ですが、それぞれのテンプレート内変数は共通して使えるため、重複がない状態で合わせたリストが必要となってきます。

どうせなので、3つテンプレートのデータをそれぞれ3つのテキスト内に保存した状態で、引数指定で実行すると、重複を取り除いた状態でリスト化するコードを書いてみました。

$ruby GetEnvList.rb Toppage.txt EachPage.txt Archive.txt

トップページテンプレートをToppage.txt、個別ページテンプレートをEachPage.txt、アーカイブページテンプレートをArchive.txtに入れて実行します。result_envs.txtが出力されるはずです。

GetEnvList.rb


Ary = [$*[0].to_s,$*[1].to_s,$*[2].to_s]
envAry = []
Ary.each {|filename|
perfile = open(filename,"r")
inData = perfile.read
result = inData.scan(/<%[^%]+%>/)
result.each {|i| envAry[envAry.size] = i}
}

defcnt = 0
delcnt = 1
defarycnt = envAry.length
while defcnt < defarycnt
if envAry[defcnt] == envAry[delcnt] then
envAry[delcnt] = nil
end
delcnt += 1
if delcnt == envAry.size then
defcnt += 1
delcnt = defcnt + 1
end
end

cenvAry = envAry.compact
setEnv = open("result_envs.txt","w")
cenvAry.each {|line| setEnv.puts line}
setEnv.close

Slmame Template