多言語対応文字列とWikipedia(続き)

2014-02-14の記事で、

>外部サイトのアクセスには十分な時間間隔をあけるようにするのは
>当然のマナーですが、それはAPIを使用する側で配慮するという前提
>で、ライブラリ内ではガードをかけていません。
と書きましたが、Wikipedia利用のために、時間間隔を確保する仕組み
を内部に持つようにしました。

その仕様を文章として整理しておきます。

When::Parts::Locale.wikipedia_interval という新変数で動作を規定

1) When::Wikipedia メソッド

nil : 内部キャッシュにない見出しは Wikipedia から読み込む。
    前回読み込み時刻は考慮しない(デフォルト動作)。
0  : 内部キャッシュのみ使用し、Wikipedia は読まない。
    内部キャッシュにない見出しは例外発生。
非0 : 内部キャッシュにない見出しは Wikipedia から読み込む。
    絶対値を秒数とみなして前回読み込みからの間隔を確保する。

2) 任意の多言語対応文字列の生成

nil または正値 : Wikipedia は参照しない(デフォルト動作)。
0 または負値 : 英語('en')またはデフォルト('') のreference先に
 http://en.wikipedia.org/wiki/... が使われている場合は、内部的
 に Wikipedia メソッドを用いて、その他の言語での情報( names と
 reference) を取得する。

When::Parts::Locale.wikipedia_interval を設定していなければ、従来
通りで、明示的にWhen::Wikipedia メソッドを使った場合のみ Wikipedia
を参照します。0 は内部キャッシュに情報がすべて読み込み済みの
場合の設定で、インターネットに繋がっていない環境を想定しています。
負数の場合、API のユーザが意識しないタイミングでWikipediaを参照
することがあります。[1]

例によってライブラリの公開は次のバージョンです。ただし、trunk
コードはすでに更新しています。

[1] この最後のシチュエーションがあるので、内部的に時間間隔を
  管理するようにしたわけです。

この記事へのコメント

この記事へのトラックバック