警告
警告 –
Structures_BibTex での警告の使用法
概要
Structures_BibTex クラスには、
パース中に発生した警告を収集する仕組みがあります。
「警告」とは、BibTex ソース中にある、
間違ってはいるが処理を中断させるほどでもないもののことです、
例えば、cite エントリが重複している場合などがあてはまります。
これらの警告を参考にすると、BibTex コードの品質を
より向上させることができます。警告を発生させるかどうかは、
validate オプションで制御します。デフォルトでは警告を発生させます。
警告を発生させたくない場合は、setOption()
メソッドをこのように使用します。
<?php
require_once 'Structures/BibTex.php';
$bibtex = new Structures_BibTex();
$bibtex->setOption('validate', false);
?>
使用法
警告の内容は warnings という名前の配列に保存されます。
この配列は外部からもアクセス可能です。警告が存在するかどうかを調べるには
hasWarning() メソッドを使用します。
このメソッドは、警告が存在する場合に true、
存在しない場合に false を返します。
<?php
require_once 'Structures/BibTex.php';
$bibtex = new Structures_BibTex();
$ret = $bibtex->loadFile('foo.bib');
if (PEAR::isError($ret)) {
die($ret->getMessage());
}
$bibtex->parse();
if ($bibtex->hasWarning()) {
print '警告があります!<br />';
}
?>
個々の警告自体はハッシュテーブルで、次のようなキーが存在します。
すべての警告の型、そして発生した行を表示するには、
このようにします。
<?php
require_once 'Structures/BibTex.php';
$bibtex = new Structures_BibTex();
$ret = $bibtex->loadFile('foo.bib');
if (PEAR::isError($ret)) {
die($ret->getMessage());
}
$bibtex->parse();
if ($bibtex->hasWarning()) {
foreach ($bibtex->warnings as $warning) {
echo '警告: '.$warning['warning'].'<br />';
echo '行: '.$warning['entry'].'<hr />';
}
}
?>
また、すべての警告を消去するには
clearWarnings() メソッドを使用します。
警告の型
以下のような型の警告があります。
-
WARNING_MISSING_END_BRACE
-
この警告は、エントリ内で波括弧が閉じられていない場合に発生します。
この警告は重要です!
-
WARNING_AT_IN_BRACES
-
波括弧で囲まれた内部では、@ を使用することができません。
-
WARNING_ESCAPED_DOUBLE_QUOTE_INSIDE_DOUBLE_QUOTES
-
ダブルクォートで囲まれた内部では、
エスケープされたダブルクォートを使用することができません。
-
WARNING_UNBALANCED_AMOUNT_OF_BRACES
-
値の中での波括弧の数 (開始括弧と終了括弧) が対応していません。
エントリ全体でこの数が間違っている場合、パースに失敗します。
しかし、ある特定のエントリだけで間違っている場合は単に警告を発生するだけです。
結果としてはパースは失敗しませんが、
波括弧の開始・終了が対応していないためにこの警告が発生します。
-
WARNING_MULTIPLE_ENTRIES
-
各エントリは、それぞれ一意の文字列で識別されます。
この警告が発生するのは、同じ識別子のエントリが 2 つ以上存在するときです。
-
WARNING_LINE_WAS_NOT_CONVERTED
-
この警告が発生するのは、エクスポート中に
(例えば RTF や HTML などで)、マッチするデータがないために
エントリが無視されたときです。変換を行うためには、
title、journal、year あるいは authors のうち、
最低ひとつのエントリが存在する必要があります。
-
STRING_ENTRY_NOT_YET_SUPPORTED
-
BibTex では、特別なエントリ型がいくつか定義されています。
String もそのひとつで、略称を定義するために用いられます。
これは、まだ Structres_BibTex ではサポートされていません。
-
PREAMBLE_ENTRY_NOT_YET_SUPPORTED
-
BibTex では、特別なエントリ型がいくつか定義されています。
Preamble もそのひとつで、フォーマットされたコードを定義するために用いられます。
これは、まだ Structres_BibTex ではサポートされていません。
-
WARNING_NOT_ALLOWED_ENTRY_TYPE
-
BibTex では独自の型を定義することができます。
この警告は、標準の型の一部ではない型が検出された場合に発生します。
使用できる、あるいは標準の型の一覧は、クラス変数
allowedTypes に配列で定義されています。