Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(212)

Side by Side Diff: Source/devtools/front_end/CodeMirrorUtils.js

Issue 22638008: DevTools: Use CodeMirror modes instead of highlight tokenizers (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: address comments Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
6 * met:
7 *
8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above
11 * copyright notice, this list of conditions and the following disclaimer
12 * in the documentation and/or other materials provided with the
13 * distribution.
14 * * Neither the name of Google Inc. nor the names of its
15 * contributors may be used to endorse or promote products derived from
16 * this software without specific prior written permission.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */
30
31 WebInspector.CodeMirrorUtils = {
32 /**
33 * @param {string} mimeType
34 * @return {function(string, function(string, string, number, number))}
35 */
36 createTokenizer: function(mimeType)
37 {
38 var mode = CodeMirror.getMode({indentUnit: 2}, mimeType);
39 var state = CodeMirror.startState(mode);
40 function tokenize(line, callback)
41 {
42 var stream = new CodeMirror.StringStream(line);
43 while (!stream.eol()) {
44 var style = mode.token(stream, state);
45 var value = stream.current();
46 callback(value, style, stream.start, stream.start + value.length);
47 stream.start = stream.pos;
48 }
49 }
50 return tokenize;
51 },
52
53 /**
54 * @param {string} tokenType
55 */
56 convertTokenType: function(tokenType)
57 {
58 if (tokenType.startsWith("js-variable") || tokenType.startsWith("js-prop erty") || tokenType === "js-def")
59 return "javascript-ident";
60 if (tokenType === "js-string-2")
61 return "javascript-regexp";
62 if (tokenType === "js-number" || tokenType === "js-comment" || tokenType === "js-string" || tokenType === "js-keyword")
63 return "javascript-" + tokenType.substring("js-".length);
64 return null;
65 },
66
67 /**
68 * @param {string} modeName
69 * @param {string} tokenPrefix
70 */
71 overrideModeWithPrefixedTokens: function(modeName, tokenPrefix)
72 {
73 var oldModeName = modeName + "-old";
74 if (CodeMirror.modes[oldModeName])
75 return;
76
77 CodeMirror.defineMode(oldModeName, CodeMirror.modes[modeName]);
78 CodeMirror.defineMode(modeName, modeConstructor);
79
80 function modeConstructor(config, parserConfig)
81 {
82 var innerConfig = {};
83 for (var i in parserConfig)
84 innerConfig[i] = parserConfig[i];
85 innerConfig.name = oldModeName;
86 var codeMirrorMode = CodeMirror.getMode(config, innerConfig);
87 codeMirrorMode.name = modeName;
88 codeMirrorMode.token = tokenOverride.bind(this, codeMirrorMode.token );
89 return codeMirrorMode;
90 }
91
92 function tokenOverride(superToken, stream, state)
93 {
94 var token = superToken(stream, state);
95 return token ? tokenPrefix + token : token;
96 }
97 }
98 }
99
100 WebInspector.CodeMirrorUtils.overrideModeWithPrefixedTokens("css-base", "css-");
101 WebInspector.CodeMirrorUtils.overrideModeWithPrefixedTokens("javascript", "js-") ;
102 WebInspector.CodeMirrorUtils.overrideModeWithPrefixedTokens("xml", "xml-");
OLDNEW
« no previous file with comments | « Source/devtools/front_end/CodeMirrorTextEditor.js ('k') | Source/devtools/front_end/DOMSyntaxHighlighter.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698