Skip to content

Commit 6ea9419

Browse files
committed
feat(dgeni): add deprecated field to API doc
1 parent c2bd2df commit 6ea9419

5 files changed

Lines changed: 56 additions & 10 deletions

File tree

libs/docs-utils/src/doc/api.type.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@ import { DaffDocExample } from '../example/public_api';
77
export interface DaffApiDoc extends DaffDoc {
88
docType: string;
99
examples: Array<DaffDocExample>;
10+
deprecated: boolean;
1011
}

tools/dgeni/src/processors/markdown.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,6 @@ export class MarkdownCodeProcessor implements FilterableProcessor {
8181
doc.longDescription = this.parse(doc.longDescription).replaceAll(/(^<p>)|(<\/p>(\n)*$)/gm, '');
8282
}
8383
doc.slug = slugify(doc.name || doc.title);
84-
if (doc.sourceApiBlock) {
85-
doc.sourceApiBlock = this.parse(`\`\`\`ts\n${doc.sourceApiBlock}\n\`\`\``);
86-
}
8784
};
8885
return doc;
8986
});

tools/dgeni/src/transforms/daffodil-api-package/index.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ import {
2121
ADD_SUBPACKAGE_EXPORTS_PROCESSOR_NAME,
2222
ADD_SUBPACKAGE_EXPORTS_PROCESSOR_PROVIDER,
2323
} from './processors/add-subpackage-exports';
24+
import {
25+
DEPRECATED_PROCESSOR_PROVIDER,
26+
DeprecatedProcessor,
27+
} from './processors/deprecated';
2428
import { RemoveDuplicatesProcessor } from './processors/remove-duplicates';
2529
import { DAFF_DGENI_EXCLUDED_PACKAGES_REGEX } from '../../constants/excluded-packages';
2630
import { AddKindProcessor } from '../../processors/add-kind';
@@ -70,6 +74,7 @@ export const apiDocsBase = new Package('api-base', [
7074
.processor(...COLLECT_LINKABLE_SYMBOLS_PROCESSOR_PROVIDER)
7175
.processor(...EXAMPLES_PROCESSOR_PROVIDER)
7276
.processor(...ADD_SOURCE_PROVIDER)
77+
.processor(...DEPRECATED_PROCESSOR_PROVIDER)
7378
.factory('API_DOC_TYPES_TO_RENDER', (EXPORT_DOC_TYPES) => EXPORT_DOC_TYPES.concat(['component', 'directive', 'pipe']))
7479
.config((readFilesProcessor, readTypeScriptModules, tsParser) => {
7580

@@ -91,7 +96,9 @@ export const apiDocsBase = new Package('api-base', [
9196
breadcrumb: BreadcrumbProcessor,
9297
examples: ExamplesProcessor,
9398
addSource: AddSourceProcessor,
99+
deprecated: DeprecatedProcessor,
94100
) => {
101+
deprecated.docTypes.push(...EXPORT_DOC_TYPES);
95102
markdown.docTypes.push(...EXPORT_DOC_TYPES);
96103
examples.docTypes.push(...EXPORT_DOC_TYPES);
97104
markdown.docTypes.push(...EXPORT_DOC_TYPES);
@@ -135,7 +142,7 @@ export const apiDocsBase = new Package('api-base', [
135142
})
136143
.config((convertToJson: ConvertToJsonProcessor, API_DOC_TYPES_TO_RENDER) => {
137144
convertToJson.docTypes = convertToJson.docTypes.concat(API_DOC_TYPES_TO_RENDER);
138-
convertToJson.extraFields.push('examples');
145+
convertToJson.extraFields.push('examples', 'deprecated');
139146
})
140147
.config((templateFinder) => {
141148
// Where to find the templates for the API doc rendering

tools/dgeni/src/transforms/daffodil-api-package/processors/add-source.ts

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ import type { MemberDoc } from 'dgeni-packages/typescript/api-doc-types/MemberDo
88
import { MethodMemberDoc } from 'dgeni-packages/typescript/api-doc-types/MethodMemberDoc';
99
import { PropertyMemberDoc } from 'dgeni-packages/typescript/api-doc-types/PropertyMemberDoc';
1010
import type { TypeAliasExportDoc } from 'dgeni-packages/typescript/api-doc-types/TypeAliasExportDoc';
11+
import { MarkdownCodeProcessor } from 'tools/dgeni/src/processors/markdown';
1112

12-
import { MARKDOWN_CODE_PROCESSOR_NAME } from '../../../processors/markdown';
1313
import { FilterableProcessor } from '../../../utils/filterable-processor.type';
1414
import { htmlDecodeBrackets } from '../../../utils/html-brackets';
1515

@@ -49,7 +49,9 @@ const enumBlock = (doc: EnumExportDoc): string => {
4949

5050
const interfaceBlock = (doc: InterfaceExportDoc): string => {
5151
const members = doc.members.reduce((acc, member) =>
52-
`${acc}${tab()}${getMemberModifiers(member)}${member.name}: ${member.type}\n`
52+
(<any>member).deprecated//
53+
? `${acc}${tab()}~a~${getMemberModifiers(member)}${member.name}: ${member.type}~z~\n`
54+
: `${acc}${tab()}${getMemberModifiers(member)}${member.name}: ${member.type}\n`
5355
, '\n');
5456

5557
return `interface ${doc.name}${doc.typeParams} {${members}}`;
@@ -105,7 +107,9 @@ const classMember = (doc: ClassMember): string => {
105107
return property;
106108
}
107109

108-
return `${decorators}${getMemberModifiers(doc)}${doc.name}${type}`;
110+
return (<any>doc).deprecated
111+
? `~a~${decorators}${getMemberModifiers(doc)}${doc.name}${type}~z~`
112+
: `${decorators}${getMemberModifiers(doc)}${doc.name}${type}`;
109113
}
110114

111115
return '';
@@ -148,7 +152,7 @@ export const ADD_SOURCE_NAME = 'addSource';
148152
export class AddSourceProcessor implements FilterableProcessor {
149153
readonly name = ADD_SOURCE_NAME;
150154
readonly $runAfter = ['paths-absolutified'];
151-
readonly $runBefore = ['rendering-docs', MARKDOWN_CODE_PROCESSOR_NAME];
155+
readonly $runBefore = ['rendering-docs'];
152156

153157
docTypes = [];
154158

@@ -177,10 +181,16 @@ export class AddSourceProcessor implements FilterableProcessor {
177181
}
178182
}
179183

184+
constructor(
185+
private markdown: MarkdownCodeProcessor,
186+
) {}
187+
180188
$process(docs: Array<Document>): Array<Document> {
181189
return docs.map(doc => {
182190
if (this.docTypes.includes(doc.docType)) {
183-
doc.sourceApiBlock = htmlDecodeBrackets(this.getSourceBlock(doc));
191+
doc.sourceApiBlock = this.markdown.parse(`\`\`\`ts\n${htmlDecodeBrackets(this.getSourceBlock(doc))}\n\`\`\``)
192+
.replaceAll('~a~', '<strike>')
193+
.replaceAll('~z~', '</strike>');
184194
}
185195
return doc;
186196
});
@@ -189,5 +199,5 @@ export class AddSourceProcessor implements FilterableProcessor {
189199

190200
export const ADD_SOURCE_PROVIDER = <const>[
191201
ADD_SOURCE_NAME,
192-
() => new AddSourceProcessor(),
202+
(markdown: MarkdownCodeProcessor) => new AddSourceProcessor(markdown),
193203
];
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { Document } from 'dgeni';
2+
3+
4+
import { FilterableProcessor } from '../../../utils/filterable-processor.type';
5+
6+
export const DEPRECATED_PROCESSOR_NAME = 'deprecated';
7+
8+
/**
9+
* Adds subpackage entry point docs to the containing package doc.
10+
*/
11+
export class DeprecatedProcessor implements FilterableProcessor {
12+
readonly name = DEPRECATED_PROCESSOR_NAME;
13+
readonly $runAfter = ['docs-processed'];
14+
readonly $runBefore = ['rendering-docs'];
15+
16+
docTypes = [];
17+
18+
$process(docs: Array<Document>): Array<Document> {
19+
return docs.map((doc) => {
20+
if (this.docTypes.includes(doc.docType)) {
21+
doc.deprecated = !!doc.tags.getTag('deprecated');
22+
}
23+
return doc;
24+
});
25+
}
26+
}
27+
28+
export const DEPRECATED_PROCESSOR_PROVIDER = <const>[
29+
DEPRECATED_PROCESSOR_NAME,
30+
() => new DeprecatedProcessor(),
31+
];

0 commit comments

Comments
 (0)