Skip to content

Commit e5503b7

Browse files
committed
Add pathway to forward inputtraits to post processors
1 parent 04c6092 commit e5503b7

File tree

3 files changed

+25
-10
lines changed

3 files changed

+25
-10
lines changed

src/command/render/pandoc.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -153,9 +153,7 @@ import {
153153
parsePandocDate,
154154
parseSpecialDate,
155155
} from "../../core/date.ts";
156-
import { copyFileIfNewer } from "../../core/copy.ts";
157156
import { katexPostProcessor } from "../../format/html/format-html-math.ts";
158-
import { lines } from "../../core/lib/text.ts";
159157
import {
160158
readAndInjectDependencies,
161159
writeDependencies,
@@ -860,25 +858,31 @@ export async function runPandoc(
860858
},
861859
);
862860

863-
// TODO: Process Dependencies
864-
865861
// resolve resource files from metadata
866862
const resources: string[] = resourcesFromMetadata(
867863
options.format.metadata[kResources],
868864
);
869865

870866
// read any resourceFiles generated by filters
867+
let inputTraits = {};
871868
if (existsSync(filterResultsFile)) {
872869
const filterResultsJSON = Deno.readTextFileSync(filterResultsFile);
873870
if (filterResultsJSON.trim().length > 0) {
874871
const filterResults = JSON.parse(filterResultsJSON);
875-
resources.push(...(filterResults.resourceFiles || []));
872+
873+
// Read any input traits
874+
inputTraits = filterResults.inputTraits;
875+
876+
// Read any resource files
877+
const resourceFiles = filterResults.resourceFiles || [];
878+
resources.push(...resourceFiles);
876879
}
877880
}
878881

879882
if (result.success) {
880883
return {
881884
inputMetadata: pandocMetadata,
885+
inputTraits,
882886
resources,
883887
postprocessors,
884888
htmlPostprocessors: isHtmlOutput(options.format.pandoc)

src/command/render/render.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,12 @@ import {
2222
executionEngineKeepMd,
2323
} from "../../execute/engine.ts";
2424

25-
import { HtmlPostProcessResult, PandocOptions } from "./types.ts";
25+
import {
26+
HtmlPostProcessor,
27+
HtmlPostProcessResult,
28+
PandocInputTraits,
29+
PandocOptions,
30+
} from "./types.ts";
2631
import { runPandoc } from "./pandoc.ts";
2732
import { renderCleanup } from "./cleanup.ts";
2833
import { projectOffset } from "../../project/project-shared.ts";
@@ -140,6 +145,7 @@ export async function renderPandoc(
140145

141146
const htmlPostProcessResult = await runHtmlPostprocessors(
142147
pandocResult.inputMetadata,
148+
pandocResult.inputTraits,
143149
pandocOptions,
144150
htmlPostProcessors,
145151
htmlFinalizers,
@@ -326,10 +332,9 @@ function mergePandocIncludes(
326332

327333
async function runHtmlPostprocessors(
328334
inputMetadata: Metadata,
335+
inputTraits: PandocInputTraits,
329336
options: PandocOptions,
330-
htmlPostprocessors: Array<
331-
(doc: Document, inputMetadata: Metadata) => Promise<HtmlPostProcessResult>
332-
>,
337+
htmlPostprocessors: Array<HtmlPostProcessor>,
333338
htmlFinalizers: Array<(doc: Document) => Promise<void>>,
334339
): Promise<HtmlPostProcessResult> {
335340
const postProcessResult: HtmlPostProcessResult = {
@@ -345,7 +350,7 @@ async function runHtmlPostprocessors(
345350
const doc = await parseHtml(htmlInput);
346351
for (let i = 0; i < htmlPostprocessors.length; i++) {
347352
const postprocessor = htmlPostprocessors[i];
348-
const result = await postprocessor(doc, inputMetadata);
353+
const result = await postprocessor(doc, inputMetadata, inputTraits);
349354

350355
postProcessResult.resources.push(...result.resources);
351356
postProcessResult.supporting.push(...result.supporting);

src/command/render/types.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,15 +49,21 @@ export interface RenderContext {
4949

5050
export interface RunPandocResult {
5151
inputMetadata: Metadata;
52+
inputTraits: PandocInputTraits;
5253
resources: string[];
5354
postprocessors?: Array<(output: string) => Promise<void>>;
5455
htmlPostprocessors: Array<HtmlPostProcessor>;
5556
htmlFinalizers?: Array<(doc: Document) => Promise<void>>;
5657
}
5758

59+
export interface PandocInputTraits {
60+
bibliographyTarget?: boolean;
61+
}
62+
5863
export type HtmlPostProcessor = (
5964
doc: Document,
6065
inputMedata: Metadata,
66+
inputTraits: PandocInputTraits,
6167
) => Promise<HtmlPostProcessResult>;
6268

6369
export interface HtmlPostProcessResult {

0 commit comments

Comments
 (0)