中庸が目標

日記系になるのだろうか。予定は未定。 発言したいときには発言できないと。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Rubricksで遊ぶ

今日は、なぜか Rubricks で遊んでいた。 必要はないのですが。 はて。

そしたら突然、Internal error 500と返してきて困った。 よく読んでみると、こんなメッセージがあった。

NoMethodError: private method `to_date' called for Wed Sep 05 05:05:23 -0500 2007:Time

どうやら、 ここ で紹介している こんなエラー らしい。 Rails内active_supportが定義しているto_dateを Time#to_dateが上書きしてしまうのがエラーの原因らしい。 で、Time#to_dateをprivateで定義して、その解決を図ったのが これ

結果から言うと、以下のファイルを更新すれば動いた。

  • activesupport/lib/active_support/core_ext/time.rb
  • activesupport/lib/active_support/core_ext/time/conversions.rb
  • activesupport/lib/active_support/core_ext/time/behavior.rb

ま、現時点での、rev. 6099での話なのだが。 で、bihavior.rbは6099ではdiffされていないが、5951で新たに作られたらしい。 ので、これも追加。 3つのファイルを(上書き)保存しただけで動いた。 なんと泥縄な。

上のブログ では

Railsのほうで、to_dateを使わないで実装するのがいいのかな?

ともあったのだが、良い塩梅に開発されたらしく、 コーディングの際に気を付けなくてよくなった。 すばらしい。

スポンサーサイト

blockquote

rd書いているときでも、引用したいときがある。 preじゃなくて、blockquoteしたいときがある。 rdでは切り捨てられた表現力を使いたいときもある。 htmlダウンマーキングな今は。

ということで、 私家版rd2html-quote-lib.rbを書いてみた。 そのソースは後に載せるとして。 使用法をば。

|12345678901234567890
|  >Q> hogehoge
|  >Q> fugafuga

とfoo.rbというファイルに書くと、

<blockquote>
hogehoge
fugafuga
</blockquote>

と変換してくれる。

で、

rd2 -r rd/rd2html-quote-lib foo.rb

とすれば終了。 面倒ならこれをバッチファイルなどで別名に登録すれば良い

rd2 -r rd/rd2html-quote-lib %1

当方win環境なのでこんなかんじ。

こんなんでそれなりに快適に暮らせそう。

ということで、以下、ソースファイル。

=begin
= rd2html-quote-lib.rb
=end

require "cgi"
require "rd/rd2html-lib"


#Only,
#  >Q> hogehoge
#will be changed into 
#  <blockquote>
#  hogehoge
#  </blockquote>
#
#Next rb file will be changed.
#  CODE:quote.rb
#  =begin
#  TextBlock1
#    >Q> Quote1
#    >Q> Quote2
#  TexpBlock2
#      Verbatim1
#      Verbatim2
#     > Verbatim3
#     >> Verbatim4
#     >>> Verbatim5
#  =end
#
#to
#
#  L:\work>blog.bat quote.rd
#  blog.bat quote.rd
#  
#  L:\work>rd2 -r rd/rd2html-quote-lib quote.rd 
#  
#  <?xml version="1.0" ?>
#  <!DOCTYPE html 
#    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
#    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
#  <html xmlns="http://www.w3.org/1999/xhtml">
#  <head>
#  <title>quote.rd</title>
#  </head>
#  <body>
#  <p>TextBlock1</p>
#  <BLOCKQUOTE>
#  Quote1
#  Quote2
#  </BLOCKQUOTE>
#  
#  <p>TextBlock2</p>
#  <PRE>
#  Verbatim1
#  Verbatim2
#  </PRE>
#  
#  <PRE>
#  &gt; Verbatim3
#  &gt;&gt; Verbatim4
#  &gt;&gt;&gt; Verbatim5
#  </PRE>
#  
#  
#  </body>
#  </html>
#

module RD
  class RD2HTMLQuoteVisitor < RD2HTMLVisitor
    # must-have constants
    OUTPUT_SUFFIX = "html"
    INCLUDE_SUFFIX = ["html"]

    METACHAR = { "<" => "&lt;", ">" => "&gt;", "&" => "&amp;" }

    def apply_to_Verbatim(element)
      content = []
      quote = false
      element.each_line do |i|
	quote = if i =~ /^>Q> / then true else false end
	i = i.gsub(/^>Q> /, '') if quote 
        content.push(apply_to_String(i))
      end
      if quote
        %Q[<BLOCKQUOTE>\n#{content.join("")}</BLOCKQUOTE>\n]
      else
        %Q[<PRE>\n#{content.join("")}</PRE>\n]
      end
    end
  end # RD2HTMLQuoteVisitor
end # RD

$Visitor_Class = RD::RD2HTMLQuoteVisitor
$RD2_Sub_OptionParser = "rd/rd2html-opt"

ama2bib_by_author.rb

以前、isbn2bibtex.rbというスクリプトを書いたのですが、今回は著者で検索できないかと挑戦してみました。

まず、使用した感じを見てもらいましょうか。

c:\0mine\work>ruby ama2bib_by_author.rb "米澤穂信"
ruby ama2bib_by_author.rb "米澤穂信"
@Book{,
author = {{米澤 穂信(著)}},
title = {{ ボトルネック }},
publsher = {{ 新潮社 }},
year = { 2006-08-30 },
annote = { },
ISBN = { 4103014717 }
}
@Book{,
author = {{米澤 穂信(著)}},
title = {{ 春期限定いちごタルト事件 }},
publsher = {{ 東京創元社 }},
year = { 2004-12-18 },
annote = { },
ISBN = { 4488451012 }
}
@Book{,
author = {{米澤 穂信(著)}},
title = {{ 夏期限定トロピカルパフェ事件 }},
publsher = {{ 東京創元社 }},
year = { 2006-04-11 },
annote = { },
ISBN = { 4488451020 }
}
@Book{,
author = {{米澤 穂信(著)}},
title = {{ さよなら妖精 }},
publsher = {{ 東京創元社 }},
year = { 2006-06-10 },
annote = { },
ISBN = { 4488451039 }
}
@Book{,
author = {{米澤 穂信(著)}},
title = {{ クドリャフカの順番―「十文字」事件 }},
publsher = {{ 角川書店 }},
year = { 2005-07 },
annote = { },
ISBN = { 4048736183 }
}
@Book{,
author = {{米澤 穂信(著)}},
title = {{ 氷菓 }},
publsher = {{ 角川書店 }},
year = { 2001-10 },
annote = { },
ISBN = { 4044271011 }
}
@Book{,
author = {{米澤 穂信(著)}},
title = {{ 愚者のエンドロール }},
publsher = {{ 角川書店 }},
year = { 2002-07 },
annote = { },
ISBN = { 404427102X }
}
@Book{,
author = {{米澤 穂信(著)}},
title = {{ 犬はどこだ }},
publsher = {{ 東京創元社 }},
year = { 2005-07-21 },
annote = { },
ISBN = { 4488017185 }
}
@Book{,
author = {{米澤 穂信(著)}},
title = {{ さよなら妖精 }},
publsher = {{ 東京創元社 }},
year = { 2004-02 },
annote = { },
ISBN = { 4488017037 }
}

と、ぞろぞろーっと出てきます。 スクリプト万歳。

注意事項として、たくさんヒットするキーワードで検索するとしばらく反応がありません。 そこのところは考慮して使ってくださいな。 興味のある方はどうぞ。 使用にあたりましては自己責任でお願いします。 僕のような素人の個人使用では保証できませんので。

スクリプトは ama2bib_by_author.rb.txt として置いておきましょう。 拡張子は適当に処理してください。

こういじってみるとamazon4.rbはステキなスクリプトですね。 あらためてそう思います。

Rubyサイトリニューアル

サイトリニューアルしていたんですね。
tDiaryみたいなのから、ブログっぽくなりましたね。
それと、なんか情報が探しやすくなった気がします。リンク切れとかも無いですし。

オブジェクト指向スクリプト言語 Ruby


isbn2bibtex

以前のエントリーで、 僕はmeadow(emacs)を使ってhowmに書籍のメモを書くと書いた。 で、正直にbibtexのデータを入力するのが面倒だとも。 そこで、ISBNを入力すればbibtexを出力してくれるステキなスクリプトはないかと探した。 あれば便利だと思った。

そんなスクリプトを探したのだが、海外版のものしかなかった。 それでは日本語の書籍が入力できそうにない。 だから、自分で日本語を出力できるものを適当にでっち上げてみた。 そんなわけで、このスクリプトによる被害が出ても責任は取れない。 自己責任で興味があれば、どうぞ。

isbn2bibtex.rb

Path: isbn2bibtex.rb
Last Update: Wed Mar 01 14:22:32 LMT 2006

文献を管理することは重要である。 文献は大きく分けて論文と書籍に分けられる。 今まで論文データ入力支援ツールはあったが、 書籍データ入力支援ツールはない(というか、見つけられなかった)。 このスクリプトを用いれば、管理に必要な書籍データの入力量を大幅に減らせる。

特徴

ISBNを入力してあるファイルを元に、bibtex形式で出力します。 書籍情報はwww.amazon.co.jpから収集します。

前提

本スクリプト動作に必要な環境は以下の通りです。

  • wwwに接続している。
  • rubyが動作する。
  • not(のとや)さん作の amazon4.rb が動作する。

使うには

  1. isbn2bibtex.rbを適当な場所に保存してください。(isbn2bibtex.rb.txtの拡張子を変更。 )
  2. isbn2bibtex.rbと同じディレクトリにnot(のとや)さん作 amazon4.rb を保存してください。
  3. isbnを入力したisbn.listを同じディレクトリに作成してください。
  4. 端末上で以下のように入力してださい。
  ruby isbn2bibtex.rb < isbn.list

使い方

  ruby isbn2bibtex.rb < isbn.list > output.bibtex.file
isbn.list :10桁の(英)数字からなるリスト。空行はエラーになる。 該当するISBNがなくてもエラーになる。
output.bibtex.file :出力先のbibファイル。データ追加なら >> に変更。

使用例

  C:\0mine\work>type isbn.list
  4488451012

  C:\0mine\work>ruby isbn2bibtex.rb < isbn.list
  @Book{,
    author = {{米澤 穂信(著)}},
    title = {{ 春期限定いちごタルト事件 }},
    publsher = {{ 東京創元社 }},
    year = { 2004-12-18 },
    annote = { },
    ISBN = { 4488451012 }
  }
  isbn2bibtex.rb:49: private method `chop' called for nil:NilClass (NoMethodError)

最後のchopはオマケみたいなもんです。 元のisbn.listで空白行があると怒られます。 直し方分かる人教えてください。

スクリプトからの呼出し例

スクリプト最後尾。

  aws = Amazon::WebService::new
  item = aws.itemlookup('4488451012')
  puts item.to_text_book

実行結果。

  C:\0mine\work>ruby isbn2bibtex.rb
  @Book{,
    author = {{米澤 穂信(著)}},
    title = {{ 春期限定いちごタルト事件 }},
    publsher = {{ 東京創元社 }},
    year = { 2004-12-18 },
    annote = { },
    ISBN = { 4488451012 }
  }

TODO

  • エラー処理
    • Amazon.co.jp に繋がらない場合
    • Amazon.co.jp で捜したけどISBNが見つからない場合
    • 一致するISBNは見つかったけど、途中の文字列が無い場合
  • Amazon.co.jp以外への対応

Required files

amazon4.rb  

これと全く同じ文書を見つけてもそっとしてください。 それは僕の書いた文書です。 多分。 誰かが盗用しない限り。

次のページ

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。