public static _getStylesForDocCommentInternal()

in playground/src/SyntaxStyler/DocNodeSyntaxStyler.ts [58:216]


  public static _getStylesForDocCommentInternal(
    styles: IStyledRange[],
    options: IGetStylesForDocCommentInternalOptions
  ): void {
    const { docNode, parserContext, styleTokens, theme }: IGetStylesForDocCommentInternalOptions = options;

    if (docNode instanceof tsdoc.DocExcerpt) {
      // Match the context against a color (i.e. tsdoc.link.url)

      switch (docNode.excerptKind) {
        case 'CodeSpan_ClosingDelimiter':
        case 'CodeSpan_OpeningDelimiter':
        case 'DeclarationReference_ImportHash':
        case 'DocMemberSymbol_LeftBracket':
        case 'DocMemberSymbol_RightBracket':
        case 'FencedCode_ClosingFence':
        case 'FencedCode_OpeningFence':
        case 'HtmlAttribute_Equals':
        case 'HtmlEndTag_ClosingDelimiter':
        case 'HtmlEndTag_OpeningDelimiter':
        case 'HtmlStartTag_ClosingDelimiter':
        case 'HtmlStartTag_OpeningDelimiter':
        case 'InlineTag_ClosingDelimiter':
        case 'InlineTag_OpeningDelimiter':
        case 'LinkTag_Pipe':
        case 'MemberIdentifier_LeftQuote':
        case 'MemberIdentifier_RightQuote':
        case 'MemberReference_Colon':
        case 'MemberReference_Dot':
        case 'MemberReference_LeftParenthesis':
        case 'MemberReference_RightParenthesis':
        case 'ParamBlock_Hyphen': {
          DocNodeSyntaxStyler._addTokenStyles(styles, docNode.content, {
            theme,
            styleTokens: [...styleTokens, 'delimiter']
          });
          break;
        }

        case 'InlineTag_TagName':
        case 'BlockTag': {
          const tagDefinition:
            | tsdoc.TSDocTagDefinition
            | undefined = parserContext.configuration.tryGetTagDefinition(docNode.content.toString());
          DocNodeSyntaxStyler._addStylesForTag(styles, docNode.content, tagDefinition, {
            theme,
            styleTokens: [...styleTokens, 'tag']
          });
          break;
        }

        case 'MemberIdentifier_Identifier': {
          DocNodeSyntaxStyler._addTokenStyles(styles, docNode.content, {
            theme,
            styleTokens: [...styleTokens, 'member', 'identifier']
          });
          break;
        }

        case 'DeclarationReference_PackageName': {
          DocNodeSyntaxStyler._addTokenStyles(styles, docNode.content, {
            theme,
            styleTokens: [...styleTokens, 'packageName']
          });
          break;
        }

        case 'DeclarationReference_ImportPath': {
          DocNodeSyntaxStyler._addTokenStyles(styles, docNode.content, {
            theme,
            styleTokens: [...styleTokens, 'importPath']
          });
          break;
        }

        case 'LinkTag_UrlDestination': {
          DocNodeSyntaxStyler._addTokenStyles(styles, docNode.content, {
            theme,
            styleTokens: [...styleTokens, 'url']
          });
          break;
        }

        case 'CodeSpan_Code':
        case 'FencedCode_Code': {
          DocNodeSyntaxStyler._addTokenStyles(styles, docNode.content, {
            theme,
            styleTokens: [...styleTokens, 'code']
          });
          break;
        }

        case 'FencedCode_Language': {
          DocNodeSyntaxStyler._addTokenStyles(styles, docNode.content, {
            theme,
            styleTokens: [...styleTokens, 'language']
          });
          break;
        }

        case 'HtmlEndTag_Name':
        case 'HtmlStartTag_Name': {
          DocNodeSyntaxStyler._addTokenStyles(styles, docNode.content, {
            theme,
            styleTokens: [...styleTokens, 'element', 'name']
          });
          break;
        }

        case 'HtmlAttribute_Name': {
          DocNodeSyntaxStyler._addTokenStyles(styles, docNode.content, {
            theme,
            styleTokens: [...styleTokens, 'element', 'attribute', 'name']
          });
          break;
        }

        case 'HtmlAttribute_Value': {
          DocNodeSyntaxStyler._addTokenStyles(styles, docNode.content, {
            theme,
            styleTokens: [...styleTokens, 'element', 'attribute', 'value']
          });
          break;
        }

        case 'ErrorText': {
          DocNodeSyntaxStyler._addTokenStyles(styles, docNode.content, {
            theme,
            styleTokens: [...styleTokens, 'error']
          });
          break;
        }

        case 'EscapedText': {
          DocNodeSyntaxStyler._addTokenStyles(styles, docNode.content, {
            theme,
            styleTokens: [...styleTokens, 'escaped']
          });
          break;
        }

        case 'MemberSelector': {
          DocNodeSyntaxStyler._addTokenStyles(styles, docNode.content, {
            theme,
            styleTokens: [...styleTokens, 'member', 'selector']
          });
          break;
        }
      }
    }

    for (const child of docNode.getChildNodes()) {
      DocNodeSyntaxStyler._getStylesForDocCommentInternal(styles, {
        ...options,
        parentNode: docNode,
        docNode: child
      });
    }
  }