Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
jsx.py76 linesDownload Raw Back to lexers
1"""2    pygments.lexers.jsx3    ~~~~~~~~~~~~~~~~~~~4 5    Lexers for JSX (React).6 7    :copyright: Copyright 2006-2024 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 JavascriptLexer15from pygments.token import Name, Operator, Punctuation, String, Text, \16    Whitespace17 18__all__ = ['JsxLexer']19 20 21class JsxLexer(JavascriptLexer):22    """For JavaScript Syntax Extension (JSX).23    """24 25    name = "JSX"26    aliases = ["jsx", "react"]27    filenames = ["*.jsx", "*.react"]28    mimetypes = ["text/jsx", "text/typescript-jsx"]29    url = "https://facebook.github.io/jsx/"30    version_added = '2.17'31 32    flags = re.MULTILINE | re.DOTALL33 34    # Use same tokens as `JavascriptLexer`, but with tags and attributes support35    tokens = {36        "root": [37            include("jsx"),38            inherit,39        ],40        "jsx": [41            (r"</?>", Punctuation),  # JSXFragment <>|</>42            (r"(<)(\w+)(\.?)", bygroups(Punctuation, Name.Tag, Punctuation), "tag"),43            (44                r"(</)(\w+)(>)",45                bygroups(Punctuation, Name.Tag, Punctuation),46            ),47            (48                r"(</)(\w+)",49                bygroups(Punctuation, Name.Tag),50                "fragment",51            ),  # Same for React.Context52        ],53        "tag": [54            (r"\s+", Whitespace),55            (r"([\w-]+)(\s*)(=)(\s*)", bygroups(Name.Attribute, Whitespace, Operator, Whitespace), "attr"),56            (r"[{}]+", Punctuation),57            (r"[\w\.]+", Name.Attribute),58            (r"(/?)(\s*)(>)", bygroups(Punctuation, Text, Punctuation), "#pop"),59        ],60        "fragment": [61            (r"(.)(\w+)", bygroups(Punctuation, Name.Attribute)),62            (r"(>)", bygroups(Punctuation), "#pop"),63        ],64        "attr": [65            (r"\{", Punctuation, "expression"),66            (r'".*?"', String, "#pop"),67            (r"'.*?'", String, "#pop"),68            default("#pop"),69        ],70        "expression": [71            (r"\{", Punctuation, "#push"),72            (r"\}", Punctuation, "#pop"),73            include("root"),74        ],75    }76 
codekingpro/portable-devtools · Team Ai