Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
jsx.py101 linesDownload Raw Back to lexers
1"""2    pygments.lexers.jsx3    ~~~~~~~~~~~~~~~~~~~4 5    Lexers for JSX (React) and TSX (TypeScript flavor).6 7    :copyright: Copyright 2006-present by the Pygments team, see AUTHORS.8    :license: BSD, see LICENSE for details.9"""10 11import re12 13from pygments.lexer import bygroups, default, include, inherit14from pygments.lexers.javascript import JavascriptLexer, TypeScriptLexer15from pygments.token import Name, Operator, Punctuation, String, Text, \16    Whitespace17 18__all__ = ['JsxLexer', 'TsxLexer']19 20_JSX_RULES = {21    "jsx": [22        (r"</?>", Punctuation),  # JSXFragment <>|</>23        (r"(<)(\w+)(\.?)", bygroups(Punctuation, Name.Tag, Punctuation), "tag"),24        (25            r"(</)(\w+)(>)",26            bygroups(Punctuation, Name.Tag, Punctuation),27        ),28        (29            r"(</)(\w+)",30            bygroups(Punctuation, Name.Tag),31            "fragment",32        ),  # Same for React.Context33    ],34    "tag": [35        (r"\s+", Whitespace),36        (r"([\w-]+)(\s*)(=)(\s*)", bygroups(Name.Attribute, Whitespace, Operator, Whitespace), "attr"),37        (r"[{}]+", Punctuation),38        (r"[\w\.]+", Name.Attribute),39        (r"(/?)(\s*)(>)", bygroups(Punctuation, Text, Punctuation), "#pop"),40    ],41    "fragment": [42        (r"(.)(\w+)", bygroups(Punctuation, Name.Attribute)),43        (r"(>)", bygroups(Punctuation), "#pop"),44    ],45    "attr": [46        (r"\{", Punctuation, "expression"),47        (r'".*?"', String, "#pop"),48        (r"'.*?'", String, "#pop"),49        default("#pop"),50    ],51    "expression": [52        (r"\{", Punctuation, "#push"),53        (r"\}", Punctuation, "#pop"),54        include("root"),55    ],56}57 58 59class JsxLexer(JavascriptLexer):60    """For JavaScript Syntax Extension (JSX).61    """62 63    name = "JSX"64    aliases = ["jsx", "react"]65    filenames = ["*.jsx", "*.react"]66    mimetypes = ["text/jsx", "text/typescript-jsx"]67    url = "https://facebook.github.io/jsx/"68    version_added = '2.17'69 70    flags = re.MULTILINE | re.DOTALL71 72    # Use same tokens as `JavascriptLexer`, but with tags and attributes support73    tokens = {74        "root": [75            include("jsx"),76            inherit,77        ],78    **_JSX_RULES}79 80 81class TsxLexer(TypeScriptLexer):82    """For TypeScript with embedded JSX83    """84 85    name = "TSX"86    aliases = ["tsx"]87    filenames = ["*.tsx"]88    mimetypes = ["text/typescript-tsx"]89    url = "https://www.typescriptlang.org/docs/handbook/jsx.html"90    version_added = '2.19'91 92    flags = re.MULTILINE | re.DOTALL93 94    # Use same tokens as `TypescriptLexer`, but with tags and attributes support95    tokens = {96        "root": [97            include("jsx"),98            inherit,99        ],100    **_JSX_RULES}101 
codekingpro/portable-devtools · Team Ai