Forked from geissler/converter. Thank you for your amazing contributions 🙏.
A small library to convert the input data for different literature standards like BibTeX, CSL etc. into each other.
Supported formats:
Via composer
Just require the researchgate/converter
package as below:
$ composer require researchgate/converter
Make sure you are using a PSR-4 compatible autoloader.
To convert from one standard to an other:
// include the composer autoloader
require __DIR__ . '/vendor/autoload.php';
use Geissler\Converter\Converter;
use Geissler\Converter\Standard\RIS\RIS;
use Geissler\Converter\Standard\BibTeX\BibTeX;
use Geissler\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 has know 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 has know 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"
* }
* ]
*/
To implement a new standard is quite simple:
- Create a copy of the folder src/Geissler/Converter/Standard/Template
- Change the name to the new standard.
- Rename also the Template.php file to the name of the standard
- Replace every occurence of Template in the files Creator.php, Parser.php and Template.php with the name of the new standard.
- Implement the methods create and retrieve in Creator.php
- Implement the methods parse and retrieve in Parser.php
- Don't forget to write your PHPUnit tests and follow the PSR-12 coding standard