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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/sources/CSSSourceFrame.js

Issue 2769843003: DevTools: split text_utils out of common module (Closed)
Patch Set: rebaseline Created 3 years, 9 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 if (!token) { 83 if (!token) {
84 if (selection.startColumn > 0) 84 if (selection.startColumn > 0)
85 token = this.textEditor.tokenAtTextPosition(selection.startLine, selecti on.startColumn - 1); 85 token = this.textEditor.tokenAtTextPosition(selection.startLine, selecti on.startColumn - 1);
86 if (!token) 86 if (!token)
87 return false; 87 return false;
88 } 88 }
89 if (token.type !== 'css-number') 89 if (token.type !== 'css-number')
90 return false; 90 return false;
91 91
92 var cssUnitRange = 92 var cssUnitRange =
93 new Common.TextRange(selection.startLine, token.startColumn, selection.s tartLine, token.endColumn); 93 new TextUtils.TextRange(selection.startLine, token.startColumn, selectio n.startLine, token.endColumn);
94 var cssUnitText = this.textEditor.text(cssUnitRange); 94 var cssUnitText = this.textEditor.text(cssUnitRange);
95 var newUnitText = this._modifyUnit(cssUnitText, change); 95 var newUnitText = this._modifyUnit(cssUnitText, change);
96 if (!newUnitText) 96 if (!newUnitText)
97 return false; 97 return false;
98 this.textEditor.editRange(cssUnitRange, newUnitText); 98 this.textEditor.editRange(cssUnitRange, newUnitText);
99 selection.startColumn = token.startColumn; 99 selection.startColumn = token.startColumn;
100 selection.endColumn = selection.startColumn + newUnitText.length; 100 selection.endColumn = selection.startColumn + newUnitText.length;
101 this.textEditor.setSelection(selection); 101 this.textEditor.setSelection(selection);
102 return true; 102 return true;
103 } 103 }
104 104
105 /** 105 /**
106 * @param {number} startLine 106 * @param {number} startLine
107 * @param {number} endLine 107 * @param {number} endLine
108 */ 108 */
109 _updateSwatches(startLine, endLine) { 109 _updateSwatches(startLine, endLine) {
110 var swatches = []; 110 var swatches = [];
111 var swatchPositions = []; 111 var swatchPositions = [];
112 112
113 var regexes = 113 var regexes =
114 [SDK.CSSMetadata.VariableRegex, SDK.CSSMetadata.URLRegex, UI.Geometry.Cu bicBezier.Regex, Common.Color.Regex]; 114 [SDK.CSSMetadata.VariableRegex, SDK.CSSMetadata.URLRegex, UI.Geometry.Cu bicBezier.Regex, Common.Color.Regex];
115 var handlers = new Map(); 115 var handlers = new Map();
116 handlers.set(Common.Color.Regex, this._createColorSwatch.bind(this)); 116 handlers.set(Common.Color.Regex, this._createColorSwatch.bind(this));
117 handlers.set(UI.Geometry.CubicBezier.Regex, this._createBezierSwatch.bind(th is)); 117 handlers.set(UI.Geometry.CubicBezier.Regex, this._createBezierSwatch.bind(th is));
118 118
119 for (var lineNumber = startLine; lineNumber <= endLine; lineNumber++) { 119 for (var lineNumber = startLine; lineNumber <= endLine; lineNumber++) {
120 var line = this.textEditor.line(lineNumber).substring(0, Sources.CSSSource Frame.maxSwatchProcessingLength); 120 var line = this.textEditor.line(lineNumber).substring(0, Sources.CSSSource Frame.maxSwatchProcessingLength);
121 var results = Common.TextUtils.splitStringByRegexes(line, regexes); 121 var results = TextUtils.TextUtils.splitStringByRegexes(line, regexes);
122 for (var i = 0; i < results.length; i++) { 122 for (var i = 0; i < results.length; i++) {
123 var result = results[i]; 123 var result = results[i];
124 if (result.regexIndex === -1 || !handlers.has(regexes[result.regexIndex] )) 124 if (result.regexIndex === -1 || !handlers.has(regexes[result.regexIndex] ))
125 continue; 125 continue;
126 var delimiters = /[\s:;,(){}]/; 126 var delimiters = /[\s:;,(){}]/;
127 var positionBefore = result.position - 1; 127 var positionBefore = result.position - 1;
128 var positionAfter = result.position + result.value.length; 128 var positionAfter = result.position + result.value.length;
129 if (positionBefore >= 0 && !delimiters.test(line.charAt(positionBefore)) || 129 if (positionBefore >= 0 && !delimiters.test(line.charAt(positionBefore)) ||
130 positionAfter < line.length && !delimiters.test(line.charAt(position After))) 130 positionAfter < line.length && !delimiters.test(line.charAt(position After)))
131 continue; 131 continue;
132 var swatch = handlers.get(regexes[result.regexIndex])(result.value); 132 var swatch = handlers.get(regexes[result.regexIndex])(result.value);
133 if (!swatch) 133 if (!swatch)
134 continue; 134 continue;
135 swatches.push(swatch); 135 swatches.push(swatch);
136 swatchPositions.push(Common.TextRange.createFromLocation(lineNumber, res ult.position)); 136 swatchPositions.push(TextUtils.TextRange.createFromLocation(lineNumber, result.position));
137 } 137 }
138 } 138 }
139 this.textEditor.operation(putSwatchesInline.bind(this)); 139 this.textEditor.operation(putSwatchesInline.bind(this));
140 140
141 /** 141 /**
142 * @this {Sources.CSSSourceFrame} 142 * @this {Sources.CSSSourceFrame}
143 */ 143 */
144 function putSwatchesInline() { 144 function putSwatchesInline() {
145 var clearRange = new Common.TextRange(startLine, 0, endLine, this.textEdit or.line(endLine).length); 145 var clearRange = new TextUtils.TextRange(startLine, 0, endLine, this.textE ditor.line(endLine).length);
146 this.textEditor.bookmarks(clearRange, Sources.CSSSourceFrame.SwatchBookmar k).forEach(marker => marker.clear()); 146 this.textEditor.bookmarks(clearRange, Sources.CSSSourceFrame.SwatchBookmar k).forEach(marker => marker.clear());
147 147
148 for (var i = 0; i < swatches.length; i++) { 148 for (var i = 0; i < swatches.length; i++) {
149 var swatch = swatches[i]; 149 var swatch = swatches[i];
150 var swatchPosition = swatchPositions[i]; 150 var swatchPosition = swatchPositions[i];
151 var bookmark = this.textEditor.addBookmark( 151 var bookmark = this.textEditor.addBookmark(
152 swatchPosition.startLine, swatchPosition.startColumn, swatch, Source s.CSSSourceFrame.SwatchBookmark); 152 swatchPosition.startLine, swatchPosition.startColumn, swatch, Source s.CSSSourceFrame.SwatchBookmark);
153 swatch[Sources.CSSSourceFrame.SwatchBookmark] = bookmark; 153 swatch[Sources.CSSSourceFrame.SwatchBookmark] = bookmark;
154 } 154 }
155 } 155 }
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 * @override 286 * @override
287 */ 287 */
288 onTextEditorContentSet() { 288 onTextEditorContentSet() {
289 super.onTextEditorContentSet(); 289 super.onTextEditorContentSet();
290 if (!this._muteSwatchProcessing) 290 if (!this._muteSwatchProcessing)
291 this._updateSwatches(0, this.textEditor.linesCount - 1); 291 this._updateSwatches(0, this.textEditor.linesCount - 1);
292 } 292 }
293 293
294 /** 294 /**
295 * @override 295 * @override
296 * @param {!Common.TextRange} oldRange 296 * @param {!TextUtils.TextRange} oldRange
297 * @param {!Common.TextRange} newRange 297 * @param {!TextUtils.TextRange} newRange
298 */ 298 */
299 onTextChanged(oldRange, newRange) { 299 onTextChanged(oldRange, newRange) {
300 super.onTextChanged(oldRange, newRange); 300 super.onTextChanged(oldRange, newRange);
301 if (!this._muteSwatchProcessing) 301 if (!this._muteSwatchProcessing)
302 this._updateSwatches(newRange.startLine, newRange.endLine); 302 this._updateSwatches(newRange.startLine, newRange.endLine);
303 } 303 }
304 304
305 /** 305 /**
306 * @param {string} char 306 * @param {string} char
307 * @return {boolean} 307 * @return {boolean}
308 */ 308 */
309 _isWordChar(char) { 309 _isWordChar(char) {
310 return Common.TextUtils.isWordChar(char) || char === '.' || char === '-' || char === '$'; 310 return TextUtils.TextUtils.isWordChar(char) || char === '.' || char === '-' || char === '$';
311 } 311 }
312 312
313 /** 313 /**
314 * @param {!Common.TextRange} prefixRange 314 * @param {!TextUtils.TextRange} prefixRange
315 * @param {!Common.TextRange} substituteRange 315 * @param {!TextUtils.TextRange} substituteRange
316 * @return {?Promise.<!UI.SuggestBox.Suggestions>} 316 * @return {?Promise.<!UI.SuggestBox.Suggestions>}
317 */ 317 */
318 _cssSuggestions(prefixRange, substituteRange) { 318 _cssSuggestions(prefixRange, substituteRange) {
319 var prefix = this.textEditor.text(prefixRange); 319 var prefix = this.textEditor.text(prefixRange);
320 if (prefix.startsWith('$')) 320 if (prefix.startsWith('$'))
321 return null; 321 return null;
322 322
323 var propertyToken = this._backtrackPropertyToken(prefixRange.startLine, pref ixRange.startColumn - 1); 323 var propertyToken = this._backtrackPropertyToken(prefixRange.startLine, pref ixRange.startColumn - 1);
324 if (!propertyToken) 324 if (!propertyToken)
325 return null; 325 return null;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
359 tokenPosition = token.startColumn - 1; 359 tokenPosition = token.startColumn - 1;
360 } 360 }
361 return null; 361 return null;
362 } 362 }
363 }; 363 };
364 364
365 /** @type {number} */ 365 /** @type {number} */
366 Sources.CSSSourceFrame.maxSwatchProcessingLength = 300; 366 Sources.CSSSourceFrame.maxSwatchProcessingLength = 300;
367 /** @type {symbol} */ 367 /** @type {symbol} */
368 Sources.CSSSourceFrame.SwatchBookmark = Symbol('swatch'); 368 Sources.CSSSourceFrame.SwatchBookmark = Symbol('swatch');
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698