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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/script_formatter_worker/AcornTokenizer.js

Issue 1770263002: Devtools: resolve expressions in minified scripts with sourcemaps (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comments Created 4 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
(Empty)
1 // Copyright (c) 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 /**
6 * @constructor
7 * @param {string} content
8 */
9 FormatterWorker.AcornTokenizer = function(content)
10 {
11 this._content = content;
12 this._comments = [];
13 this._tokenizer = acorn.tokenizer(this._content, { ecmaVersion: 6, onComment : this._comments });
14 this._lineEndings = this._content.lineEndings();
15 this._lineNumber = 0;
16 this._tokenLineStart = 0;
17 this._tokenLineEnd = 0;
18 this._nextTokenInternal();
19 }
20
21 /**
22 * @param {!Acorn.TokenOrComment} token
23 * @param {string=} values
24 * @return {boolean}
25 */
26 FormatterWorker.AcornTokenizer.punctuator = function(token, values)
27 {
28 return token.type !== acorn.tokTypes.num &&
29 token.type !== acorn.tokTypes.regexp &&
30 token.type !== acorn.tokTypes.string &&
31 token.type !== acorn.tokTypes.name &&
32 (!values || (token.type.label.length === 1 && values.indexOf(token.type. label) !== -1));
33 }
34
35 /**
36 * @param {!Acorn.TokenOrComment} token
37 * @param {string=} keyword
38 * @return {boolean}
39 */
40 FormatterWorker.AcornTokenizer.keyword = function(token, keyword)
41 {
42 return !!token.type.keyword && token.type !== acorn.tokTypes._true && token. type !== acorn.tokTypes._false &&
43 (!keyword || token.type.keyword === keyword);
44 }
45
46 /**
47 * @param {!Acorn.TokenOrComment} token
48 * @param {string=} identifier
49 * @return {boolean}
50 */
51 FormatterWorker.AcornTokenizer.identifier = function(token, identifier)
52 {
53 return token.type === acorn.tokTypes.name && (!identifier || token.value === identifier);
54 }
55
56 /**
57 * @param {!Acorn.TokenOrComment} token
58 * @return {boolean}
59 */
60 FormatterWorker.AcornTokenizer.lineComment = function(token)
61 {
62 return token.type === "Line";
63 }
64
65 /**
66 * @param {!Acorn.TokenOrComment} token
67 * @return {boolean}
68 */
69 FormatterWorker.AcornTokenizer.blockComment = function(token)
70 {
71 return token.type === "Block";
72 }
73
74 FormatterWorker.AcornTokenizer.prototype = {
75 /**
76 * @return {!Acorn.TokenOrComment}
77 */
78 _nextTokenInternal: function()
79 {
80 if (this._comments.length)
81 return this._comments.shift();
82 var token = this._bufferedToken;
83
84 this._bufferedToken = this._tokenizer.getToken();
85 return token;
86 },
87
88 /**
89 * @param {number} position
90 * @return {number}
91 */
92 _rollLineNumberToPosition: function(position)
93 {
94 while (this._lineNumber + 1 < this._lineEndings.length && position > thi s._lineEndings[this._lineNumber])
95 ++this._lineNumber;
96 return this._lineNumber;
97 },
98
99 /**
100 * @return {?Acorn.TokenOrComment}
101 */
102 nextToken: function()
103 {
104 var token = this._nextTokenInternal();
105 if (token.type === acorn.tokTypes.eof)
106 return null;
107
108 this._tokenLineStart = this._rollLineNumberToPosition(token.start);
109 this._tokenLineEnd = this._rollLineNumberToPosition(token.end);
110 this._tokenColumnStart = this._tokenLineStart > 0 ? token.start - this._ lineEndings[this._tokenLineStart - 1] - 1 : token.start;
111 return token;
112 },
113
114 /**
115 * @return {?Acorn.TokenOrComment}
116 */
117 peekToken: function()
118 {
119 if (this._comments.length)
120 return this._comments[0];
121 return this._bufferedToken.type !== acorn.tokTypes.eof ? this._bufferedT oken : null;
122 },
123
124 /**
125 * @return {number}
126 */
127 tokenLineStart: function()
128 {
129 return this._tokenLineStart;
130 },
131
132 /**
133 * @return {number}
134 */
135 tokenLineEnd: function()
136 {
137 return this._tokenLineEnd;
138 },
139
140 /**
141 * @return {number}
142 */
143 tokenColumnStart: function()
144 {
145 return this._tokenColumnStart;
146 }
147 }
148
149 // A dummy javascript mode which is used only by htmlmixed mode to advance
150 // stream until a </script> is found.
151 CodeMirror.defineMode("javascript", function(config, parserConfig) {
152 return {
153 token: function(stream, state)
154 {
155 return stream.next();
156 }
157 }
158 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698