lakshay / converter
一个用于将不同参考文献格式相互转换的小型库
v1.0.5
2020-08-10 13:45 UTC
Requires
- php: >=5.4.0
- technosophos/libris: >=2.0.2
Requires (Dev)
- phpunit/phpunit: ^6.5
This package is auto-updated.
Last update: 2024-09-10 22:54:56 UTC
README
一个将不同文献标准(如 BibTeX、CSL 等)的输入数据相互转换的小型库。目前支持 BibTeX、CSL 和 RIS。
安装
通过 composer
在 composer.json
中添加 require
键并运行 composer install。
"require" : {
"lakshay/converter": "dev-master"
}
其他
确保您使用的是兼容 PSR-2 的自动加载器。
用法
将一种标准转换为另一种标准
// include the composer autoloader require __DIR__ . '/vendor/autoload.php'; use Lakshay\Converter\Converter; use Lakshay\Converter\Standard\RIS\RIS; use Lakshay\Converter\Standard\BibTeX\BibTeX; use Lakshay\Converter\Standard\CSL\CSL; $converter = new Converter(); // your input RIS data $data = 'TY - JOUR TI - Die Grundlage der allgemeinen Relativitätstheorie AU - Einstein, Albert PY - 1916 SP - 769 EP - 822 JO - Annalen der Physik VL - 49 ER - '; // convert to bibTeX $bibTeX = $converter->convert(new RIS($data), new BibTeX()); /** * $bibTeX now has the following value: * * @article{article, * author = {Einstein, Albert}, * year = {1916}, * pages = {769-822}, * title = {Die Grundlage der allgemeinen Relativitätstheorie}, * volume = {49} * } */ // or convert bibTeX to csl $csl = $converter->convert(new BibTeX($bibTeX), new CSL()); /** * $csl now has the following value (a UTF-8 encoded json string): * * [ * { * "type":"article", * "author":[{ * "family":"Einstein", * "given":"Albert" * }], * "issued":[{ * "year":"1916" * }], * "page":"769-822", * "page-first":"769", * "citation-label":"article", * "title":"Die Grundlage der allgemeinen Relativit\u00e4tstheorie" * } * ] */
限制
内置的 BibTeX 转换器有以下限制
- 非 UTF-8 字符串将转换为 UTF-8
- LaTeX 转义序列将转换为 UTF-8 字符
- 括号将被丢弃。(CSL 和 RIS 都不支持显式的大写。)
添加标准
实现新的标准相当简单
- 创建 src/Lakshay/Converter/Standard/Template 文件夹的副本
- 将其重命名为新标准。
- 也将 Template.php 文件重命名为标准名称
- 将 Creator.php、Parser.php 和 Template.php 文件中的所有 Template 替换为新标准的名称。
- 在 Creator.php 中实现 create 和 retrieve 方法
- 在 Parser.php 中实现 parse 和 retrieve 方法
- 不要忘记编写您的 PHPUnit 测试并遵循 PSR-2 编码标准
测试
Converter 依赖于 PHPUnit。确保您的依赖项是最新的,运行 composer update
,然后调用 vendor\bin\phpunit tests
来运行所有测试。