utils/node_modules/@microsoft/tsdoc/lib-commonjs/nodes/DocExcerpt.js
2024-02-07 01:33:07 -05:00

153 lines
7.4 KiB
JavaScript

"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.DocExcerpt = exports.ExcerptKind = void 0;
var DocNode_1 = require("./DocNode");
var Token_1 = require("../parser/Token");
/* eslint-disable @typescript-eslint/naming-convention */
/**
* Indicates the type of {@link DocExcerpt}.
*/
var ExcerptKind;
(function (ExcerptKind) {
ExcerptKind["Spacing"] = "Spacing";
ExcerptKind["BlockTag"] = "BlockTag";
ExcerptKind["CodeSpan_OpeningDelimiter"] = "CodeSpan_OpeningDelimiter";
ExcerptKind["CodeSpan_Code"] = "CodeSpan_Code";
ExcerptKind["CodeSpan_ClosingDelimiter"] = "CodeSpan_ClosingDelimiter";
ExcerptKind["DeclarationReference_PackageName"] = "DeclarationReference_PackageName";
ExcerptKind["DeclarationReference_ImportPath"] = "DeclarationReference_ImportPath";
ExcerptKind["DeclarationReference_ImportHash"] = "DeclarationReference_ImportHash";
/**
* Input characters that were reported as an error and do not appear to be part of a valid expression.
* A syntax highlighter might display them with an error color (e.g. red).
*/
ExcerptKind["ErrorText"] = "ErrorText";
/**
* Input characters that do not conform to the TSDoc specification, but were recognized by the parser, for example
* as a known JSDoc pattern. A syntax highlighter should not display them with an error color (e.g. red)
* because the error reporting may be suppressed for "lax" parsing of legacy source code.
*/
ExcerptKind["NonstandardText"] = "NonstandardText";
ExcerptKind["EscapedText"] = "EscapedText";
ExcerptKind["FencedCode_OpeningFence"] = "FencedCode_OpeningFence";
ExcerptKind["FencedCode_Language"] = "FencedCode_Language";
ExcerptKind["FencedCode_Code"] = "FencedCode_Code";
ExcerptKind["FencedCode_ClosingFence"] = "FencedCode_ClosingFence";
ExcerptKind["HtmlAttribute_Name"] = "HtmlAttribute_Name";
ExcerptKind["HtmlAttribute_Equals"] = "HtmlAttribute_Equals";
ExcerptKind["HtmlAttribute_Value"] = "HtmlAttribute_Value";
ExcerptKind["HtmlEndTag_OpeningDelimiter"] = "HtmlEndTag_OpeningDelimiter";
ExcerptKind["HtmlEndTag_Name"] = "HtmlEndTag_Name";
ExcerptKind["HtmlEndTag_ClosingDelimiter"] = "HtmlEndTag_ClosingDelimiter";
ExcerptKind["HtmlStartTag_OpeningDelimiter"] = "HtmlStartTag_OpeningDelimiter";
ExcerptKind["HtmlStartTag_Name"] = "HtmlStartTag_Name";
ExcerptKind["HtmlStartTag_ClosingDelimiter"] = "HtmlStartTag_ClosingDelimiter";
ExcerptKind["InlineTag_OpeningDelimiter"] = "InlineTag_OpeningDelimiter";
ExcerptKind["InlineTag_TagName"] = "InlineTag_TagName";
ExcerptKind["InlineTag_TagContent"] = "InlineTag_TagContent";
ExcerptKind["InlineTag_ClosingDelimiter"] = "InlineTag_ClosingDelimiter";
ExcerptKind["LinkTag_UrlDestination"] = "LinkTag_UrlDestination";
ExcerptKind["LinkTag_Pipe"] = "LinkTag_Pipe";
ExcerptKind["LinkTag_LinkText"] = "LinkTag_LinkText";
ExcerptKind["MemberIdentifier_LeftQuote"] = "MemberIdentifier_LeftQuote";
ExcerptKind["MemberIdentifier_Identifier"] = "MemberIdentifier_Identifier";
ExcerptKind["MemberIdentifier_RightQuote"] = "MemberIdentifier_RightQuote";
ExcerptKind["MemberReference_Dot"] = "MemberReference_Dot";
ExcerptKind["MemberReference_LeftParenthesis"] = "MemberReference_LeftParenthesis";
ExcerptKind["MemberReference_Colon"] = "MemberReference_Colon";
ExcerptKind["MemberReference_RightParenthesis"] = "MemberReference_RightParenthesis";
ExcerptKind["MemberSelector"] = "MemberSelector";
ExcerptKind["DocMemberSymbol_LeftBracket"] = "DocMemberSymbol_LeftBracket";
ExcerptKind["DocMemberSymbol_RightBracket"] = "DocMemberSymbol_RightBracket";
ExcerptKind["ParamBlock_ParameterName"] = "ParamBlock_ParameterName";
ExcerptKind["ParamBlock_Hyphen"] = "ParamBlock_Hyphen";
ExcerptKind["PlainText"] = "PlainText";
ExcerptKind["SoftBreak"] = "SoftBreak";
})(ExcerptKind = exports.ExcerptKind || (exports.ExcerptKind = {}));
/**
* Represents a parsed token sequence.
*
* @remarks
* When a `DocNode` is created by parsing a doc comment, it will have `DocExcerpt` child nodes corresponding to
* the parsed syntax elements such as names, keywords, punctuation, and spaces. These excerpts indicate the original
* coordinates of the syntax element, and thus can be used for syntax highlighting and precise error reporting.
* They could also be used to rewrite specific words in a source file (e.g. renaming a parameter) without disturbing
* any other characters in the file.
*
* Every parsed character will correspond to at most one DocExcerpt object. In other words, excerpts never overlap.
* A given excerpt can span multiple comment lines, and it may contain gaps, for example to skip the `*` character
* that starts a new TSDoc comment line.
*/
var DocExcerpt = /** @class */ (function (_super) {
__extends(DocExcerpt, _super);
/**
* Don't call this directly. Instead use {@link TSDocParser}
* @internal
*/
function DocExcerpt(parameters) {
var _this = _super.call(this, parameters) || this;
if (parameters.excerptKind === ExcerptKind.Spacing) {
for (var _i = 0, _a = parameters.content.tokens; _i < _a.length; _i++) {
var token = _a[_i];
switch (token.kind) {
case Token_1.TokenKind.Spacing:
case Token_1.TokenKind.Newline:
case Token_1.TokenKind.EndOfInput:
break;
default:
throw new Error("The excerptKind=Spacing but the range contains a non-whitespace token");
}
}
}
_this._excerptKind = parameters.excerptKind;
_this._content = parameters.content;
return _this;
}
Object.defineProperty(DocExcerpt.prototype, "kind", {
/** @override */
get: function () {
return DocNode_1.DocNodeKind.Excerpt;
},
enumerable: false,
configurable: true
});
Object.defineProperty(DocExcerpt.prototype, "excerptKind", {
/**
* Indicates the kind of DocExcerpt.
*/
get: function () {
return this._excerptKind;
},
enumerable: false,
configurable: true
});
Object.defineProperty(DocExcerpt.prototype, "content", {
/**
* The input token sequence corresponding to this excerpt.
* @remarks
* Note that a token sequence can span multiple input lines and may contain gaps, for example to skip the `*`
* character that starts a new TSDoc comment line.
*/
get: function () {
return this._content;
},
enumerable: false,
configurable: true
});
return DocExcerpt;
}(DocNode_1.DocNode));
exports.DocExcerpt = DocExcerpt;
//# sourceMappingURL=DocExcerpt.js.map