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 ) ;
0 commit comments