Skip to content

Instantly share code, notes, and snippets.

@kiwanami
Created December 18, 2011 08:50
Show Gist options
  • Save kiwanami/1492766 to your computer and use it in GitHub Desktop.
Save kiwanami/1492766 to your computer and use it in GitHub Desktop.
Gentoo翻訳まとめページ生成
#!/usr/bin/ruby
# -*- coding: utf-8 -*-
# cvs diff -u -D20111001 -D20111101 -N . 2>/dev/null|egrep 'Index|version|date'
BASE_URL = 'http://www.gentoo.org/doc/ja/'
class Document
def initialize(path)
@path = path
@title = path
@new_flag = true
end
def title(t)
@title = t
end
def plus_version(ver)
@plus_version = ver
end
def minus_version(ver)
@minus_version = ver
@new_flag = false
end
def plus_date(d)
@plus_date = d
end
def minus_date(d)
@minus_date = d
@new_flag = false
end
def new_doc?
@new_flag
end
def to_xml
" <li>
#{_to_xml}
</li>
"
end
def _to_xml
@new_flag ?
"<uri link=\"#{BASE_URL}#{@path}\">#{@title}</uri> (新たな翻訳)" :
"<uri link=\"#{BASE_URL}#{@path}\">#{@title}</uri> (version. #{@minus_version} (#{@minus_date}) → #{@plus_version} (#{@plus_date}))"
end
end
def main
documents = []
current_doc = nil
loop do
line = gets
break unless line
case line
when /^Index: metadoc\.xml/
current_doc = nil
when /^Index: (.*)$/
documents << current_doc if current_doc
current_doc = Document.new(Regexp.last_match[1])
when /^\+ *\<version\>([^<]+)<\/version\>/
current_doc.plus_version(Regexp.last_match[1]) if current_doc
when /^\- *\<version\>([^<]+)<\/version\>/
current_doc.minus_version(Regexp.last_match[1]) if current_doc
when /^\+ *\<date\>([^<]+)<\/date\>/
current_doc.plus_date(Regexp.last_match[1]) if current_doc
when /^\- *\<date\>([^<]+)<\/date\>/
current_doc.minus_date(Regexp.last_match[1]) if current_doc
end
end
documents << current_doc if current_doc
new_documents = documents.select {|i| i.new_doc?}
mod_documents = documents - new_documents
maps = {
'DATE' => '2011-11-01',
'YEAR' => 2011, 'MONTH' => 10,
'NEW_NUM' => new_documents.size,
'STR_NEWDOC' => new_documents.map{|i| i.to_xml },
'STR_MODDOC' => mod_documents.map{|i| i.to_xml },
}
puts (maps.inject(DATA.read) { |acc, i|
k,v = i
acc.gsub("%#{k}%",v.to_s)
})
end
main
__END__
<?xml version='1.0'?>
<?xml-stylesheet href="/xsl/guide.xsl" type="text/xsl"?>
<news gentoo="yes" category="gentoojp">
<poster>naota</poster>
<date>%DATE%</date>
<title>翻訳プロジェクト%MONTH%月の活動内容</title>
<body>
<p>
GentooJP翻訳プロジェクト%YEAR%年%MONTH%月の活動内容を公表します。
%MONTH%月はx86/amd64/PPCハンドブックおよび新たな%NEW_NUM%つのドキュメントの翻訳を行ないました。
先月の3名の方の翻訳を反映しました。
</p>
<ul>
%STR_NEWDOC%
%STR_MODDOC%
</ul>
<p>
GentooJP翻訳プロジェクトは引き続き、特に迅速な更新が望まれる次の文書に対して、翻訳者を募集しています。
</p>
<ul>
<li>
<uri link="http://www.gentoo.org/doc/ja/handbook/">Gentoo ハンドブック</uri>
</li>
<li>
<uri link="http://www.gentoo.org/doc/ja/openrc-migration.xml">BaselayoutとOpenRCの移行ガイド</uri>
</li>
<li>
<uri link="http://www.gentoo.org/doc/ja/gentoo-x86-quickinstall.xml">Gentoo Linux x86クイックインストールガイド</uri>
</li>
<li>
<uri link="http://www.gentoo.org/doc/ja/xorg-config.xml">X サーバー設定ガイド</uri>
</li>
<li>
<uri link="http://www.gentoo.org/doc/ja/alsa-guide.xml">Gentoo Linux ALSA ガイド</uri>
</li>
</ul>
<p>
翻訳に興味があり参加してみたい方は、ぜひ<uri link="http://www.gentoo.gr.jp/jpmain/translation.xml">GentooJP翻訳プロジェクト</uri>
をご覧ください。
</p>
</body>
</news>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment