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, force) { if (content || force) appendHead(` \n`); } appendHead(` ${data.title} `); appendHead(` `); data.authors.forEach((a) => { appendHtml(head, ` `) }); appendHead(` `); appendHead(` `); // if this is a proprer article, generate Google Scholar meta data if (data.doiSuffix){ appendHead(` \n`); meta("citation_title", data.title); //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.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}`); } (data.authors || []).forEach((a) => { meta("citation_author", `${a.lastName}, ${a.firstName}`); meta("citation_author_institution", a.affiliation); }); if (data.citations) { data.citations.forEach(key => { let d = data.bibliography[key]; if(!d) { console.warn("No bibliography data fround for " + key) } else { meta("citation_reference", citation_meta_content(data.bibliography[key]) ) }; }); } } } function appendHtml(el, html) { el.innerHTML += html; } function citation_meta_content(ref){ // Special test for arxiv var content = `citation_title=${ref.title};`; 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); arxiv_id_search = arxiv_id_search || /arXiv preprint arXiv:([0-9]*\.[0-9]*)/.exec(ref.journal); 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};`; } if ("volume" in ref) { content += `citation_volume=${ref.volume};`; } if ("issue" in ref || "number" in ref){ content += `citation_number=${ref.issue || ref.number};`; } /*content += `citation_first_page=${};`; content += `citation_publication_date=${};`;*/ return content; }