mirror of
https://github.com/wassname/template.git
synced 2026-08-02 13:10:12 +08:00
Allow multiple affiliations for authors
This commit is contained in:
@@ -27,9 +27,9 @@ export function bylineTemplate(frontMatter) {
|
||||
<div class="name">${author.name}</div>`}
|
||||
</p>
|
||||
<p class="affiliation">
|
||||
${author.affiliationURL ? `
|
||||
<a class="affiliation" href="${author.affiliationURL}">${author.affiliation}</a>` : `
|
||||
<div class="affiliation">${author.affiliation}</div>`}
|
||||
${author.affiliations.map(affiliation =>
|
||||
affiliation.url ? `<a class="affiliation" href="${affiliation.url}">${affiliation.name}</a>` : `<div class="affiliation">${affiliation.name}</div>`
|
||||
).join(', ')}
|
||||
</p>
|
||||
`).join('')}
|
||||
</div>
|
||||
|
||||
@@ -12,13 +12,36 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
export function _moveLegacyAffiliationFormatIntoArray(frontMatter) {
|
||||
// authors used to have propoerties "affiliation" and "affiliationURL".
|
||||
// We now encourage using an array for affiliations containing objects with
|
||||
// properties "name" and "url".
|
||||
for (let author of frontMatter.authors) {
|
||||
const hasOldStyle = Boolean(author.affiliation)
|
||||
const hasNewStyle = Boolean(author.affiliations)
|
||||
if (!hasOldStyle) continue;
|
||||
if (hasNewStyle) {
|
||||
console.warn(`Author ${author.author} has both old-style ("affiliation" & "affiliationURL") and new style ("affiliations") affiliation information!`)
|
||||
} else {
|
||||
let newAffiliation = {
|
||||
"name": author.affiliation
|
||||
}
|
||||
if (author.affiliationURL) newAffiliation.url = author.affiliationURL;
|
||||
author.affiliations = [newAffiliation];
|
||||
}
|
||||
}
|
||||
console.log(frontMatter)
|
||||
return frontMatter
|
||||
}
|
||||
|
||||
export function parseFrontmatter(element) {
|
||||
const scriptTag = element.querySelector('script');
|
||||
if (scriptTag) {
|
||||
const type = scriptTag.getAttribute('type');
|
||||
if (type.split('/')[1] == 'json') {
|
||||
const content = scriptTag.textContent;
|
||||
return JSON.parse(content);
|
||||
const parsed = JSON.parse(content);
|
||||
return _moveLegacyAffiliationFormatIntoArray(parsed);
|
||||
} else {
|
||||
console.error('Distill only supports JSON frontmatter tags anymore; no more YAML.');
|
||||
}
|
||||
|
||||
@@ -58,6 +58,7 @@ class Author {
|
||||
this.personalURL = object.authorURL; // 'https://colah.github.io'
|
||||
this.affiliation = object.affiliation; // 'Google Brain'
|
||||
this.affiliationURL = object.affiliationURL; // 'https://g.co/brain'
|
||||
this.affiliations = object.affiliations || []; // new-style affiliations
|
||||
}
|
||||
|
||||
// 'Chris'
|
||||
|
||||
Reference in New Issue
Block a user