Changeset 147030 in webkit
- Timestamp:
- Mar 27, 2013 5:14:34 PM (11 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r147028 r147030 1 2013-03-27 Andrey Lushnikov <lushnikov@chromium.org> 2 3 Web Inspector: [DTE] implement "tokenAtTextPosition" method 4 https://bugs.webkit.org/show_bug.cgi?id=113390 5 6 Reviewed by Pavel Feldman. 7 8 Add a test to verify TextEditor.tokenAtTextPosition method. 9 10 * inspector/editor/text-editor-token-at-position-expected.txt: Added. 11 * inspector/editor/text-editor-token-at-position.html: Added. 12 1 13 2013-03-27 Sergey Ryazanov <serya@chromium.org> 2 14 -
trunk/Source/WebCore/ChangeLog
r147029 r147030 1 2013-03-27 Andrey Lushnikov <lushnikov@chromium.org> 2 3 Web Inspector: [DTE] implement "tokenAtTextPosition" method 4 https://bugs.webkit.org/show_bug.cgi?id=113390 5 6 Reviewed by Pavel Feldman. 7 8 Test: inspector/editor/text-editor-token-at-position.html 9 10 - Add TextEditor.tokenAtTextPosition method 11 - Implement tokenAtTextPosition method in DefaultTextEditor 12 13 * inspector/front-end/DefaultTextEditor.js: 14 (WebInspector.DefaultTextEditor.prototype.tokenAtTextPosition): 15 (WebInspector.TextEditorMainPanel.prototype.compare): 16 (WebInspector.TextEditorMainPanel.prototype.tokenAtTextPosition): 17 (WebInspector.TextEditorMainPanel.prototype._tokenAtUnhighlightedLine): 18 (WebInspector.TextEditorMainPanel.prototype.set mimeType): 19 (WebInspector.TextEditorMainPanel.prototype.get mimeType): 20 * inspector/front-end/TextEditor.js: 21 (WebInspector.TextEditor.prototype.tokenAtTextPosition): 22 * inspector/front-end/TextEditorHighlighter.js: 23 (WebInspector.TextEditorHighlighter): 24 (WebInspector.TextEditorHighlighter.prototype.get mimeType): 25 (WebInspector.TextEditorHighlighter.prototype.set mimeType): 26 1 27 2013-03-27 Charles Wei <charles.wei@torchmobile.com.cn> 2 28 -
trunk/Source/WebCore/inspector/front-end/DefaultTextEditor.js
r147025 r147030 124 124 }, 125 125 /** 126 * @param {number} lineNumber 127 * @param {number} column 128 * @return {?{startColumn: number, endColumn: number, type: string}} 129 */ 130 tokenAtTextPosition: function(lineNumber, column) 131 { 132 return this._mainPanel.tokenAtTextPosition(lineNumber, column); 133 }, 134 135 /** 126 136 * @param {WebInspector.TextRange} range 127 137 * @return {string} … … 1407 1417 1408 1418 WebInspector.TextEditorMainPanel.prototype = { 1419 /** 1420 * @param {number} lineNumber 1421 * @param {number} column 1422 * @return {?{startColumn: number, endColumn: number, type: string}} 1423 */ 1424 tokenAtTextPosition: function(lineNumber, column) 1425 { 1426 if (lineNumber >= this._textModel.linesCount || lineNumber < 0) 1427 return null; 1428 var line = this._textModel.line(lineNumber); 1429 if (column >= line.length || column < 0) 1430 return null; 1431 var highlight = this._textModel.getAttribute(lineNumber, "highlight"); 1432 if (!highlight) 1433 return this._tokenAtUnhighlightedLine(line, column); 1434 function compare(value, object) 1435 { 1436 if (value >= object.startColumn && value <= object.endColumn) 1437 return 0; 1438 return value - object.startColumn; 1439 } 1440 var index = binarySearch(column, highlight.ranges, compare); 1441 if (index >= 0) { 1442 var range = highlight.ranges[index]; 1443 return { 1444 startColumn: range.startColumn, 1445 endColumn: range.endColumn, 1446 type: range.token 1447 }; 1448 } 1449 return null; 1450 }, 1451 1452 /** 1453 * @param {string} line 1454 * @param {number} column 1455 * @return {?{startColumn: number, endColumn: number, type: string}} 1456 */ 1457 _tokenAtUnhighlightedLine: function(line, column) 1458 { 1459 var tokenizer = WebInspector.SourceTokenizer.Registry.getInstance().getTokenizer(this.mimeType); 1460 tokenizer.condition = tokenizer.createInitialCondition(); 1461 tokenizer.line = line; 1462 var lastTokenizedColumn = 0; 1463 while (lastTokenizedColumn < line.length) { 1464 var newColumn = tokenizer.nextToken(lastTokenizedColumn); 1465 if (column < newColumn) { 1466 if (!tokenizer.tokenType) 1467 return null; 1468 return { 1469 startColumn: lastTokenizedColumn, 1470 endColumn: newColumn - 1, 1471 type: tokenizer.tokenType 1472 }; 1473 } else 1474 lastTokenizedColumn = newColumn; 1475 } 1476 return null; 1477 }, 1478 1409 1479 _registerShortcuts: function() 1410 1480 { … … 1622 1692 { 1623 1693 this._highlighter.mimeType = mimeType; 1694 }, 1695 1696 get mimeType() 1697 { 1698 return this._highlighter.mimeType; 1624 1699 }, 1625 1700 -
trunk/Source/WebCore/inspector/front-end/TextEditor.js
r146971 r147030 47 47 markClean: function() { }, 48 48 /** 49 * @param {number} lineNumber 50 * @param {number} column 51 * @return {?{startColumn: number, endColumn: number, type: string}} 52 */ 53 tokenAtTextPosition: function(lineNumber, column) { }, 54 55 /** 49 56 * @param {string} mimeType 50 57 */ -
trunk/Source/WebCore/inspector/front-end/TextEditorHighlighter.js
r142091 r147030 36 36 { 37 37 this._textModel = textModel; 38 this._tokenizer = WebInspector.SourceTokenizer.Registry.getInstance().getTokenizer("text/html"); 38 this._mimeType = "text/html"; 39 this._tokenizer = WebInspector.SourceTokenizer.Registry.getInstance().getTokenizer(this._mimeType); 39 40 this._damageCallback = damageCallback; 40 41 this._highlightChunkLimit = 1000; … … 45 46 46 47 WebInspector.TextEditorHighlighter.prototype = { 48 49 get mimeType() 50 { 51 return this._mimeType; 52 }, 53 54 /** 55 * @param {string} mimeType 56 */ 47 57 set mimeType(mimeType) 48 58 { 49 59 var tokenizer = WebInspector.SourceTokenizer.Registry.getInstance().getTokenizer(mimeType); 50 if (tokenizer) 60 if (tokenizer) { 51 61 this._tokenizer = tokenizer; 62 this._mimeType = mimeType; 63 } 52 64 }, 53 65
Note: See TracChangeset
for help on using the changeset viewer.