[ Index ] |
PHP Cross Reference of Joomla 4.2.2 documentation |
[Summary view] [Print] [Text view]
1 // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 // Distributed under an MIT license: https://codemirror.net/5/LICENSE 3 4 (function(mod) { 5 if (typeof exports == "object" && typeof module == "object") // CommonJS 6 mod(require("../../lib/codemirror"), require("../clike/clike")); 7 else if (typeof define == "function" && define.amd) // AMD 8 define(["../../lib/codemirror", "../clike/clike"], mod); 9 else // Plain browser env 10 mod(CodeMirror); 11 })(function(CodeMirror) { 12 "use strict"; 13 14 var keywords = ("this super static final const abstract class extends external factory " + 15 "implements mixin get native set typedef with enum throw rethrow " + 16 "assert break case continue default in return new deferred async await covariant " + 17 "try catch finally do else for if switch while import library export " + 18 "part of show hide is as extension on yield late required").split(" "); 19 var blockKeywords = "try catch finally do else for if switch while".split(" "); 20 var atoms = "true false null".split(" "); 21 var builtins = "void bool num int double dynamic var String Null Never".split(" "); 22 23 function set(words) { 24 var obj = {}; 25 for (var i = 0; i < words.length; ++i) obj[words[i]] = true; 26 return obj; 27 } 28 29 function pushInterpolationStack(state) { 30 (state.interpolationStack || (state.interpolationStack = [])).push(state.tokenize); 31 } 32 33 function popInterpolationStack(state) { 34 return (state.interpolationStack || (state.interpolationStack = [])).pop(); 35 } 36 37 function sizeInterpolationStack(state) { 38 return state.interpolationStack ? state.interpolationStack.length : 0; 39 } 40 41 CodeMirror.defineMIME("application/dart", { 42 name: "clike", 43 keywords: set(keywords), 44 blockKeywords: set(blockKeywords), 45 builtin: set(builtins), 46 atoms: set(atoms), 47 hooks: { 48 "@": function(stream) { 49 stream.eatWhile(/[\w\$_\.]/); 50 return "meta"; 51 }, 52 53 // custom string handling to deal with triple-quoted strings and string interpolation 54 "'": function(stream, state) { 55 return tokenString("'", stream, state, false); 56 }, 57 "\"": function(stream, state) { 58 return tokenString("\"", stream, state, false); 59 }, 60 "r": function(stream, state) { 61 var peek = stream.peek(); 62 if (peek == "'" || peek == "\"") { 63 return tokenString(stream.next(), stream, state, true); 64 } 65 return false; 66 }, 67 68 "}": function(_stream, state) { 69 // "}" is end of interpolation, if interpolation stack is non-empty 70 if (sizeInterpolationStack(state) > 0) { 71 state.tokenize = popInterpolationStack(state); 72 return null; 73 } 74 return false; 75 }, 76 77 "/": function(stream, state) { 78 if (!stream.eat("*")) return false 79 state.tokenize = tokenNestedComment(1) 80 return state.tokenize(stream, state) 81 }, 82 token: function(stream, _, style) { 83 if (style == "variable") { 84 // Assume uppercase symbols are classes using variable-2 85 var isUpper = RegExp('^[_$]*[A-Z][a-zA-Z0-9_$]*$','g'); 86 if (isUpper.test(stream.current())) { 87 return 'variable-2'; 88 } 89 } 90 } 91 } 92 }); 93 94 function tokenString(quote, stream, state, raw) { 95 var tripleQuoted = false; 96 if (stream.eat(quote)) { 97 if (stream.eat(quote)) tripleQuoted = true; 98 else return "string"; //empty string 99 } 100 function tokenStringHelper(stream, state) { 101 var escaped = false; 102 while (!stream.eol()) { 103 if (!raw && !escaped && stream.peek() == "$") { 104 pushInterpolationStack(state); 105 state.tokenize = tokenInterpolation; 106 return "string"; 107 } 108 var next = stream.next(); 109 if (next == quote && !escaped && (!tripleQuoted || stream.match(quote + quote))) { 110 state.tokenize = null; 111 break; 112 } 113 escaped = !raw && !escaped && next == "\\"; 114 } 115 return "string"; 116 } 117 state.tokenize = tokenStringHelper; 118 return tokenStringHelper(stream, state); 119 } 120 121 function tokenInterpolation(stream, state) { 122 stream.eat("$"); 123 if (stream.eat("{")) { 124 // let clike handle the content of ${...}, 125 // we take over again when "}" appears (see hooks). 126 state.tokenize = null; 127 } else { 128 state.tokenize = tokenInterpolationIdentifier; 129 } 130 return null; 131 } 132 133 function tokenInterpolationIdentifier(stream, state) { 134 stream.eatWhile(/[\w_]/); 135 state.tokenize = popInterpolationStack(state); 136 return "variable"; 137 } 138 139 function tokenNestedComment(depth) { 140 return function (stream, state) { 141 var ch 142 while (ch = stream.next()) { 143 if (ch == "*" && stream.eat("/")) { 144 if (depth == 1) { 145 state.tokenize = null 146 break 147 } else { 148 state.tokenize = tokenNestedComment(depth - 1) 149 return state.tokenize(stream, state) 150 } 151 } else if (ch == "/" && stream.eat("*")) { 152 state.tokenize = tokenNestedComment(depth + 1) 153 return state.tokenize(stream, state) 154 } 155 } 156 return "comment" 157 } 158 } 159 160 CodeMirror.registerHelper("hintWords", "application/dart", keywords.concat(atoms).concat(builtins)); 161 162 // This is needed to make loading through meta.js work. 163 CodeMirror.defineMode("dart", function(conf) { 164 return CodeMirror.getMode(conf, "application/dart"); 165 }, "clike"); 166 });
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Wed Sep 7 05:41:13 2022 | Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer |