{"version":3,"file":"crystal.mjs","sources":["../../../../../../node_modules/highlight.js/lib/languages/crystal.js"],"sourcesContent":["/*\nLanguage: Crystal\nAuthor: TSUYUSATO Kitsune <make.just.on@gmail.com>\nWebsite: https://crystal-lang.org\nCategory: system\n*/\n\n/** @type LanguageFn */\nfunction crystal(hljs) {\n  const INT_SUFFIX = '(_?[ui](8|16|32|64|128))?';\n  const FLOAT_SUFFIX = '(_?f(32|64))?';\n  const CRYSTAL_IDENT_RE = '[a-zA-Z_]\\\\w*[!?=]?';\n  const CRYSTAL_METHOD_RE = '[a-zA-Z_]\\\\w*[!?=]?|[-+~]@|<<|>>|[=!]~|===?|<=>|[<>]=?|\\\\*\\\\*|[-/+%^&*~|]|//|//=|&[-+*]=?|&\\\\*\\\\*|\\\\[\\\\][=?]?';\n  const CRYSTAL_PATH_RE = '[A-Za-z_]\\\\w*(::\\\\w+)*(\\\\?|!)?';\n  const CRYSTAL_KEYWORDS = {\n    $pattern: CRYSTAL_IDENT_RE,\n    keyword:\n      'abstract alias annotation as as? asm begin break case class def do else elsif end ensure enum extend for fun if '\n      + 'include instance_sizeof is_a? lib macro module next nil? of out pointerof private protected rescue responds_to? '\n      + 'return require select self sizeof struct super then type typeof union uninitialized unless until verbatim when while with yield '\n      + '__DIR__ __END_LINE__ __FILE__ __LINE__',\n    literal: 'false nil true'\n  };\n  const SUBST = {\n    className: 'subst',\n    begin: /#\\{/,\n    end: /\\}/,\n    keywords: CRYSTAL_KEYWORDS\n  };\n  // borrowed from Ruby\n  const VARIABLE = {\n    // negative-look forward attemps to prevent false matches like:\n    // @ident@ or $ident$ that might indicate this is not ruby at all\n    className: \"variable\",\n    begin: '(\\\\$\\\\W)|((\\\\$|@@?)(\\\\w+))(?=[^@$?])' + `(?![A-Za-z])(?![@$?'])`\n  };\n  const EXPANSION = {\n    className: 'template-variable',\n    variants: [\n      {\n        begin: '\\\\{\\\\{',\n        end: '\\\\}\\\\}'\n      },\n      {\n        begin: '\\\\{%',\n        end: '%\\\\}'\n      }\n    ],\n    keywords: CRYSTAL_KEYWORDS\n  };\n\n  function recursiveParen(begin, end) {\n    const\n        contains = [\n          {\n            begin: begin,\n            end: end\n          }\n        ];\n    contains[0].contains = contains;\n    return contains;\n  }\n  const STRING = {\n    className: 'string',\n    contains: [\n      hljs.BACKSLASH_ESCAPE,\n      SUBST\n    ],\n    variants: [\n      {\n        begin: /'/,\n        end: /'/\n      },\n      {\n        begin: /\"/,\n        end: /\"/\n      },\n      {\n        begin: /`/,\n        end: /`/\n      },\n      {\n        begin: '%[Qwi]?\\\\(',\n        end: '\\\\)',\n        contains: recursiveParen('\\\\(', '\\\\)')\n      },\n      {\n        begin: '%[Qwi]?\\\\[',\n        end: '\\\\]',\n        contains: recursiveParen('\\\\[', '\\\\]')\n      },\n      {\n        begin: '%[Qwi]?\\\\{',\n        end: /\\}/,\n        contains: recursiveParen(/\\{/, /\\}/)\n      },\n      {\n        begin: '%[Qwi]?<',\n        end: '>',\n        contains: recursiveParen('<', '>')\n      },\n      {\n        begin: '%[Qwi]?\\\\|',\n        end: '\\\\|'\n      },\n      {\n        begin: /<<-\\w+$/,\n        end: /^\\s*\\w+$/\n      }\n    ],\n    relevance: 0\n  };\n  const Q_STRING = {\n    className: 'string',\n    variants: [\n      {\n        begin: '%q\\\\(',\n        end: '\\\\)',\n        contains: recursiveParen('\\\\(', '\\\\)')\n      },\n      {\n        begin: '%q\\\\[',\n        end: '\\\\]',\n        contains: recursiveParen('\\\\[', '\\\\]')\n      },\n      {\n        begin: '%q\\\\{',\n        end: /\\}/,\n        contains: recursiveParen(/\\{/, /\\}/)\n      },\n      {\n        begin: '%q<',\n        end: '>',\n        contains: recursiveParen('<', '>')\n      },\n      {\n        begin: '%q\\\\|',\n        end: '\\\\|'\n      },\n      {\n        begin: /<<-'\\w+'$/,\n        end: /^\\s*\\w+$/\n      }\n    ],\n    relevance: 0\n  };\n  const REGEXP = {\n    begin: '(?!%\\\\})(' + hljs.RE_STARTERS_RE + '|\\\\n|\\\\b(case|if|select|unless|until|when|while)\\\\b)\\\\s*',\n    keywords: 'case if select unless until when while',\n    contains: [\n      {\n        className: 'regexp',\n        contains: [\n          hljs.BACKSLASH_ESCAPE,\n          SUBST\n        ],\n        variants: [\n          {\n            begin: '//[a-z]*',\n            relevance: 0\n          },\n          {\n            begin: '/(?!\\\\/)',\n            end: '/[a-z]*'\n          }\n        ]\n      }\n    ],\n    relevance: 0\n  };\n  const REGEXP2 = {\n    className: 'regexp',\n    contains: [\n      hljs.BACKSLASH_ESCAPE,\n      SUBST\n    ],\n    variants: [\n      {\n        begin: '%r\\\\(',\n        end: '\\\\)',\n        contains: recursiveParen('\\\\(', '\\\\)')\n      },\n      {\n        begin: '%r\\\\[',\n        end: '\\\\]',\n        contains: recursiveParen('\\\\[', '\\\\]')\n      },\n      {\n        begin: '%r\\\\{',\n        end: /\\}/,\n        contains: recursiveParen(/\\{/, /\\}/)\n      },\n      {\n        begin: '%r<',\n        end: '>',\n        contains: recursiveParen('<', '>')\n      },\n      {\n        begin: '%r\\\\|',\n        end: '\\\\|'\n      }\n    ],\n    relevance: 0\n  };\n  const ATTRIBUTE = {\n    className: 'meta',\n    begin: '@\\\\[',\n    end: '\\\\]',\n    contains: [ hljs.inherit(hljs.QUOTE_STRING_MODE, { className: 'string' }) ]\n  };\n  const CRYSTAL_DEFAULT_CONTAINS = [\n    EXPANSION,\n    STRING,\n    Q_STRING,\n    REGEXP2,\n    REGEXP,\n    ATTRIBUTE,\n    VARIABLE,\n    hljs.HASH_COMMENT_MODE,\n    {\n      className: 'class',\n      beginKeywords: 'class module struct',\n      end: '$|;',\n      illegal: /=/,\n      contains: [\n        hljs.HASH_COMMENT_MODE,\n        hljs.inherit(hljs.TITLE_MODE, { begin: CRYSTAL_PATH_RE }),\n        { // relevance booster for inheritance\n          begin: '<' }\n      ]\n    },\n    {\n      className: 'class',\n      beginKeywords: 'lib enum union',\n      end: '$|;',\n      illegal: /=/,\n      contains: [\n        hljs.HASH_COMMENT_MODE,\n        hljs.inherit(hljs.TITLE_MODE, { begin: CRYSTAL_PATH_RE })\n      ]\n    },\n    {\n      beginKeywords: 'annotation',\n      end: '$|;',\n      illegal: /=/,\n      contains: [\n        hljs.HASH_COMMENT_MODE,\n        hljs.inherit(hljs.TITLE_MODE, { begin: CRYSTAL_PATH_RE })\n      ],\n      relevance: 2\n    },\n    {\n      className: 'function',\n      beginKeywords: 'def',\n      end: /\\B\\b/,\n      contains: [\n        hljs.inherit(hljs.TITLE_MODE, {\n          begin: CRYSTAL_METHOD_RE,\n          endsParent: true\n        })\n      ]\n    },\n    {\n      className: 'function',\n      beginKeywords: 'fun macro',\n      end: /\\B\\b/,\n      contains: [\n        hljs.inherit(hljs.TITLE_MODE, {\n          begin: CRYSTAL_METHOD_RE,\n          endsParent: true\n        })\n      ],\n      relevance: 2\n    },\n    {\n      className: 'symbol',\n      begin: hljs.UNDERSCORE_IDENT_RE + '(!|\\\\?)?:',\n      relevance: 0\n    },\n    {\n      className: 'symbol',\n      begin: ':',\n      contains: [\n        STRING,\n        { begin: CRYSTAL_METHOD_RE }\n      ],\n      relevance: 0\n    },\n    {\n      className: 'number',\n      variants: [\n        { begin: '\\\\b0b([01_]+)' + INT_SUFFIX },\n        { begin: '\\\\b0o([0-7_]+)' + INT_SUFFIX },\n        { begin: '\\\\b0x([A-Fa-f0-9_]+)' + INT_SUFFIX },\n        { begin: '\\\\b([1-9][0-9_]*[0-9]|[0-9])(\\\\.[0-9][0-9_]*)?([eE]_?[-+]?[0-9_]*)?' + FLOAT_SUFFIX + '(?!_)' },\n        { begin: '\\\\b([1-9][0-9_]*|0)' + INT_SUFFIX }\n      ],\n      relevance: 0\n    }\n  ];\n  SUBST.contains = CRYSTAL_DEFAULT_CONTAINS;\n  EXPANSION.contains = CRYSTAL_DEFAULT_CONTAINS.slice(1); // without EXPANSION\n\n  return {\n    name: 'Crystal',\n    aliases: [ 'cr' ],\n    keywords: CRYSTAL_KEYWORDS,\n    contains: CRYSTAL_DEFAULT_CONTAINS\n  };\n}\n\nmodule.exports = crystal;\n"],"names":["crystal","hljs","INT_SUFFIX","FLOAT_SUFFIX","CRYSTAL_IDENT_RE","CRYSTAL_METHOD_RE","CRYSTAL_PATH_RE","CRYSTAL_KEYWORDS","SUBST","VARIABLE","EXPANSION","recursiveParen","begin","end","contains","STRING","Q_STRING","REGEXP","REGEXP2","ATTRIBUTE","CRYSTAL_DEFAULT_CONTAINS","crystal_1"],"mappings":"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","x_google_ignoreList":[0]}