3 ��X�� � @ s� d Z ddlZddlmZmZmZmZmZmZm Z m Z ddlmZm Z mZmZmZmZmZmZmZ ddlmZmZ ddljZdddd d ddd dddgZdejdddddd� d Zdejdddddddddd� d Zed e d ZG d!d� de�Z G d"d� de�Z!G d#d� de�Z"G d$d � d e�Z#G d%d � d e�Z$G d&d� de�Z%G d'd� de�Z&G d(d � d e�Z'G d)d� de�Z(G d*d� de�Z)G d+d� de�Z*dS ),z� pygments.lexers.javascript ~~~~~~~~~~~~~~~~~~~~~~~~~~ Lexers for JavaScript and related languages. :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. � N)� RegexLexer�include�bygroups�default�using�this�words�combined) �Text�Comment�Operator�Keyword�Name�String�Number�Punctuation�Other)�get_bool_opt� iteritems�JavascriptLexer�KalLexer�LiveScriptLexer� DartLexer�TypeScriptLexer� LassoLexer�ObjectiveJLexer�CoffeeScriptLexer� MaskLexer� EarlGreyLexer�JuttleLexerz(?:[$_ZLuZLlZLtZLmZLoZNlz]|\\u[a-fA-F0-9]{4})z(?:[$ZMnZMcZNdZPcu ]|\\u[a-fA-F0-9]{4})z(?:z)*c @ s� e Zd ZdZdZddgZddgZddd d gZej ej B ejB Zde fdefd ejfdejfged�dejdfde d4fed�gde dfgdejfde dfed�dejfdejfdejfdejfdejfdefdedfdedfd efd!edfd"ejdfd#ej fd$ej!fd%e"j#fe$e"j%fd&ej&fd'ejfd(ej'd)fgd(ej'dfd*ej'fd+ej'fd,ej(d-fd.ej'fd/ej'fgd0ej(dfed1�gd2�Z)d3S )5r z% For JavaScript source code. Z JavaScriptZjsZ javascriptz*.jsz*.jsmzapplication/javascriptzapplication/x-javascriptztext/x-javascriptztext/javascriptz\s+z<!--z//.*?\nz /\*.*?\*/�commentsandwhitespacez5/(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/([gimuy]+\b|\B)�#popz(?=/)�badregexz\nz\A#! ?/.*?\nz^(?=\s|/|<!--)�slashstartsregexz((\.\d+|[0-9]+\.[0-9]*)([eE][-+]?[0-9]+)?z 0[bB][01]+z0[oO][0-7]+z0[xX][0-9a-fA-F]+z[0-9]+z \.\.\.|=>z@\+\+|--|~|&&|\?|:|\|\||\\(?=\n)|(<<|>>>?|==?|!=?|[-<>+*%&|^/])=?z[{(\[;,]z[})\].]z�(for|in|while|do|break|return|continue|switch|case|default|if|else|throw|try|catch|finally|new|delete|typeof|instanceof|void|yield|this|of)\bz(var|let|with|function)\bz�(abstract|boolean|byte|char|class|const|debugger|double|enum|export|extends|final|float|goto|implements|import|int|interface|long|native|package|private|protected|public|short|static|super|synchronized|throws|transient|volatile)\bz*(true|false|null|NaN|Infinity|undefined)\bz�(Array|Boolean|Date|Error|Function|Math|netscape|Number|Object|Packages|RegExp|String|Promise|Proxy|sun|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|Error|eval|isFinite|isNaN|isSafeInteger|parseFloat|parseInt|document|this|window)\bz"(\\\\|\\"|[^"])*"z'(\\\\|\\'|[^'])*'�`�interpz\\\\z\\`z\$\{z interp-insidez\$z[^`\\$]+z\}�root)r r# r"