-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathreference-tools.js
83 lines (66 loc) · 1.88 KB
/
reference-tools.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
'use babel';
function enhanceReferences(references) {
for (let reference of references) {
if (reference.title) {
reference.title = reference.title.replace(/(^\{|\}$)/g, "")
reference.prettyTitle = this.prettifyTitle(reference.title)
}
reference.prettyAuthors = ''
if (reference.author) {
reference.prettyAuthors = this.prettifyAuthors(reference.author)
}
reference.type = reference.type.toLowerCase()
reference.in = reference.in || reference.journal || reference.booktitle || ''
let author = reference.prettyAuthors
if (author) {
author = `${author}, `
}
let refin = reference.in
if (refin) {
refin = `*${refin}*, `
}
let year = reference.year || ''
reference.markdownCite = `${author}"**${reference.prettyTitle}**", ${refin}${year}.`
}
return references
}
function prettifyTitle(title) {
let colon
if (!title) {
return
}
if (((colon = title.indexOf(':')) !== -1) && (title.split(" ").length > 5)) {
title = title.substring(0, colon)
}
return title
}
function prettifyAuthors(authors) {
if ((authors == null)) {
return ''
}
if (!authors.length) {
return ''
}
let firstAuthors = []
for (let author of authors.slice(0,3)) {
firstAuthors.push(this.prettifyName(author))
}
let name = firstAuthors.join('; ')
if (authors.length > 3) {
return `${name} et al.`
}
return `${name}`
}
function prettifyName(person, inverted = false, separator = ' ') {
if (inverted) {
return this.prettifyName({
given: person.family,
family: person.given
}, false, ', ')
}
let name = ((person.given) ? person.given : '') +
((person.given) && (person.family) ? separator : '') +
((person.family) ? person.family : '')
return name.replace(/(^\{|\}$)/g, "")
}
module.exports = {enhanceReferences, prettifyTitle, prettifyAuthors, prettifyName}