lakshay/converter

一个用于将不同参考文献格式相互转换的小型库

v1.0.5 2020-08-10 13:45 UTC

This package is auto-updated.

Last update: 2024-09-10 22:54:56 UTC


README

一个将不同文献标准(如 BibTeX、CSL 等)的输入数据相互转换的小型库。目前支持 BibTeXCSLRIS

安装

通过 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 都不支持显式的大写。)

添加标准

实现新的标准相当简单

  1. 创建 src/Lakshay/Converter/Standard/Template 文件夹的副本
  2. 将其重命名为新标准。
  3. 也将 Template.php 文件重命名为标准名称
  4. Creator.phpParser.phpTemplate.php 文件中的所有 Template 替换为新标准的名称。
  5. Creator.php 中实现 createretrieve 方法
  6. Parser.php 中实现 parseretrieve 方法
  7. 不要忘记编写您的 PHPUnit 测试并遵循 PSR-2 编码标准

测试

Converter 依赖于 PHPUnit。确保您的依赖项是最新的,运行 composer update,然后调用 vendor\bin\phpunit tests 来运行所有测试。