diff --git a/components/meta.js b/components/meta.js index 4ef245a..1faa2c1 100644 --- a/components/meta.js +++ b/components/meta.js @@ -1,12 +1,13 @@ import favicon from './distill-favicon.base64'; +import escape from 'escape-html'; export default function(dom, data) { let head = dom.querySelector("head"); let appendHead = html => appendHtml(head, html); - function meta(name, content) { - if (content) - appendHead(` \n`); + function meta(name, content, force) { + if (content || force) + appendHead(` \n`); } appendHead(` @@ -55,20 +56,23 @@ export default function(dom, data) { \n`); meta("citation_title", data.title); - meta("citation_fulltext_html_url", data.url); + //meta("citation_fulltext_html_url", data.url); meta("citation_volume", data.volume); meta("citation_issue", data.issue); meta("citation_firstpage", data.doiSuffix? `e${data.doiSuffix}` : undefined); meta("citation_doi", data.doi); let journal = data.journal || {}; - meta("citation_journal_title", journal.name); - meta("citation_journal_abbrev", journal.nameAbbrev); + meta("citation_journal_title", journal.full_title || journal.title); + meta("citation_journal_abbrev", journal.abbrev_title); meta("citation_issn", journal.issn); meta("citation_publisher", journal.publisher); + meta("citation_fulltext_world_readable", "", true); if (data.publishedDate){ let zeroPad = (n) => { return n < 10 ? "0" + n : n; }; + meta("citation_online_date", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`); + // Should we do something different here? meta("citation_publication_date", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`); } @@ -95,10 +99,31 @@ function appendHtml(el, html) { } function citation_meta_content(ref){ + // Special test for arxiv var content = `citation_title=${ref.title};`; - ref.author.split(" and ").forEach(author => { - content += `citation_author=${author.trim()};`; + + let name_strings = ref.author.split(" and ").forEach(name => { + name = name.trim(); + if (name.indexOf(",") != -1){ + var last = name.split(",")[0].trim(); + var firsts = name.split(",")[1].trim(); + } else { + var last = name.split(" ").slice(-1)[0].trim(); + var firsts = name.split(" ").slice(0,-1).join(" "); + } + content += `citation_author=${firsts} ${last};`; }); + + if ("year" in ref) { + content += `citation_publication_date=${ref.year};`; + } + + var arxiv_id_search = /https?:\/\/arxiv\.org\/pdf\/([0-9]*\.[0-9]*)\.pdf/.exec(ref.url); + arxiv_id_search = arxiv_id_search || /https?:\/\/arxiv\.org\/abs\/([0-9]*\.[0-9]*)/.exec(ref.url); + if (arxiv_id_search && arxiv_id_search[1]){ + content += `citation_arxiv_id=${arxiv_id_search[1]};`; + return content; + } if ("journal" in ref){ content += `citation_journal_title=${ref.journal};`; }