public function MarcEncoder::decode in Bibliography & Citation 8
Same name and namespace in other branches
- 2.0.x modules/bibcite_marc/src/Encoder/MarcEncoder.php \Drupal\bibcite_marc\Encoder\MarcEncoder::decode()
File
- modules/
bibcite_marc/ src/ Encoder/ MarcEncoder.php, line 34
Class
- MarcEncoder
- Marc format encoder.
Namespace
Drupal\bibcite_marc\EncoderCode
public function decode($data, $format, array $context = []) {
$parsed = [];
$records = explode(File::END_OF_RECORD, $data);
foreach ($records as $record) {
if (strlen($record) > 0) {
$rec = $this
->decodeFile($record . File::END_OF_RECORD);
$fields = $rec
->fields();
$leader = $rec
->leader();
$pubtype = $leader[6];
$pubtype .= $leader[7];
$fields['type'] = $pubtype === 'am' ? 'book' : 'misc';
$parsed[] = $fields;
}
}
$keys = array_keys($parsed);
if (count($keys) === 0 || $keys[0] === -1) {
$format_definition = \Drupal::service('plugin.manager.bibcite_format')
->getDefinition($format);
$format_label = $format_definition['label'];
throw new UnexpectedValueException("Incorrect '{$format_label}' format or empty set.");
}
$this
->processEntries($parsed);
return $parsed;
}