UNPKG

prism-code-editor

Version:

Lightweight, extensible code editor component for the web using Prism

116 lines (115 loc) 3.87 kB
import { a as languages } from "../../core-8vQkh0Rd.js"; import { r as clikeNumber, t as boolean } from "../../patterns-C0vJBvXO.js"; //#region src/prism/languages/ruby.js var interpolationContent = { pattern: /[^]+/ }; var percentExpression = "(?:([^a-zA-Z\\d\\s{([<=])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|\\((?:\\\\[\\s\\S]|[^\\\\()]|\\((?:\\\\[\\s\\S]|[^\\\\()])*\\))*\\)|\\{(?:\\\\[\\s\\S]|[^\\\\{}]|\\{(?:\\\\[\\s\\S]|[^\\\\{}])*\\})*\\}|\\[(?:\\\\[\\s\\S]|[^\\\\[\\]]|\\[(?:\\\\[\\s\\S]|[^\\\\[\\]])*\\])*\\]|<(?:\\\\[\\s\\S]|[^\\\\<>]|<(?:\\\\[\\s\\S]|[^\\\\<>])*>)*>)"; var symbolName = "(?:\"(?:\\\\.|[^\\\\\n\"])*\"|(?:\\b(?!\\d)\\w+|[^\\s\0-\\x7f]+)[?!]?|\\$.)"; var interpolation = { pattern: /((?:^|[^\\])(?:\\\\)*)#\{(?:[^{}]|\{[^}]*\})*\}/, lookbehind: true, inside: { "delimiter": { pattern: /^..|\}$/g, alias: "punctuation" }, "content": interpolationContent } }; interpolationContent.inside = languages.rb = languages.ruby = { "comment": /#.*|^=begin\s[^]*?^=end/gm, "string-literal": [ { pattern: RegExp("%[qQiIwWs]?" + percentExpression + "|([\"'])(?:#\\{[^}]+\\}|#(?!\\{)|\\\\[\\s\\S]|(?!\\2)[^\\\\#\n])*\\2", "g"), inside: { "interpolation": interpolation, "string": /[^]+/ } }, { pattern: /<<[-~]?([a-z_]\w*)\n(?:.*\n)*?[ ]*\1/gi, alias: "heredoc-string", inside: { "delimiter": { pattern: /^<<[-~]?[a-z_]\w*|\b[a-z_]\w*$/i, inside: { "symbol": /\w+/, "punctuation": /^<<[-~]?/ } }, "interpolation": interpolation, "string": /[^]+/ } }, { pattern: /<<[-~]?'([a-z_]\w*)'\n(?:.*\n)*?[ ]*\1/gi, alias: "heredoc-string", inside: { "delimiter": { pattern: /^<<[-~]?'[a-z_]\w*'|\b[a-z_]\w*$/i, inside: { "symbol": /\w+/, "punctuation": /^<<[-~]?'|'$/ } }, "string": /[^]+/ } } ], "command-literal": { pattern: RegExp("%x" + percentExpression + "|`(?:#\\{[^}]+\\}|#(?!\\{)|\\\\[\\s\\S]|[^\\\\`#\n])*`", "g"), inside: { "interpolation": interpolation, "command": { pattern: /[^]+/, alias: "string" } } }, "class-name": { pattern: /(\b(?:class|module)\s+|\bcatch\s+\()[\w.\\]+|\b[A-Z_]\w*(?=\s*\.\s*new\b)/, lookbehind: true, inside: { "punctuation": /[\\.]/ } }, "regex-literal": { pattern: RegExp(`(^|[^/])/(?!/)(?:\\[[^ \\]]+\\]|\\\\.|[^\\\\ /[])+/[egimnosux]{0,6}(?=\\s*(?:\$|[ ,.;})#]))|%r${percentExpression.replace(/\\1/g, "\\2")}[egimnosux]{0,6}`, "g"), lookbehind: true, inside: { "interpolation": interpolation, "regex": /[^]+/ } }, "variable": /[@$]+(?!\d)\w+(?:[?!]|\b)/, "symbol": [{ pattern: RegExp("(^|[^:]):" + symbolName, "g"), lookbehind: true }, { pattern: RegExp("([\n{(,][ ]*)" + symbolName + "(?=:(?!:))", "g"), lookbehind: true }], "method-definition": { pattern: /(\bdef\s+)\w+(?:\s*\.\s*\w+)?/, lookbehind: true, inside: { "function": /\b\w+$/, "keyword": /^self\b/, "class-name": /^\w+/, "punctuation": /\./ } }, "keyword": /\b(?:BEGIN|END|alias|and|begin|break|case|class|def|define_method|defined|do|each|else|elsif|end|ensure|extend|f?or|if|in|include|module|new|next|nil|not|prepend|private|protected|public|raise|redo|require|rescue|retry|return|self|super|[tw]hen|throw|undef|unless|until|while|yield)\b/, "boolean": boolean, "builtin": /\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Fixnum|Float|Hash|IO|Integer|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|Stat|String|Struct|Symbol|TMS|Thread|ThreadGroup|Time|TrueClass)\b/, "constant": /\b[A-Z][A-Z\d_]*(?:[?!]|\b)/, "number": clikeNumber, "double-colon": { pattern: /::/, alias: "punctuation" }, "operator": /\.{2,3}|&\.|===|<?=>|[!=]?~|(?:&&|\|\||<<|>>|\*\*|[%&|^!=<>/*+-])=?|[?:]/, "punctuation": /[()[\]{}.,;]/ }; //#endregion //# sourceMappingURL=ruby.js.map