私が好みとする早川は番号付けからISBNがわかる。
ぱっと判らないのは、ISBN最後の一桁、つまり、チェックディジットの部分。
(
ISBNについては有里さん)
手元に本がなかったり、古い本だったりすると書いてなかったりで、
ISBNを調べる所でまず大変だったり。
ということで bookstore.rb をいじろうとしたのだが、
rubyの正規表現がわからないわからない。
わからないのは正規表現だけじゃないことも思い知る。
やっぱ本いるか?
抜粋
BOOKSTORE = Regexp::compile(/[\((]ISBN(\d-[\d-]{9}[-]?[\w]?)[\))]/)
def bookstore(str, type)
case type
when :P, :UL, :DL
str.gsub!(BOOKSTORE){
isbn = $1
isbn2 = isbn.delete('-')
if isbn2 =~ /^4/
data = 11 - ((((isbn2[0] - 48) * 10) + ((isbn2[1] - 48) * 9) + ((isbn2[2] - 48) * 8) + ((isbn2[3] - 48) * 7) + ((isbn2[4] - 48) * 6) + ((isbn2[5] - 48) * 5) + ((isbn2[6] - 48) * 4) + ((isbn2[7] - 48) * 3) + ((isbn2[8] - 48) * 2)) % 11)
dgt = "0"
dgt[0] = data + 48
if data == 10
dgt = "X"
end
if data == 11
dgt = "0"
end
if isbn2[9,10] != dgt
print "WAR; ISBN-error;" + isbn2 + "\n"
#ただの間違いなら置換、不足なら追加という風に改変が必要
#今はとにかく追加してるだけ
isbn << "-" << dgt
isbn2 << dgt
print "WAR; ISBN-change;" + isbn2 + "\n"
end
t = '【 '
これで
(ISBN4-15-011337)
と書いても
(ISBN4-15-011337-8)
と補完して処理してくれてるはず。
ん、あれ? うまくいかなくなってる。
なんでさっきはうまくいったんだ?