Browse Source

Refactored render function

main
astanley 5 days ago
parent
commit
f484a844d9
  1. 24
      src/Plugin/BibCiteProcessor/CiteprocPhpInline.php

24
src/Plugin/BibCiteProcessor/CiteprocPhpInline.php

@ -62,14 +62,32 @@ class CiteprocPhpInline extends BibCiteProcessorBase implements BibCiteProcessor
*/ */
public function render($data, $csl, $lang) { public function render($data, $csl, $lang) {
$cite_proc = new CiteProc($csl, $lang); $cite_proc = new CiteProc($csl, $lang);
$mode = !empty($data['mode']) ? $data['mode'] : NULL;
if (!$data instanceof \stdClass) { // Default to bibliography when no mode is specified.
$data = json_decode(json_encode($data)); $mode = !empty($data['mode']) ? $data['mode'] : 'bibliography';
// CiteProc expects an array of citation objects.
if ($data instanceof \stdClass) {
$data = [$data];
}
elseif (is_array($data)) {
if (array_is_list($data)) {
$data = array_map(
static fn($item) => is_array($item)
? json_decode(json_encode($item))
: $item,
$data
);
}
else {
$data = [json_decode(json_encode($data))];
} }
}
if (!empty($data)) { if (!empty($data)) {
return $cite_proc->render($data, $mode); return $cite_proc->render($data, $mode);
} }
return ''; return '';
} }

Loading…
Cancel
Save