Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
quarto-dev
GitHub Repository: quarto-dev/quarto-cli
Path: blob/main/tools/copy-typst-partials.ts
3544 views
1
import * as path from 'stdlib/path';
2
3
const srcTemplate = path.parse('../src/resources/formats/typst/pandoc/quarto/typst-template.typ');
4
const destTemplate = path.parse('../src/resources/create/extensions/format-typst/_extensions/qstart-filesafename-qend/typst-template.typ');
5
const srcShow = path.parse('../src/resources/formats/typst/pandoc/quarto/typst-show.typ');
6
const destShow = path.parse('../src/resources/create/extensions/format-typst/_extensions/qstart-filesafename-qend/typst-show.typ');
7
8
const templatePreamble = `
9
// This is an example typst template (based on the default template that ships
10
// with Quarto). It defines a typst function named 'article' which provides
11
// various customization options. This function is called from the
12
// 'typst-show.typ' file (which maps Pandoc metadata function arguments)
13
//
14
// If you are creating or packaging a custom typst template you will likely
15
// want to replace this file and 'typst-show.typ' entirely. You can find
16
// documentation on creating typst templates and some examples here:
17
// - https://typst.app/docs/tutorial/making-a-template/
18
// - https://github.com/typst/templates
19
`;
20
21
const showPreamble = `
22
// Typst custom formats typically consist of a 'typst-template.typ' (which is
23
// the source code for a typst template) and a 'typst-show.typ' which calls the
24
// template's function (forwarding Pandoc metadata values as required)
25
//
26
// This is an example 'typst-show.typ' file (based on the default template
27
// that ships with Quarto). It calls the typst function named 'article' which
28
// is defined in the 'typst-template.typ' file.
29
//
30
// If you are creating or packaging a custom typst template you will likely
31
// want to replace this file and 'typst-template.typ' entirely. You can find
32
// documentation on creating typst templates here and some examples here:
33
// - https://typst.app/docs/tutorial/making-a-template/
34
// - https://github.com/typst/templates
35
`;
36
37
const encoder = new TextEncoder(), decoder = new TextDecoder();
38
const scriptDir = import.meta.dirname;
39
40
async function splicePartial(preamble : string, source : string, dest : string) {
41
const template = await Deno.readFile(path.join(scriptDir, path.format(source)));
42
const templateOut = preamble + decoder.decode(template);
43
await Deno.writeFile(path.join(scriptDir, path.format(dest)), encoder.encode(templateOut));
44
}
45
46
await splicePartial(templatePreamble, srcTemplate, destTemplate);
47
await splicePartial(showPreamble, srcShow, destShow);
48