1 |
- {"ast":null,"code":"/*\nLanguage: Haskell\nAuthor: Jeremy Hull <sourdrums@gmail.com>\nContributors: Zena Treep <zena.treep@gmail.com>\nWebsite: https://www.haskell.org\nCategory: functional\n*/\n\nfunction haskell(hljs) {\n /* See:\n - https://www.haskell.org/onlinereport/lexemes.html\n - https://downloads.haskell.org/ghc/9.0.1/docs/html/users_guide/exts/binary_literals.html\n - https://downloads.haskell.org/ghc/9.0.1/docs/html/users_guide/exts/numeric_underscores.html\n - https://downloads.haskell.org/ghc/9.0.1/docs/html/users_guide/exts/hex_float_literals.html\n */\n const decimalDigits = '([0-9]_*)+';\n const hexDigits = '([0-9a-fA-F]_*)+';\n const binaryDigits = '([01]_*)+';\n const octalDigits = '([0-7]_*)+';\n const ascSymbol = '[!#$%&*+.\\\\/<=>?@\\\\\\\\^~-]';\n const uniSymbol = '(\\\\p{S}|\\\\p{P})'; // Symbol or Punctuation\n const special = '[(),;\\\\[\\\\]`|{}]';\n const symbol = `(${ascSymbol}|(?!(${special}|[_:\"']))${uniSymbol})`;\n const COMMENT = {\n variants: [\n // Double dash forms a valid comment only if it's not part of legal lexeme.\n // See: Haskell 98 report: https://www.haskell.org/onlinereport/lexemes.html\n //\n // The commented code does the job, but we can't use negative lookbehind,\n // due to poor support by Safari browser.\n // > hljs.COMMENT(`(?<!${symbol})--+(?!${symbol})`, '$'),\n // So instead, we'll add a no-markup rule before the COMMENT rule in the rules list\n // to match the problematic infix operators that contain double dash.\n hljs.COMMENT('--+', '$'), hljs.COMMENT(/\\{-/, /-\\}/, {\n contains: ['self']\n })]\n };\n const PRAGMA = {\n className: 'meta',\n begin: /\\{-#/,\n end: /#-\\}/\n };\n const PREPROCESSOR = {\n className: 'meta',\n begin: '^#',\n end: '$'\n };\n const CONSTRUCTOR = {\n className: 'type',\n begin: '\\\\b[A-Z][\\\\w\\']*',\n // TODO: other constructors (build-in, infix).\n relevance: 0\n };\n const LIST = {\n begin: '\\\\(',\n end: '\\\\)',\n illegal: '\"',\n contains: [PRAGMA, PREPROCESSOR, {\n className: 'type',\n begin: '\\\\b[A-Z][\\\\w]*(\\\\((\\\\.\\\\.|,|\\\\w+)\\\\))?'\n }, hljs.inherit(hljs.TITLE_MODE, {\n begin: '[_a-z][\\\\w\\']*'\n }), COMMENT]\n };\n const RECORD = {\n begin: /\\{/,\n end: /\\}/,\n contains: LIST.contains\n };\n const NUMBER = {\n className: 'number',\n relevance: 0,\n variants: [\n // decimal floating-point-literal (subsumes decimal-literal)\n {\n match: `\\\\b(${decimalDigits})(\\\\.(${decimalDigits}))?` + `([eE][+-]?(${decimalDigits}))?\\\\b`\n },\n // hexadecimal floating-point-literal (subsumes hexadecimal-literal)\n {\n match: `\\\\b0[xX]_*(${hexDigits})(\\\\.(${hexDigits}))?` + `([pP][+-]?(${decimalDigits}))?\\\\b`\n },\n // octal-literal\n {\n match: `\\\\b0[oO](${octalDigits})\\\\b`\n },\n // binary-literal\n {\n match: `\\\\b0[bB](${binaryDigits})\\\\b`\n }]\n };\n return {\n name: 'Haskell',\n aliases: ['hs'],\n keywords: 'let in if then else case of where do module import hiding ' + 'qualified type data newtype deriving class instance as default ' + 'infix infixl infixr foreign export ccall stdcall cplusplus ' + 'jvm dotnet safe unsafe family forall mdo proc rec',\n unicodeRegex: true,\n contains: [\n // Top-level constructions.\n {\n beginKeywords: 'module',\n end: 'where',\n keywords: 'module where',\n contains: [LIST, COMMENT],\n illegal: '\\\\W\\\\.|;'\n }, {\n begin: '\\\\bimport\\\\b',\n end: '$',\n keywords: 'import qualified as hiding',\n contains: [LIST, COMMENT],\n illegal: '\\\\W\\\\.|;'\n }, {\n className: 'class',\n begin: '^(\\\\s*)?(class|instance)\\\\b',\n end: 'where',\n keywords: 'class family instance where',\n contains: [CONSTRUCTOR, LIST, COMMENT]\n }, {\n className: 'class',\n begin: '\\\\b(data|(new)?type)\\\\b',\n end: '$',\n keywords: 'data family type newtype deriving',\n contains: [PRAGMA, CONSTRUCTOR, LIST, RECORD, COMMENT]\n }, {\n beginKeywords: 'default',\n end: '$',\n contains: [CONSTRUCTOR, LIST, COMMENT]\n }, {\n beginKeywords: 'infix infixl infixr',\n end: '$',\n contains: [hljs.C_NUMBER_MODE, COMMENT]\n }, {\n begin: '\\\\bforeign\\\\b',\n end: '$',\n keywords: 'foreign import export ccall stdcall cplusplus jvm ' + 'dotnet safe unsafe',\n contains: [CONSTRUCTOR, hljs.QUOTE_STRING_MODE, COMMENT]\n }, {\n className: 'meta',\n begin: '#!\\\\/usr\\\\/bin\\\\/env\\ runhaskell',\n end: '$'\n },\n // \"Whitespaces\".\n PRAGMA, PREPROCESSOR,\n // Literals and names.\n\n // Single characters.\n {\n scope: 'string',\n begin: /'(?=\\\\?.')/,\n end: /'/,\n contains: [{\n scope: 'char.escape',\n match: /\\\\./\n }]\n }, hljs.QUOTE_STRING_MODE, NUMBER, CONSTRUCTOR, hljs.inherit(hljs.TITLE_MODE, {\n begin: '^[_a-z][\\\\w\\']*'\n }),\n // No markup, prevents infix operators from being recognized as comments.\n {\n begin: `(?!-)${symbol}--+|--+(?!-)${symbol}`\n }, COMMENT, {\n // No markup, relevance booster\n begin: '->|<-'\n }]\n };\n}\nmodule.exports = haskell;","map":{"version":3,"names":["haskell","hljs","decimalDigits","hexDigits","binaryDigits","octalDigits","ascSymbol","uniSymbol","special","symbol","COMMENT","variants","contains","PRAGMA","className","begin","end","PREPROCESSOR","CONSTRUCTOR","relevance","LIST","illegal","inherit","TITLE_MODE","RECORD","NUMBER","match","name","aliases","keywords","unicodeRegex","beginKeywords","C_NUMBER_MODE","QUOTE_STRING_MODE","scope","module","exports"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/highlight.js/lib/languages/haskell.js"],"sourcesContent":["/*\nLanguage: Haskell\nAuthor: Jeremy Hull <sourdrums@gmail.com>\nContributors: Zena Treep <zena.treep@gmail.com>\nWebsite: https://www.haskell.org\nCategory: functional\n*/\n\nfunction haskell(hljs) {\n\n /* See:\n - https://www.haskell.org/onlinereport/lexemes.html\n - https://downloads.haskell.org/ghc/9.0.1/docs/html/users_guide/exts/binary_literals.html\n - https://downloads.haskell.org/ghc/9.0.1/docs/html/users_guide/exts/numeric_underscores.html\n - https://downloads.haskell.org/ghc/9.0.1/docs/html/users_guide/exts/hex_float_literals.html\n */\n const decimalDigits = '([0-9]_*)+';\n const hexDigits = '([0-9a-fA-F]_*)+';\n const binaryDigits = '([01]_*)+';\n const octalDigits = '([0-7]_*)+';\n const ascSymbol = '[!#$%&*+.\\\\/<=>?@\\\\\\\\^~-]';\n const uniSymbol = '(\\\\p{S}|\\\\p{P})'; // Symbol or Punctuation\n const special = '[(),;\\\\[\\\\]`|{}]';\n const symbol = `(${ascSymbol}|(?!(${special}|[_:\"']))${uniSymbol})`;\n\n const COMMENT = { variants: [\n // Double dash forms a valid comment only if it's not part of legal lexeme.\n // See: Haskell 98 report: https://www.haskell.org/onlinereport/lexemes.html\n //\n // The commented code does the job, but we can't use negative lookbehind,\n // due to poor support by Safari browser.\n // > hljs.COMMENT(`(?<!${symbol})--+(?!${symbol})`, '$'),\n // So instead, we'll add a no-markup rule before the COMMENT rule in the rules list\n // to match the problematic infix operators that contain double dash.\n hljs.COMMENT('--+', '$'),\n hljs.COMMENT(\n /\\{-/,\n /-\\}/,\n { contains: [ 'self' ] }\n )\n ] };\n\n const PRAGMA = {\n className: 'meta',\n begin: /\\{-#/,\n end: /#-\\}/\n };\n\n const PREPROCESSOR = {\n className: 'meta',\n begin: '^#',\n end: '$'\n };\n\n const CONSTRUCTOR = {\n className: 'type',\n begin: '\\\\b[A-Z][\\\\w\\']*', // TODO: other constructors (build-in, infix).\n relevance: 0\n };\n\n const LIST = {\n begin: '\\\\(',\n end: '\\\\)',\n illegal: '\"',\n contains: [\n PRAGMA,\n PREPROCESSOR,\n {\n className: 'type',\n begin: '\\\\b[A-Z][\\\\w]*(\\\\((\\\\.\\\\.|,|\\\\w+)\\\\))?'\n },\n hljs.inherit(hljs.TITLE_MODE, { begin: '[_a-z][\\\\w\\']*' }),\n COMMENT\n ]\n };\n\n const RECORD = {\n begin: /\\{/,\n end: /\\}/,\n contains: LIST.contains\n };\n\n const NUMBER = {\n className: 'number',\n relevance: 0,\n variants: [\n // decimal floating-point-literal (subsumes decimal-literal)\n { match: `\\\\b(${decimalDigits})(\\\\.(${decimalDigits}))?` + `([eE][+-]?(${decimalDigits}))?\\\\b` },\n // hexadecimal floating-point-literal (subsumes hexadecimal-literal)\n { match: `\\\\b0[xX]_*(${hexDigits})(\\\\.(${hexDigits}))?` + `([pP][+-]?(${decimalDigits}))?\\\\b` },\n // octal-literal\n { match: `\\\\b0[oO](${octalDigits})\\\\b` },\n // binary-literal\n { match: `\\\\b0[bB](${binaryDigits})\\\\b` }\n ]\n };\n\n return {\n name: 'Haskell',\n aliases: [ 'hs' ],\n keywords:\n 'let in if then else case of where do module import hiding '\n + 'qualified type data newtype deriving class instance as default '\n + 'infix infixl infixr foreign export ccall stdcall cplusplus '\n + 'jvm dotnet safe unsafe family forall mdo proc rec',\n unicodeRegex: true,\n contains: [\n // Top-level constructions.\n {\n beginKeywords: 'module',\n end: 'where',\n keywords: 'module where',\n contains: [\n LIST,\n COMMENT\n ],\n illegal: '\\\\W\\\\.|;'\n },\n {\n begin: '\\\\bimport\\\\b',\n end: '$',\n keywords: 'import qualified as hiding',\n contains: [\n LIST,\n COMMENT\n ],\n illegal: '\\\\W\\\\.|;'\n },\n {\n className: 'class',\n begin: '^(\\\\s*)?(class|instance)\\\\b',\n end: 'where',\n keywords: 'class family instance where',\n contains: [\n CONSTRUCTOR,\n LIST,\n COMMENT\n ]\n },\n {\n className: 'class',\n begin: '\\\\b(data|(new)?type)\\\\b',\n end: '$',\n keywords: 'data family type newtype deriving',\n contains: [\n PRAGMA,\n CONSTRUCTOR,\n LIST,\n RECORD,\n COMMENT\n ]\n },\n {\n beginKeywords: 'default',\n end: '$',\n contains: [\n CONSTRUCTOR,\n LIST,\n COMMENT\n ]\n },\n {\n beginKeywords: 'infix infixl infixr',\n end: '$',\n contains: [\n hljs.C_NUMBER_MODE,\n COMMENT\n ]\n },\n {\n begin: '\\\\bforeign\\\\b',\n end: '$',\n keywords: 'foreign import export ccall stdcall cplusplus jvm '\n + 'dotnet safe unsafe',\n contains: [\n CONSTRUCTOR,\n hljs.QUOTE_STRING_MODE,\n COMMENT\n ]\n },\n {\n className: 'meta',\n begin: '#!\\\\/usr\\\\/bin\\\\/env\\ runhaskell',\n end: '$'\n },\n // \"Whitespaces\".\n PRAGMA,\n PREPROCESSOR,\n\n // Literals and names.\n\n // Single characters.\n {\n scope: 'string',\n begin: /'(?=\\\\?.')/,\n end: /'/,\n contains: [\n {\n scope: 'char.escape',\n match: /\\\\./,\n },\n ]\n },\n hljs.QUOTE_STRING_MODE,\n NUMBER,\n CONSTRUCTOR,\n hljs.inherit(hljs.TITLE_MODE, { begin: '^[_a-z][\\\\w\\']*' }),\n // No markup, prevents infix operators from being recognized as comments.\n { begin: `(?!-)${symbol}--+|--+(?!-)${symbol}`},\n COMMENT,\n { // No markup, relevance booster\n begin: '->|<-' }\n ]\n };\n}\n\nmodule.exports = haskell;\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"script","externalDependencies":[]}
|