Spaces:
Sleeping
Sleeping
File size: 5,213 Bytes
6abff73 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | // Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
// See LICENSE in the project root for license information.
import { DocNodeKind, DocNode } from './DocNode';
import { DocExcerpt, ExcerptKind } from './DocExcerpt';
/**
* Represents CommonMark-style code fence, i.e. a block of program code that
* starts and ends with a line comprised of three backticks. The opening delimiter
* can also specify a language for a syntax highlighter.
*/
export class DocFencedCode extends DocNode {
/**
* Don't call this directly. Instead use {@link TSDocParser}
* @internal
*/
constructor(parameters) {
super(parameters);
if (DocNode.isParsedParameters(parameters)) {
this._openingFenceExcerpt = new DocExcerpt({
configuration: this.configuration,
excerptKind: ExcerptKind.FencedCode_OpeningFence,
content: parameters.openingFenceExcerpt
});
if (parameters.spacingAfterOpeningFenceExcerpt) {
this._spacingAfterOpeningFenceExcerpt = new DocExcerpt({
configuration: this.configuration,
excerptKind: ExcerptKind.Spacing,
content: parameters.spacingAfterOpeningFenceExcerpt
});
}
if (parameters.languageExcerpt) {
this._languageExcerpt = new DocExcerpt({
configuration: this.configuration,
excerptKind: ExcerptKind.FencedCode_Language,
content: parameters.languageExcerpt
});
}
if (parameters.spacingAfterLanguageExcerpt) {
this._spacingAfterLanguageExcerpt = new DocExcerpt({
configuration: this.configuration,
excerptKind: ExcerptKind.Spacing,
content: parameters.spacingAfterLanguageExcerpt
});
}
this._codeExcerpt = new DocExcerpt({
configuration: this.configuration,
excerptKind: ExcerptKind.FencedCode_Code,
content: parameters.codeExcerpt
});
if (parameters.spacingBeforeClosingFenceExcerpt) {
this._spacingBeforeClosingFenceExcerpt = new DocExcerpt({
configuration: this.configuration,
excerptKind: ExcerptKind.Spacing,
content: parameters.spacingBeforeClosingFenceExcerpt
});
}
this._closingFenceExcerpt = new DocExcerpt({
configuration: this.configuration,
excerptKind: ExcerptKind.FencedCode_ClosingFence,
content: parameters.closingFenceExcerpt
});
if (parameters.spacingAfterClosingFenceExcerpt) {
this._spacingAfterClosingFenceExcerpt = new DocExcerpt({
configuration: this.configuration,
excerptKind: ExcerptKind.Spacing,
content: parameters.spacingAfterClosingFenceExcerpt
});
}
}
else {
this._code = parameters.code;
this._language = parameters.language;
}
}
/** @override */
get kind() {
return DocNodeKind.FencedCode;
}
/**
* A name that can optionally be included after the opening code fence delimiter,
* on the same line as the three backticks. This name indicates the programming language
* for the code, which a syntax highlighter may use to style the code block.
*
* @remarks
* The TSDoc standard requires that the language "ts" should be interpreted to mean TypeScript.
* Other languages names may be supported, but this is implementation dependent.
*
* CommonMark refers to this field as the "info string".
*
* @privateRemarks
* Examples of language strings supported by GitHub flavored markdown:
* https://raw.githubusercontent.com/github/linguist/master/lib/linguist/languages.yml
*/
get language() {
if (this._language === undefined) {
if (this._languageExcerpt !== undefined) {
this._language = this._languageExcerpt.content.toString();
}
else {
this._language = '';
}
}
return this._language;
}
/**
* The text that should be rendered as code.
*/
get code() {
if (this._code === undefined) {
if (this._codeExcerpt !== undefined) {
this._code = this._codeExcerpt.content.toString();
}
}
return this._code;
}
/** @override */
onGetChildNodes() {
return [
this._openingFenceExcerpt,
this._spacingAfterOpeningFenceExcerpt,
this._languageExcerpt,
this._spacingAfterLanguageExcerpt,
this._codeExcerpt,
this._spacingBeforeClosingFenceExcerpt,
this._closingFenceExcerpt,
this._spacingAfterClosingFenceExcerpt
];
}
}
//# sourceMappingURL=DocFencedCode.js.map |