postext 1.11.2 → 1.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/exports.test.js +24 -0
- package/dist/__tests__/exports.test.js.map +1 -1
- package/dist/__tests__/parse/anchors.test.d.ts +2 -0
- package/dist/__tests__/parse/anchors.test.d.ts.map +1 -0
- package/dist/__tests__/parse/anchors.test.js +71 -0
- package/dist/__tests__/parse/anchors.test.js.map +1 -0
- package/dist/__tests__/parse/citations.test.d.ts +2 -0
- package/dist/__tests__/parse/citations.test.d.ts.map +1 -0
- package/dist/__tests__/parse/citations.test.js +98 -0
- package/dist/__tests__/parse/citations.test.js.map +1 -0
- package/dist/__tests__/parse/containers.test.js +1 -1
- package/dist/__tests__/parse/containers.test.js.map +1 -1
- package/dist/__tests__/pipeline/crossRefs.test.d.ts +2 -0
- package/dist/__tests__/pipeline/crossRefs.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/crossRefs.test.js +170 -0
- package/dist/__tests__/pipeline/crossRefs.test.js.map +1 -0
- package/dist/bundle/book.d.ts.map +1 -1
- package/dist/bundle/book.js +22 -4
- package/dist/bundle/book.js.map +1 -1
- package/dist/citations/bibtex.d.ts +19 -0
- package/dist/citations/bibtex.d.ts.map +1 -0
- package/dist/citations/bibtex.js +375 -0
- package/dist/citations/bibtex.js.map +1 -0
- package/dist/citations/context.d.ts +64 -0
- package/dist/citations/context.d.ts.map +1 -0
- package/dist/citations/context.js +115 -0
- package/dist/citations/context.js.map +1 -0
- package/dist/citations/data.d.ts +35 -0
- package/dist/citations/data.d.ts.map +1 -0
- package/dist/citations/data.js +158 -0
- package/dist/citations/data.js.map +1 -0
- package/dist/citations/html.d.ts +16 -0
- package/dist/citations/html.d.ts.map +1 -0
- package/dist/citations/html.js +99 -0
- package/dist/citations/html.js.map +1 -0
- package/dist/citations/registry.d.ts +30 -0
- package/dist/citations/registry.d.ts.map +1 -0
- package/dist/citations/registry.js +51 -0
- package/dist/citations/registry.js.map +1 -0
- package/dist/citations/types.d.ts +132 -0
- package/dist/citations/types.d.ts.map +1 -0
- package/dist/citations/types.js +9 -0
- package/dist/citations/types.js.map +1 -0
- package/dist/defaults/citations.d.ts +5 -0
- package/dist/defaults/citations.d.ts.map +1 -0
- package/dist/defaults/citations.js +99 -0
- package/dist/defaults/citations.js.map +1 -0
- package/dist/defaults/crossRefs.d.ts +7 -0
- package/dist/defaults/crossRefs.d.ts.map +1 -0
- package/dist/defaults/crossRefs.js +35 -0
- package/dist/defaults/crossRefs.js.map +1 -0
- package/dist/defaults/index.d.ts +2 -0
- package/dist/defaults/index.d.ts.map +1 -1
- package/dist/defaults/index.js +18 -0
- package/dist/defaults/index.js.map +1 -1
- package/dist/html-backend.d.ts.map +1 -1
- package/dist/html-backend.js +79 -19
- package/dist/html-backend.js.map +1 -1
- package/dist/index.d.ts +10 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -2
- package/dist/index.js.map +1 -1
- package/dist/knuthPlass/richAdapter.d.ts +2 -0
- package/dist/knuthPlass/richAdapter.d.ts.map +1 -1
- package/dist/knuthPlass/richAdapter.js +1 -1
- package/dist/knuthPlass/richAdapter.js.map +1 -1
- package/dist/measure/cache.js +1 -1
- package/dist/measure/cache.js.map +1 -1
- package/dist/measure/rich.d.ts +4 -0
- package/dist/measure/rich.d.ts.map +1 -1
- package/dist/measure/rich.js +2 -2
- package/dist/measure/rich.js.map +1 -1
- package/dist/parse/attrs.d.ts.map +1 -1
- package/dist/parse/attrs.js +31 -4
- package/dist/parse/attrs.js.map +1 -1
- package/dist/parse/blockParser.d.ts.map +1 -1
- package/dist/parse/blockParser.js +68 -8
- package/dist/parse/blockParser.js.map +1 -1
- package/dist/parse/citations.d.ts +41 -0
- package/dist/parse/citations.d.ts.map +1 -0
- package/dist/parse/citations.js +206 -0
- package/dist/parse/citations.js.map +1 -0
- package/dist/parse/index.d.ts +1 -1
- package/dist/parse/index.d.ts.map +1 -1
- package/dist/parse/index.js.map +1 -1
- package/dist/parse/indexMarks.d.ts +2 -7
- package/dist/parse/indexMarks.d.ts.map +1 -1
- package/dist/parse/indexMarks.js +65 -20
- package/dist/parse/indexMarks.js.map +1 -1
- package/dist/parse/inlineFormatting.d.ts +2 -2
- package/dist/parse/inlineFormatting.d.ts.map +1 -1
- package/dist/parse/inlineFormatting.js +41 -14
- package/dist/parse/inlineFormatting.js.map +1 -1
- package/dist/parse/types.d.ts +50 -4
- package/dist/parse/types.d.ts.map +1 -1
- package/dist/pipeline/anchors.d.ts +28 -0
- package/dist/pipeline/anchors.d.ts.map +1 -0
- package/dist/pipeline/anchors.js +123 -0
- package/dist/pipeline/anchors.js.map +1 -0
- package/dist/pipeline/build.d.ts.map +1 -1
- package/dist/pipeline/build.js +51 -11
- package/dist/pipeline/build.js.map +1 -1
- package/dist/pipeline/citations.d.ts +80 -0
- package/dist/pipeline/citations.d.ts.map +1 -0
- package/dist/pipeline/citations.js +418 -0
- package/dist/pipeline/citations.js.map +1 -0
- package/dist/pipeline/config.d.ts.map +1 -1
- package/dist/pipeline/config.js +3 -1
- package/dist/pipeline/config.js.map +1 -1
- package/dist/pipeline/contentWarnings.d.ts +7 -1
- package/dist/pipeline/contentWarnings.d.ts.map +1 -1
- package/dist/pipeline/contentWarnings.js +57 -3
- package/dist/pipeline/contentWarnings.js.map +1 -1
- package/dist/pipeline/continuation.d.ts +2 -1
- package/dist/pipeline/continuation.d.ts.map +1 -1
- package/dist/pipeline/continuation.js +3 -0
- package/dist/pipeline/continuation.js.map +1 -1
- package/dist/pipeline/crossRefs.d.ts +79 -0
- package/dist/pipeline/crossRefs.d.ts.map +1 -0
- package/dist/pipeline/crossRefs.js +207 -0
- package/dist/pipeline/crossRefs.js.map +1 -0
- package/dist/pipeline/floatPlacement.d.ts.map +1 -1
- package/dist/pipeline/floatPlacement.js +2 -1
- package/dist/pipeline/floatPlacement.js.map +1 -1
- package/dist/pipeline/index.d.ts +2 -1
- package/dist/pipeline/index.d.ts.map +1 -1
- package/dist/pipeline/index.js +2 -1
- package/dist/pipeline/index.js.map +1 -1
- package/dist/pipeline/measureContentBlock.d.ts +4 -0
- package/dist/pipeline/measureContentBlock.d.ts.map +1 -1
- package/dist/pipeline/measureContentBlock.js +1 -0
- package/dist/pipeline/measureContentBlock.js.map +1 -1
- package/dist/pipeline/outline.d.ts +3 -0
- package/dist/pipeline/outline.d.ts.map +1 -1
- package/dist/pipeline/outline.js +38 -1
- package/dist/pipeline/outline.js.map +1 -1
- package/dist/pipeline/resourceLayout.d.ts +13 -1
- package/dist/pipeline/resourceLayout.d.ts.map +1 -1
- package/dist/pipeline/resourceLayout.js +22 -2
- package/dist/pipeline/resourceLayout.js.map +1 -1
- package/dist/pipeline/resourceNumbering.d.ts.map +1 -1
- package/dist/pipeline/resourceNumbering.js +2 -1
- package/dist/pipeline/resourceNumbering.js.map +1 -1
- package/dist/types.d.ts +133 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/vdt.d.ts +59 -1
- package/dist/vdt.d.ts.map +1 -1
- package/dist/vdt.js.map +1 -1
- package/dist/worker/layout.worker.js +6 -0
- package/dist/worker/layout.worker.js.map +1 -1
- package/package.json +1 -1
package/dist/bundle/book.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"book.js","sourceRoot":"","sources":["../../src/bundle/book.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,2EAA2E;AAC3E,0EAA0E;AAC1E,yEAAyE;AACzE,iEAAiE;AACjE,4CAA4C;
|
|
1
|
+
{"version":3,"file":"book.js","sourceRoot":"","sources":["../../src/bundle/book.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A small BibTeX / BibLaTeX reader: entries, `@string` macros, `#`
|
|
3
|
+
* concatenation, braced and quoted values, name lists, LaTeX accents and
|
|
4
|
+
* dashes — enough for what Zotero, JabRef, Mendeley and Google Scholar
|
|
5
|
+
* export. Entries become CSL-JSON items.
|
|
6
|
+
*/
|
|
7
|
+
import type { CslItem } from './types';
|
|
8
|
+
/** LaTeX markup of a field value as plain text: accents composed,
|
|
9
|
+
* escapes and dashes resolved, braces dropped. */
|
|
10
|
+
export declare function latexToText(value: string): string;
|
|
11
|
+
/** A diagnostic of the reader: what it skipped and where. */
|
|
12
|
+
export interface BibtexIssue {
|
|
13
|
+
message: string;
|
|
14
|
+
/** Offset in the source. */
|
|
15
|
+
at: number;
|
|
16
|
+
}
|
|
17
|
+
/** The CSL-JSON items of a BibTeX / BibLaTeX source. */
|
|
18
|
+
export declare function parseBibtex(source: string, issues?: BibtexIssue[]): CslItem[];
|
|
19
|
+
//# sourceMappingURL=bibtex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bibtex.d.ts","sourceRoot":"","sources":["../../src/citations/bibtex.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAW,OAAO,EAAW,MAAM,SAAS,CAAC;AAuDzD;mDACmD;AACnD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAcjD;AAyFD,6DAA6D;AAC7D,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,EAAE,EAAE,MAAM,CAAC;CACZ;AAwHD,wDAAwD;AACxD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,WAAW,EAAO,GAAG,OAAO,EAAE,CAwCjF"}
|
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A small BibTeX / BibLaTeX reader: entries, `@string` macros, `#`
|
|
3
|
+
* concatenation, braced and quoted values, name lists, LaTeX accents and
|
|
4
|
+
* dashes — enough for what Zotero, JabRef, Mendeley and Google Scholar
|
|
5
|
+
* export. Entries become CSL-JSON items.
|
|
6
|
+
*/
|
|
7
|
+
const TYPES = {
|
|
8
|
+
article: 'article-journal',
|
|
9
|
+
book: 'book',
|
|
10
|
+
mvbook: 'book',
|
|
11
|
+
booklet: 'pamphlet',
|
|
12
|
+
inbook: 'chapter',
|
|
13
|
+
incollection: 'chapter',
|
|
14
|
+
inproceedings: 'paper-conference',
|
|
15
|
+
conference: 'paper-conference',
|
|
16
|
+
proceedings: 'book',
|
|
17
|
+
collection: 'book',
|
|
18
|
+
manual: 'book',
|
|
19
|
+
phdthesis: 'thesis',
|
|
20
|
+
mastersthesis: 'thesis',
|
|
21
|
+
thesis: 'thesis',
|
|
22
|
+
techreport: 'report',
|
|
23
|
+
report: 'report',
|
|
24
|
+
unpublished: 'manuscript',
|
|
25
|
+
misc: 'document',
|
|
26
|
+
online: 'webpage',
|
|
27
|
+
electronic: 'webpage',
|
|
28
|
+
www: 'webpage',
|
|
29
|
+
patent: 'patent',
|
|
30
|
+
dataset: 'dataset',
|
|
31
|
+
software: 'software',
|
|
32
|
+
standard: 'standard',
|
|
33
|
+
periodical: 'periodical',
|
|
34
|
+
legislation: 'legislation',
|
|
35
|
+
jurisdiction: 'legal_case',
|
|
36
|
+
};
|
|
37
|
+
const MONTHS = {
|
|
38
|
+
jan: 1, feb: 2, mar: 3, apr: 4, may: 5, jun: 6, jul: 7, aug: 8, sep: 9, oct: 10, nov: 11, dec: 12,
|
|
39
|
+
};
|
|
40
|
+
/** BibLaTeX `langid` / `language` values → BCP 47. */
|
|
41
|
+
const LANGUAGES = {
|
|
42
|
+
english: 'en', american: 'en-US', british: 'en-GB', spanish: 'es', french: 'fr', german: 'de', ngerman: 'de',
|
|
43
|
+
italian: 'it', portuguese: 'pt', brazilian: 'pt-BR', catalan: 'ca', dutch: 'nl', chinese: 'zh-CN',
|
|
44
|
+
'simplified chinese': 'zh-CN', 'traditional chinese': 'zh-TW', japanese: 'ja', korean: 'ko', russian: 'ru',
|
|
45
|
+
};
|
|
46
|
+
const ACCENTS = {
|
|
47
|
+
"'": '́', '`': '̀', '^': '̂', '"': '̈', '~': '̃', '=': '̄', '.': '̇',
|
|
48
|
+
u: '̆', v: '̌', H: '̋', c: '̧', k: '̨', r: '̊', d: '̣', b: '̱',
|
|
49
|
+
};
|
|
50
|
+
const SYMBOLS = {
|
|
51
|
+
ss: 'ß', o: 'ø', O: 'Ø', aa: 'å', AA: 'Å', ae: 'æ', AE: 'Æ', oe: 'œ', OE: 'Œ', l: 'ł', L: 'Ł', i: 'ı', j: 'ȷ',
|
|
52
|
+
textendash: '–', textemdash: '—', textquoteleft: '‘', textquoteright: '’', textquotedblleft: '“', textquotedblright: '”',
|
|
53
|
+
dag: '†', ddag: '‡', S: '§', P: '¶', copyright: '©', textregistered: '®', texttrademark: '™', ldots: '…', dots: '…',
|
|
54
|
+
};
|
|
55
|
+
/** LaTeX markup of a field value as plain text: accents composed,
|
|
56
|
+
* escapes and dashes resolved, braces dropped. */
|
|
57
|
+
export function latexToText(value) {
|
|
58
|
+
let s = value;
|
|
59
|
+
// Accents: \'e, \'{e}, {\'e}, \c{c}, \v s…
|
|
60
|
+
s = s.replace(/\\([`'^"~=.]|[uvHckrdb](?![a-zA-Z]))\s*(?:\{\s*(\\?[a-zA-Z])\s*\}|(\\?[a-zA-Z]))/g, (_, accent, braced, bare) => {
|
|
61
|
+
let base = (braced ?? bare ?? '').replace(/^\\/, '');
|
|
62
|
+
if (base === 'i')
|
|
63
|
+
base = 'i';
|
|
64
|
+
return (base + (ACCENTS[accent] ?? '')).normalize('NFC');
|
|
65
|
+
});
|
|
66
|
+
s = s.replace(/\\([a-zA-Z]+)(?:\{\})?\s?/g, (whole, name) => SYMBOLS[name] ?? whole);
|
|
67
|
+
s = s.replace(/\\([&%$#_{}])/g, '$1');
|
|
68
|
+
s = s.replace(/---/g, '—').replace(/--/g, '–').replace(/(?<!\\)~/g, ' ');
|
|
69
|
+
s = s.replace(/\\(?:emph|textit|textbf|textsc|mkbibemph|mkbibquote|enquote)\{/g, '{');
|
|
70
|
+
s = s.replace(/[{}]/g, '');
|
|
71
|
+
return s.replace(/\s+/g, ' ').trim();
|
|
72
|
+
}
|
|
73
|
+
/** Split `text` at `sep` (a regular expression of one separator) where the
|
|
74
|
+
* brace depth is zero. */
|
|
75
|
+
function splitTopLevel(text, sep) {
|
|
76
|
+
const out = [];
|
|
77
|
+
let depth = 0;
|
|
78
|
+
let last = 0;
|
|
79
|
+
for (let i = 0; i < text.length; i++) {
|
|
80
|
+
const c = text[i];
|
|
81
|
+
if (c === '{')
|
|
82
|
+
depth++;
|
|
83
|
+
else if (c === '}')
|
|
84
|
+
depth = Math.max(0, depth - 1);
|
|
85
|
+
else if (depth === 0) {
|
|
86
|
+
sep.lastIndex = 0;
|
|
87
|
+
const m = sep.exec(text.slice(i));
|
|
88
|
+
if (m && m.index === 0) {
|
|
89
|
+
out.push(text.slice(last, i));
|
|
90
|
+
i += m[0].length - 1;
|
|
91
|
+
last = i + 1;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
out.push(text.slice(last));
|
|
96
|
+
return out.map((s) => s.trim()).filter((s) => s.length > 0);
|
|
97
|
+
}
|
|
98
|
+
const CJK = /[\p{sc=Han}\p{sc=Hiragana}\p{sc=Katakana}\p{sc=Hangul}]/u;
|
|
99
|
+
/** One BibTeX name (`Last, First`, `Last, Jr, First`, `First von Last`, a
|
|
100
|
+
* braced corporate name) as a CSL name. */
|
|
101
|
+
function parseName(raw) {
|
|
102
|
+
const trimmed = raw.trim();
|
|
103
|
+
if (/^\{.*\}$/.test(trimmed) && splitTopLevel(trimmed.slice(1, -1), /,/g).length >= 1 && !trimmed.slice(1, -1).includes('{')) {
|
|
104
|
+
return { literal: latexToText(trimmed) };
|
|
105
|
+
}
|
|
106
|
+
const parts = splitTopLevel(trimmed, /,/g).map(latexToText);
|
|
107
|
+
if (parts.length >= 2) {
|
|
108
|
+
const [last, ...rest] = parts;
|
|
109
|
+
const given = rest.length === 2 ? rest[1] : rest[0];
|
|
110
|
+
const suffix = rest.length === 2 ? rest[0] : undefined;
|
|
111
|
+
return withParticle({ family: last, ...(given ? { given } : {}), ...(suffix ? { suffix } : {}) });
|
|
112
|
+
}
|
|
113
|
+
const text = parts[0] ?? '';
|
|
114
|
+
// A Chinese, Japanese or Korean name written whole is one family name.
|
|
115
|
+
if (CJK.test(text) && !/\s/.test(text))
|
|
116
|
+
return { family: text };
|
|
117
|
+
const words = splitTopLevel(trimmed, /\s+/g).map(latexToText);
|
|
118
|
+
if (words.length === 1)
|
|
119
|
+
return { family: words[0] };
|
|
120
|
+
// `First von Last`: the particle is the run of lower-case words before the last.
|
|
121
|
+
const i = words.length - 1;
|
|
122
|
+
let particleStart = i;
|
|
123
|
+
while (particleStart - 1 > 0 && /^\p{Ll}/u.test(words[particleStart - 1]))
|
|
124
|
+
particleStart--;
|
|
125
|
+
const particle = words.slice(particleStart, i).join(' ');
|
|
126
|
+
const given = words.slice(0, particleStart).join(' ');
|
|
127
|
+
return { family: words[i], ...(given ? { given } : {}), ...(particle ? { 'non-dropping-particle': particle } : {}) };
|
|
128
|
+
}
|
|
129
|
+
/** `Last, First` whose last name opens with a lower-case particle ("van
|
|
130
|
+
* Gogh, Vincent"). */
|
|
131
|
+
function withParticle(name) {
|
|
132
|
+
const m = /^((?:\p{Ll}+\s+)+)(.+)$/u.exec(name.family ?? '');
|
|
133
|
+
return m ? { ...name, family: m[2], 'non-dropping-particle': m[1].trim() } : name;
|
|
134
|
+
}
|
|
135
|
+
function parseNames(value) {
|
|
136
|
+
return splitTopLevel(value, /\s+and\s+/gi).map(parseName);
|
|
137
|
+
}
|
|
138
|
+
function parseDate(fields) {
|
|
139
|
+
const date = fields.date;
|
|
140
|
+
if (date) {
|
|
141
|
+
const m = /^(\d{1,4})(?:-(\d{1,2}))?(?:-(\d{1,2}))?/.exec(date);
|
|
142
|
+
if (m)
|
|
143
|
+
return { 'date-parts': [[Number(m[1]), ...(m[2] ? [Number(m[2])] : []), ...(m[3] ? [Number(m[3])] : [])]] };
|
|
144
|
+
return { literal: latexToText(date) };
|
|
145
|
+
}
|
|
146
|
+
const year = fields.year;
|
|
147
|
+
if (!year)
|
|
148
|
+
return undefined;
|
|
149
|
+
const y = /^\d{1,4}$/.test(year.trim()) ? Number(year.trim()) : undefined;
|
|
150
|
+
if (y === undefined)
|
|
151
|
+
return { literal: latexToText(year) };
|
|
152
|
+
const monthRaw = fields.month?.trim().toLowerCase();
|
|
153
|
+
const month = monthRaw ? (MONTHS[monthRaw.slice(0, 3)] ?? (/^\d{1,2}$/.test(monthRaw) ? Number(monthRaw) : undefined)) : undefined;
|
|
154
|
+
return { 'date-parts': [[y, ...(month ? [month] : [])]] };
|
|
155
|
+
}
|
|
156
|
+
/** Read the entries of a BibTeX source (values still in LaTeX). */
|
|
157
|
+
function readEntries(source, issues) {
|
|
158
|
+
const macros = {
|
|
159
|
+
jan: 'jan', feb: 'feb', mar: 'mar', apr: 'apr', may: 'may', jun: 'jun', jul: 'jul', aug: 'aug', sep: 'sep', oct: 'oct', nov: 'nov', dec: 'dec',
|
|
160
|
+
};
|
|
161
|
+
const entries = [];
|
|
162
|
+
let i = 0;
|
|
163
|
+
const n = source.length;
|
|
164
|
+
const skipSpace = () => {
|
|
165
|
+
while (i < n) {
|
|
166
|
+
if (/\s/.test(source[i]))
|
|
167
|
+
i++;
|
|
168
|
+
else if (source[i] === '%') {
|
|
169
|
+
while (i < n && source[i] !== '\n')
|
|
170
|
+
i++;
|
|
171
|
+
}
|
|
172
|
+
else
|
|
173
|
+
break;
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
/** A braced or quoted value, or a bare number / macro name. */
|
|
177
|
+
const readPart = () => {
|
|
178
|
+
skipSpace();
|
|
179
|
+
const c = source[i];
|
|
180
|
+
if (c === '{') {
|
|
181
|
+
let depth = 0;
|
|
182
|
+
const start = i + 1;
|
|
183
|
+
for (; i < n; i++) {
|
|
184
|
+
if (source[i] === '\\') {
|
|
185
|
+
i++;
|
|
186
|
+
continue;
|
|
187
|
+
}
|
|
188
|
+
if (source[i] === '{')
|
|
189
|
+
depth++;
|
|
190
|
+
else if (source[i] === '}') {
|
|
191
|
+
depth--;
|
|
192
|
+
if (depth === 0)
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
const value = source.slice(start, i);
|
|
197
|
+
i++;
|
|
198
|
+
return value;
|
|
199
|
+
}
|
|
200
|
+
if (c === '"') {
|
|
201
|
+
let depth = 0;
|
|
202
|
+
const start = ++i;
|
|
203
|
+
for (; i < n; i++) {
|
|
204
|
+
if (source[i] === '\\') {
|
|
205
|
+
i++;
|
|
206
|
+
continue;
|
|
207
|
+
}
|
|
208
|
+
if (source[i] === '{')
|
|
209
|
+
depth++;
|
|
210
|
+
else if (source[i] === '}')
|
|
211
|
+
depth--;
|
|
212
|
+
else if (source[i] === '"' && depth === 0)
|
|
213
|
+
break;
|
|
214
|
+
}
|
|
215
|
+
const value = source.slice(start, i);
|
|
216
|
+
i++;
|
|
217
|
+
return value;
|
|
218
|
+
}
|
|
219
|
+
const m = /^[^\s,#}=)]+/.exec(source.slice(i));
|
|
220
|
+
if (!m)
|
|
221
|
+
return undefined;
|
|
222
|
+
i += m[0].length;
|
|
223
|
+
return /^\d+$/.test(m[0]) ? m[0] : (macros[m[0].toLowerCase()] ?? m[0]);
|
|
224
|
+
};
|
|
225
|
+
const readValue = () => {
|
|
226
|
+
const parts = [];
|
|
227
|
+
for (;;) {
|
|
228
|
+
const part = readPart();
|
|
229
|
+
if (part !== undefined)
|
|
230
|
+
parts.push(part);
|
|
231
|
+
skipSpace();
|
|
232
|
+
if (source[i] === '#') {
|
|
233
|
+
i++;
|
|
234
|
+
continue;
|
|
235
|
+
}
|
|
236
|
+
break;
|
|
237
|
+
}
|
|
238
|
+
return parts.join('');
|
|
239
|
+
};
|
|
240
|
+
while (i < n) {
|
|
241
|
+
const at = source.indexOf('@', i);
|
|
242
|
+
if (at < 0)
|
|
243
|
+
break;
|
|
244
|
+
i = at + 1;
|
|
245
|
+
const typeMatch = /^[A-Za-z]+/.exec(source.slice(i));
|
|
246
|
+
if (!typeMatch)
|
|
247
|
+
continue;
|
|
248
|
+
const type = typeMatch[0].toLowerCase();
|
|
249
|
+
i += typeMatch[0].length;
|
|
250
|
+
skipSpace();
|
|
251
|
+
const open = source[i];
|
|
252
|
+
if (open !== '{' && open !== '(')
|
|
253
|
+
continue;
|
|
254
|
+
const close = open === '{' ? '}' : ')';
|
|
255
|
+
i++;
|
|
256
|
+
if (type === 'comment' || type === 'preamble') {
|
|
257
|
+
let depth = 1;
|
|
258
|
+
for (; i < n && depth > 0; i++) {
|
|
259
|
+
if (source[i] === open)
|
|
260
|
+
depth++;
|
|
261
|
+
else if (source[i] === close)
|
|
262
|
+
depth--;
|
|
263
|
+
}
|
|
264
|
+
continue;
|
|
265
|
+
}
|
|
266
|
+
if (type === 'string') {
|
|
267
|
+
skipSpace();
|
|
268
|
+
const name = /^[^\s=]+/.exec(source.slice(i))?.[0];
|
|
269
|
+
if (!name)
|
|
270
|
+
continue;
|
|
271
|
+
i += name.length;
|
|
272
|
+
skipSpace();
|
|
273
|
+
if (source[i] === '=')
|
|
274
|
+
i++;
|
|
275
|
+
macros[name.toLowerCase()] = readValue();
|
|
276
|
+
skipSpace();
|
|
277
|
+
if (source[i] === close)
|
|
278
|
+
i++;
|
|
279
|
+
continue;
|
|
280
|
+
}
|
|
281
|
+
skipSpace();
|
|
282
|
+
const key = /^[^\s,]+/.exec(source.slice(i))?.[0];
|
|
283
|
+
if (!key) {
|
|
284
|
+
issues.push({ message: `@${type} without a key`, at });
|
|
285
|
+
continue;
|
|
286
|
+
}
|
|
287
|
+
i += key.length;
|
|
288
|
+
const fields = {};
|
|
289
|
+
for (;;) {
|
|
290
|
+
skipSpace();
|
|
291
|
+
if (source[i] === ',') {
|
|
292
|
+
i++;
|
|
293
|
+
skipSpace();
|
|
294
|
+
}
|
|
295
|
+
if (i >= n) {
|
|
296
|
+
issues.push({ message: `@${type}{${key}: unclosed entry`, at });
|
|
297
|
+
break;
|
|
298
|
+
}
|
|
299
|
+
if (source[i] === close) {
|
|
300
|
+
i++;
|
|
301
|
+
break;
|
|
302
|
+
}
|
|
303
|
+
const name = /^[A-Za-z_][\w:.-]*/.exec(source.slice(i))?.[0];
|
|
304
|
+
if (!name) {
|
|
305
|
+
issues.push({ message: `@${type}{${key}: unreadable field`, at: i });
|
|
306
|
+
i++;
|
|
307
|
+
continue;
|
|
308
|
+
}
|
|
309
|
+
i += name.length;
|
|
310
|
+
skipSpace();
|
|
311
|
+
if (source[i] !== '=') {
|
|
312
|
+
issues.push({ message: `@${type}{${key}: field ${name} without =`, at: i });
|
|
313
|
+
continue;
|
|
314
|
+
}
|
|
315
|
+
i++;
|
|
316
|
+
fields[name.toLowerCase()] = readValue();
|
|
317
|
+
}
|
|
318
|
+
entries.push({ type, key, fields });
|
|
319
|
+
}
|
|
320
|
+
return entries;
|
|
321
|
+
}
|
|
322
|
+
const VERBATIM = new Set(['url', 'doi', 'eprint', 'file']);
|
|
323
|
+
/** The CSL-JSON items of a BibTeX / BibLaTeX source. */
|
|
324
|
+
export function parseBibtex(source, issues = []) {
|
|
325
|
+
return readEntries(source, issues).map((entry) => {
|
|
326
|
+
const raw = entry.fields;
|
|
327
|
+
const f = {};
|
|
328
|
+
for (const [k, v] of Object.entries(raw))
|
|
329
|
+
f[k] = VERBATIM.has(k) ? v.trim() : latexToText(v);
|
|
330
|
+
const type = TYPES[entry.type] ?? (raw.url ? 'webpage' : 'document');
|
|
331
|
+
const item = { id: entry.key, type };
|
|
332
|
+
const set = (field, value) => {
|
|
333
|
+
if (value !== undefined && value.length > 0)
|
|
334
|
+
item[field] = value;
|
|
335
|
+
};
|
|
336
|
+
set('title', f.title);
|
|
337
|
+
if (raw.author)
|
|
338
|
+
item.author = parseNames(raw.author);
|
|
339
|
+
if (raw.editor)
|
|
340
|
+
item.editor = parseNames(raw.editor);
|
|
341
|
+
if (raw.translator)
|
|
342
|
+
item.translator = parseNames(raw.translator);
|
|
343
|
+
set('container-title', f.journaltitle ?? f.journal ?? f.booktitle);
|
|
344
|
+
set('collection-title', f.series);
|
|
345
|
+
set('publisher', f.publisher ?? f.school ?? f.institution ?? f.organization);
|
|
346
|
+
set('publisher-place', f.location ?? f.address);
|
|
347
|
+
set('volume', f.volume);
|
|
348
|
+
if (type === 'article-journal' || type === 'article-magazine' || type === 'article-newspaper')
|
|
349
|
+
set('issue', f.number ?? f.issue);
|
|
350
|
+
else
|
|
351
|
+
set('number', f.number);
|
|
352
|
+
set('page', f.pages?.replace(/\s*[-–]+\s*/g, '–'));
|
|
353
|
+
set('edition', f.edition);
|
|
354
|
+
set('chapter-number', f.chapter);
|
|
355
|
+
set('genre', f.type ?? (entry.type === 'phdthesis' ? 'PhD thesis' : entry.type === 'mastersthesis' ? "Master's thesis" : undefined));
|
|
356
|
+
set('ISBN', f.isbn);
|
|
357
|
+
set('ISSN', f.issn);
|
|
358
|
+
set('DOI', f.doi?.replace(/^https?:\/\/(?:dx\.)?doi\.org\//i, ''));
|
|
359
|
+
set('URL', f.url);
|
|
360
|
+
set('note', f.note);
|
|
361
|
+
const language = (f.langid ?? f.language)?.toLowerCase();
|
|
362
|
+
if (language)
|
|
363
|
+
set('language', LANGUAGES[language] ?? language);
|
|
364
|
+
const issued = parseDate(f);
|
|
365
|
+
if (issued)
|
|
366
|
+
item.issued = issued;
|
|
367
|
+
if (f.urldate) {
|
|
368
|
+
const m = /^(\d{4})-(\d{1,2})-(\d{1,2})/.exec(f.urldate);
|
|
369
|
+
if (m)
|
|
370
|
+
item.accessed = { 'date-parts': [[Number(m[1]), Number(m[2]), Number(m[3])]] };
|
|
371
|
+
}
|
|
372
|
+
return item;
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
//# sourceMappingURL=bibtex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bibtex.js","sourceRoot":"","sources":["../../src/citations/bibtex.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The citations of a book (#272): every reference its documents define,
|
|
3
|
+
* every citation in reading order, and where each document's citations
|
|
4
|
+
* sit in that order. Numbering, disambiguation and *ibid.* see the whole
|
|
5
|
+
* book, so each document is formatted against its book's context — the
|
|
6
|
+
* host builds it once (`bookCitationContexts`) and hands each chapter its
|
|
7
|
+
* own; a document laid out alone is a book of one.
|
|
8
|
+
*/
|
|
9
|
+
import type { ContentBlock } from '../parse';
|
|
10
|
+
import type { CitationClusterInput, CslItem } from './types';
|
|
11
|
+
import { type ReferenceIssue } from './data';
|
|
12
|
+
/** A document's share of its book's citations. */
|
|
13
|
+
export interface CitationContext {
|
|
14
|
+
/** Every reference of the book (the first definition of a key wins). */
|
|
15
|
+
items: CslItem[];
|
|
16
|
+
/** Keys the book lists without citing them (`'*'`: all). */
|
|
17
|
+
nocite: string[];
|
|
18
|
+
/** Every citation of the book in note order: reading order, a citation
|
|
19
|
+
* inside a footnote at its note's place. `noteIndex` is the note a
|
|
20
|
+
* note style sets it in. */
|
|
21
|
+
clusters: CitationClusterInput[];
|
|
22
|
+
/** The index in {@link clusters} of each citation of this document, in
|
|
23
|
+
* the order the document's spans hold them. */
|
|
24
|
+
local: number[];
|
|
25
|
+
/** Some document of the book places the bibliography (`:::bibliography`). */
|
|
26
|
+
placed: boolean;
|
|
27
|
+
/** This document is the book's last (the bibliography goes after it when
|
|
28
|
+
* nothing places it). */
|
|
29
|
+
last: boolean;
|
|
30
|
+
/** Problems with this document's reference data. */
|
|
31
|
+
issues: ReferenceIssue[];
|
|
32
|
+
}
|
|
33
|
+
/** The citations of a parsed document, each with the note it sits in:
|
|
34
|
+
* `note` is the footnote id for a citation in a footnote's text. */
|
|
35
|
+
export declare function citationsOfBlocks(blocks: readonly ContentBlock[]): {
|
|
36
|
+
cluster: CitationClusterInput;
|
|
37
|
+
note?: string;
|
|
38
|
+
}[];
|
|
39
|
+
/** Whether a document has anything for the citations to do: a citation,
|
|
40
|
+
* a `:::references` or `:::bibliography` block, or references in its front
|
|
41
|
+
* matter. */
|
|
42
|
+
export declare function needsCitationContext(blocks: readonly ContentBlock[], metadata: Record<string, unknown> | object | undefined): boolean;
|
|
43
|
+
/** Whether the parsed content places a bibliography. */
|
|
44
|
+
export declare function hasBibliographyDirective(blocks: readonly ContentBlock[]): boolean;
|
|
45
|
+
/** One document of a book, parsed: its front matter and blocks. */
|
|
46
|
+
export interface CitationSource {
|
|
47
|
+
metadata?: Record<string, unknown>;
|
|
48
|
+
blocks: readonly ContentBlock[];
|
|
49
|
+
}
|
|
50
|
+
/** The parsed form of a document's markdown, for {@link bookCitationContexts}. */
|
|
51
|
+
export declare function citationSourceOf(markdown: string): CitationSource;
|
|
52
|
+
/**
|
|
53
|
+
* The citation context of every document of a book, in order. Notes are
|
|
54
|
+
* counted through the book: a footnote marker takes the next note the
|
|
55
|
+
* first time its id is cited, a citation in the text takes a note of its
|
|
56
|
+
* own (where a note style sets it), and a citation in a footnote's text
|
|
57
|
+
* sits in that footnote's note.
|
|
58
|
+
*/
|
|
59
|
+
export declare function bookCitationContexts(sources: readonly CitationSource[]): CitationContext[];
|
|
60
|
+
/** A fingerprint of a context's book-wide part: what a chapter's citations
|
|
61
|
+
* and bibliography depend on (a host compares it to know a chapter's
|
|
62
|
+
* layout went stale). */
|
|
63
|
+
export declare function citationContextKey(ctx: CitationContext | undefined): string;
|
|
64
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/citations/context.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAG7C,OAAO,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,QAAQ,CAAC;AAEjE,kDAAkD;AAClD,MAAM,WAAW,eAAe;IAC9B,wEAAwE;IACxE,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,4DAA4D;IAC5D,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;iCAE6B;IAC7B,QAAQ,EAAE,oBAAoB,EAAE,CAAC;IACjC;oDACgD;IAChD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,6EAA6E;IAC7E,MAAM,EAAE,OAAO,CAAC;IAChB;8BAC0B;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,oDAAoD;IACpD,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B;AAED;qEACqE;AACrE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG;IAAE,OAAO,EAAE,oBAAoB,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,CAQrH;AAED;;cAEc;AACd,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAGrI;AAED,wDAAwD;AACxD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,OAAO,CAEjF;AAED,mEAAmE;AACnE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;CACjC;AAED,kFAAkF;AAClF,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAGjE;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,GAAG,eAAe,EAAE,CAkD1F;AAED;;0BAE0B;AAC1B,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,eAAe,GAAG,SAAS,GAAG,MAAM,CAG3E"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The citations of a book (#272): every reference its documents define,
|
|
3
|
+
* every citation in reading order, and where each document's citations
|
|
4
|
+
* sit in that order. Numbering, disambiguation and *ibid.* see the whole
|
|
5
|
+
* book, so each document is formatted against its book's context — the
|
|
6
|
+
* host builds it once (`bookCitationContexts`) and hands each chapter its
|
|
7
|
+
* own; a document laid out alone is a book of one.
|
|
8
|
+
*/
|
|
9
|
+
import { extractFrontmatter } from '../frontmatter';
|
|
10
|
+
import { parseMarkdownMemo } from '../parse';
|
|
11
|
+
import { documentReferences } from './data';
|
|
12
|
+
/** The citations of a parsed document, each with the note it sits in:
|
|
13
|
+
* `note` is the footnote id for a citation in a footnote's text. */
|
|
14
|
+
export function citationsOfBlocks(blocks) {
|
|
15
|
+
const out = [];
|
|
16
|
+
for (const b of blocks) {
|
|
17
|
+
for (const s of b.spans) {
|
|
18
|
+
if (s.citation)
|
|
19
|
+
out.push({ cluster: s.citation.cluster, ...(b.footnoteDef !== undefined ? { note: b.footnoteDef } : {}) });
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return out;
|
|
23
|
+
}
|
|
24
|
+
/** Whether a document has anything for the citations to do: a citation,
|
|
25
|
+
* a `:::references` or `:::bibliography` block, or references in its front
|
|
26
|
+
* matter. */
|
|
27
|
+
export function needsCitationContext(blocks, metadata) {
|
|
28
|
+
if (metadata && Array.isArray(metadata.references))
|
|
29
|
+
return true;
|
|
30
|
+
return blocks.some((b) => (b.type === 'directive' && (b.directiveName === 'references' || b.directiveName === 'bibliography')) || b.spans.some((s) => s.citation));
|
|
31
|
+
}
|
|
32
|
+
/** Whether the parsed content places a bibliography. */
|
|
33
|
+
export function hasBibliographyDirective(blocks) {
|
|
34
|
+
return blocks.some((b) => b.type === 'directive' && b.directiveName === 'bibliography');
|
|
35
|
+
}
|
|
36
|
+
/** The parsed form of a document's markdown, for {@link bookCitationContexts}. */
|
|
37
|
+
export function citationSourceOf(markdown) {
|
|
38
|
+
const { metadata, content } = extractFrontmatter(markdown);
|
|
39
|
+
return { metadata: metadata, blocks: parseMarkdownMemo(content) };
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The citation context of every document of a book, in order. Notes are
|
|
43
|
+
* counted through the book: a footnote marker takes the next note the
|
|
44
|
+
* first time its id is cited, a citation in the text takes a note of its
|
|
45
|
+
* own (where a note style sets it), and a citation in a footnote's text
|
|
46
|
+
* sits in that footnote's note.
|
|
47
|
+
*/
|
|
48
|
+
export function bookCitationContexts(sources) {
|
|
49
|
+
const items = [];
|
|
50
|
+
const seen = new Set();
|
|
51
|
+
const nocite = [];
|
|
52
|
+
const issues = [];
|
|
53
|
+
for (const src of sources) {
|
|
54
|
+
const data = documentReferences(src.metadata, src.blocks);
|
|
55
|
+
for (const item of data.items) {
|
|
56
|
+
if (seen.has(item.id))
|
|
57
|
+
continue;
|
|
58
|
+
seen.add(item.id);
|
|
59
|
+
items.push(item);
|
|
60
|
+
}
|
|
61
|
+
for (const k of data.nocite)
|
|
62
|
+
if (!nocite.includes(k))
|
|
63
|
+
nocite.push(k);
|
|
64
|
+
issues.push(data.issues);
|
|
65
|
+
}
|
|
66
|
+
// Note order: number the notes, then sort the citations by note.
|
|
67
|
+
let note = 0;
|
|
68
|
+
const entries = [];
|
|
69
|
+
let seq = 0;
|
|
70
|
+
sources.forEach((src, doc) => {
|
|
71
|
+
const noteOf = new Map();
|
|
72
|
+
const inNotes = [];
|
|
73
|
+
let order = 0;
|
|
74
|
+
for (const b of src.blocks) {
|
|
75
|
+
if (b.footnoteDef !== undefined) {
|
|
76
|
+
for (const s of b.spans)
|
|
77
|
+
if (s.citation)
|
|
78
|
+
inNotes.push({ cluster: s.citation.cluster, note: b.footnoteDef, order: order++ });
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
for (const s of b.spans) {
|
|
82
|
+
if (s.footnote && !noteOf.has(s.footnote.id))
|
|
83
|
+
noteOf.set(s.footnote.id, ++note);
|
|
84
|
+
if (s.citation)
|
|
85
|
+
entries.push({ cluster: s.citation.cluster, doc, order: order++, noteIndex: ++note, seq: seq++ });
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
for (const c of inNotes)
|
|
89
|
+
entries.push({ cluster: c.cluster, doc, order: c.order, noteIndex: noteOf.get(c.note) ?? 0, seq: seq++ });
|
|
90
|
+
});
|
|
91
|
+
const sorted = [...entries].sort((a, b) => a.doc - b.doc || a.noteIndex - b.noteIndex || a.seq - b.seq);
|
|
92
|
+
const clusters = sorted.map((e) => ({ ...e.cluster, noteIndex: e.noteIndex }));
|
|
93
|
+
const placed = sources.some((s) => hasBibliographyDirective(s.blocks));
|
|
94
|
+
return sources.map((_, doc) => {
|
|
95
|
+
const mine = sorted.map((e, i) => ({ e, i })).filter(({ e }) => e.doc === doc).sort((a, b) => a.e.order - b.e.order);
|
|
96
|
+
return {
|
|
97
|
+
items,
|
|
98
|
+
nocite,
|
|
99
|
+
clusters,
|
|
100
|
+
local: mine.map(({ i }) => i),
|
|
101
|
+
placed,
|
|
102
|
+
last: doc === sources.length - 1,
|
|
103
|
+
issues: issues[doc] ?? [],
|
|
104
|
+
};
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
/** A fingerprint of a context's book-wide part: what a chapter's citations
|
|
108
|
+
* and bibliography depend on (a host compares it to know a chapter's
|
|
109
|
+
* layout went stale). */
|
|
110
|
+
export function citationContextKey(ctx) {
|
|
111
|
+
if (!ctx)
|
|
112
|
+
return '';
|
|
113
|
+
return JSON.stringify([ctx.items, ctx.nocite, ctx.clusters, ctx.local, ctx.placed, ctx.last]);
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=context.js.map
|