private function findElementsForPubMedCentral(DOMDocument $domDocument) { foreach ($domDocument->getElementsByTagName('pub-date') as $item) { foreach ($item->getElementsByTagName('year') as $i) { $this->filteredRecord->set('year', $i->nodeValue); } } foreach ($domDocument->getElementsByTagName('abstract') as $item) { $this->filteredRecord->set('abstract', trim($item->nodeValue)); } foreach ($domDocument->getElementsByTagName('article') as $item) { $this->filteredRecord->set('type', $item->getAttribute('article-type')); } }
private function collectAuthors($name, array $values) { $authors = array(); foreach ($values as $key => $value) { // Literal set by dataset $familyName = isset($value['literal']) ? $value['literal'] : $value['family']; // Part of the auto generated key if ($key == 0) { $this->filteredRecord->set('reference', strtolower($familyName)); } $authors[] = (isset($value['given']) ? $value['given'] . ' ' : '') . $familyName; } $this->filteredRecord->set($name, $authors); }
private function collectIdentifiers($value) { foreach ($value as $id => $v) { if ($id === 'openlibrary') { $id = 'olid'; } if ($id === 'isbn_13' || $id === 'isbn_10') { $id = 'isbn'; } // No commercial provider if (!in_array($id, array('isbn', 'olid', 'oclc', 'lccn'))) { continue; } $this->filteredRecord->append($id, end($v)); } }
private function collectAbstract($values) { foreach ($values as $key => $value) { if (is_array($value)) { $this->collectAbstract($value); continue; } // This is pure guess work since the description list is // an unordered list with no indication of what type of // content is stored, use `--` is indicator that is not // the abstract if (strpos($value, '--') !== false) { continue; } if ($key === '@value') { $this->filteredRecord->append('abstract', $value); } } }
public function testUnknownRecordKeyFieldThrowsException() { $instance = new FilteredRecord(); $this->setExpectedException('InvalidArgumentException'); $instance->get('foo'); }
/** * @since 0.1 * * @param FilteredRecord $filteredRecord * * @return ResponseParser */ public function newNcbiPubMedCentralFilteredHttpResponseParser(FilteredRecord $filteredRecord) { $filteredRecord->set('ncbi-dbtype', 'pmc'); return new NcbiPubMedFilteredHttpResponseParser($this->httpRequest, $filteredRecord); }