Skip to content

Commit df6518d

Browse files
committed
Allow contributes: formats:
and internally use `formats` rather than `format`
1 parent ed10c4a commit df6518d

File tree

6 files changed

+24
-24
lines changed

6 files changed

+24
-24
lines changed

src/command/list/cmd.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,20 +77,20 @@ async function outputExtensions(
7777
extension.contributes.filters &&
7878
extension.contributes.filters?.length > 0
7979
) {
80-
contribs.push("filter");
80+
contribs.push("filters");
8181
}
8282

8383
if (
8484
extension.contributes.shortcodes &&
8585
extension.contributes.shortcodes?.length > 0
8686
) {
87-
contribs.push("shortcode");
87+
contribs.push("shortcodes");
8888
}
8989

9090
if (
91-
extension.contributes.format
91+
extension.contributes.formats
9292
) {
93-
contribs.push("format");
93+
contribs.push("formats");
9494
}
9595
return contribs.join(", ");
9696
};

src/command/render/render-contexts.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ import {
4444
kIncludeBeforeBody,
4545
kIncludeInHeader,
4646
kIpynbFilters,
47-
kLatexInputPaths,
4847
kMetadataFormat,
4948
kOutputExt,
5049
kOutputFile,
@@ -573,7 +572,7 @@ const readExtensionFormat = async (
573572
);
574573

575574
// Read the yaml file and resolve / bucketize
576-
const extensionFormat = extension?.contributes.format;
575+
const extensionFormat = extension?.contributes.formats;
577576
if (extensionFormat) {
578577
const extensionMetadata =
579578
(extensionFormat[formatDesc.baseFormat] || {}) as Metadata;

src/extension/extension-shared.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export interface Extension extends Record<string, unknown> {
2525
contributes: {
2626
shortcodes?: string[];
2727
filters?: QuartoFilter[];
28-
format?: Record<string, unknown>;
28+
formats?: Record<string, unknown>;
2929
};
3030
}
3131

@@ -42,7 +42,7 @@ export interface ExtensionContext {
4242
find(
4343
name: string,
4444
input: string,
45-
contributes?: "shortcodes" | "filters" | "format",
45+
contributes?: "shortcodes" | "filters" | "formats",
4646
project?: ProjectContext,
4747
): Extension[];
4848
}

src/extension/extension.ts

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ export function createExtensionContext(): ExtensionContext {
6363
const find = (
6464
name: string,
6565
input: string,
66-
contributes?: "shortcodes" | "filters" | "format",
66+
contributes?: "shortcodes" | "filters" | "formats",
6767
project?: ProjectContext,
6868
): Extension[] => {
6969
const extId = toExtensionId(name);
@@ -145,15 +145,15 @@ const loadExtension = (
145145
function findExtensions(
146146
extensions: Extension[],
147147
extensionId: ExtensionId,
148-
contributes?: "shortcodes" | "filters" | "format",
148+
contributes?: "shortcodes" | "filters" | "formats",
149149
) {
150150
// Filter the extension based upon what they contribute
151151
const exts = extensions.filter((ext) => {
152152
if (contributes === "shortcodes" && ext.contributes.shortcodes) {
153153
return true;
154154
} else if (contributes === "filters" && ext.contributes.filters) {
155155
return true;
156-
} else if (contributes === "format" && ext.contributes.format) {
156+
} else if (contributes === "formats" && ext.contributes.formats) {
157157
return true;
158158
} else {
159159
return contributes === undefined;
@@ -352,7 +352,7 @@ function validateExtension(extension: Extension) {
352352
const contribs = [
353353
extension.contributes.filters,
354354
extension.contributes.shortcodes,
355-
extension.contributes.format,
355+
extension.contributes.formats,
356356
];
357357
contribs.forEach((contrib) => {
358358
if (contrib) {
@@ -409,19 +409,20 @@ function readExtension(
409409
return resolveFilter(embeddedExtensions, extensionDir, filter);
410410
},
411411
);
412-
const format = contributes?.format as Metadata || {};
412+
const formats = contributes?.formats as Metadata ||
413+
contributes?.format as Metadata || {};
413414

414415
// Process the special 'common' key by merging it
415416
// into any key that isn't 'common' and then removing it
416-
Object.keys(format).filter((key) => {
417+
Object.keys(formats).filter((key) => {
417418
return key !== kCommon;
418419
}).forEach((key) => {
419-
format[key] = mergeConfigs(
420-
format[kCommon] || {},
421-
format[key],
420+
formats[key] = mergeConfigs(
421+
formats[kCommon] || {},
422+
formats[key],
422423
);
423424
});
424-
delete format[kCommon];
425+
delete formats[kCommon];
425426

426427
// Create the extension data structure
427428
return {
@@ -433,7 +434,7 @@ function readExtension(
433434
contributes: {
434435
shortcodes: shortcodes.map((code) => join(extensionDir, code)),
435436
filters,
436-
format,
437+
formats,
437438
},
438439
};
439440
}

src/extension/install.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ async function determineInstallDir(
115115
// use its path as the target for installation
116116
const extension = context.extension(extensionName, dir);
117117
if (extension) {
118-
if (Object.keys(extension?.contributes.format || {}).length > 0) {
118+
if (Object.keys(extension?.contributes.formats || {}).length > 0) {
119119
return extension?.path;
120120
} else {
121121
throw new Error(
@@ -324,10 +324,10 @@ async function confirmInstallation(
324324
const contributes = to.contributes;
325325
const extTypes: string[] = [];
326326
if (
327-
contributes.format &&
328-
Object.keys(contributes.format).length > 0
327+
contributes.formats &&
328+
Object.keys(contributes.formats).length > 0
329329
) {
330-
Object.keys(contributes.format).length === 1
330+
Object.keys(contributes.formats).length === 1
331331
? extTypes.push("format")
332332
: extTypes.push("formats");
333333
}

tests/docs/extensions/format/academic/_extensions/quarto-journals/elsevier/_extension.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: Elsevier Journal Format
22
contributes:
3-
format:
3+
formats:
44
common:
55
date-format: full
66
pdf:

0 commit comments

Comments
 (0)