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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/sass/ASTSourceMap.js

Issue 2466123002: DevTools: reformat front-end code to match chromium style. (Closed)
Patch Set: all done Created 4 years, 1 month 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 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4
5 /** 4 /**
6 * @constructor
7 * @implements {WebInspector.SourceMap} 5 * @implements {WebInspector.SourceMap}
8 * @param {string} compiledURL 6 * @unrestricted
9 * @param {string} sourceMapURL
10 * @param {!Map<string, !WebInspector.SASSSupport.AST>} models
11 * @param {?function(!WebInspector.ASTSourceMap, !Array<!WebInspector.TextRange> , !Array<string>):!Promise<?WebInspector.SourceMap.EditResult>} editCallback
12 */ 7 */
13 WebInspector.ASTSourceMap = function(compiledURL, sourceMapURL, models, editCall back) 8 WebInspector.ASTSourceMap = class {
14 { 9 /**
10 * @param {string} compiledURL
11 * @param {string} sourceMapURL
12 * @param {!Map<string, !WebInspector.SASSSupport.AST>} models
13 * @param {?function(!WebInspector.ASTSourceMap, !Array<!WebInspector.TextRang e>, !Array<string>):!Promise<?WebInspector.SourceMap.EditResult>} editCallback
14 */
15 constructor(compiledURL, sourceMapURL, models, editCallback) {
15 this._editCallback = editCallback; 16 this._editCallback = editCallback;
16 this._compiledURL = compiledURL; 17 this._compiledURL = compiledURL;
17 this._sourceMapURL = sourceMapURL; 18 this._sourceMapURL = sourceMapURL;
18 /** @type {!Map<string, !WebInspector.SASSSupport.AST>} */ 19 /** @type {!Map<string, !WebInspector.SASSSupport.AST>} */
19 this._models = models; 20 this._models = models;
20 /** @type {!Map<!WebInspector.SASSSupport.TextNode, !WebInspector.SASSSuppor t.TextNode>} */ 21 /** @type {!Map<!WebInspector.SASSSupport.TextNode, !WebInspector.SASSSuppor t.TextNode>} */
21 this._compiledToSource = new Map(); 22 this._compiledToSource = new Map();
22 /** @type {!Multimap<!WebInspector.SASSSupport.TextNode, !WebInspector.SASSS upport.TextNode>} */ 23 /** @type {!Multimap<!WebInspector.SASSSupport.TextNode, !WebInspector.SASSS upport.TextNode>} */
23 this._sourceToCompiled = new Multimap(); 24 this._sourceToCompiled = new Multimap();
25 }
26
27 /**
28 * @override
29 * @return {string}
30 */
31 compiledURL() {
32 return this._compiledURL;
33 }
34
35 /**
36 * @override
37 * @return {string}
38 */
39 url() {
40 return this._sourceMapURL;
41 }
42
43 /**
44 * @override
45 * @return {!Array<string>}
46 */
47 sourceURLs() {
48 return this._models.keysArray().filter(url => url !== this._compiledURL);
49 }
50
51 /**
52 * @override
53 * @param {string} sourceURL
54 * @param {!WebInspector.ResourceType} contentType
55 * @return {!WebInspector.ContentProvider}
56 */
57 sourceContentProvider(sourceURL, contentType) {
58 var model = this.modelForURL(sourceURL);
59 var sourceContent = model ? model.document.text.value() : '';
60 return WebInspector.StaticContentProvider.fromString(sourceURL, contentType, sourceContent);
61 }
62
63 /**
64 * @override
65 * @param {string} sourceURL
66 * @return {?string}
67 */
68 embeddedContentByURL(sourceURL) {
69 var model = this.modelForURL(sourceURL);
70 return model ? model.document.text.value() : '';
71 }
72
73 /**
74 * @override
75 * @param {number} lineNumber
76 * @param {number=} columnNumber
77 * @return {?WebInspector.SourceMapEntry}
78 */
79 findEntry(lineNumber, columnNumber) {
80 columnNumber = columnNumber || 0;
81 var compiledNode = this.compiledModel().findNodeForPosition(lineNumber, colu mnNumber);
82 if (!compiledNode)
83 return null;
84 var sourceNode = this.toSourceNode(compiledNode);
85 if (!sourceNode)
86 return null;
87 return new WebInspector.SourceMapEntry(
88 lineNumber, columnNumber, sourceNode.document.url, sourceNode.range.star tLine, sourceNode.range.startColumn);
89 }
90
91 /**
92 * @override
93 * @return {boolean}
94 */
95 editable() {
96 return !!this._editCallback;
97 }
98
99 /**
100 * @override
101 * @param {!Array<!WebInspector.TextRange>} ranges
102 * @param {!Array<string>} texts
103 * @return {!Promise<?WebInspector.SourceMap.EditResult>}
104 */
105 editCompiled(ranges, texts) {
106 return this._editCallback.call(null, this, ranges, texts);
107 }
108
109 /**
110 * @return {!WebInspector.SASSSupport.AST}
111 */
112 compiledModel() {
113 return /** @type {!WebInspector.SASSSupport.AST} */ (this._models.get(this._ compiledURL));
114 }
115
116 /**
117 * @return {!Map<string, !WebInspector.SASSSupport.AST>}
118 */
119 sourceModels() {
120 var sourceModels = /** @type {!Map<string, !WebInspector.SASSSupport.AST>} * / (new Map(this._models));
121 sourceModels.delete(this._compiledURL);
122 return sourceModels;
123 }
124
125 /**
126 * @return {!Map<string, !WebInspector.SASSSupport.AST>}
127 */
128 models() {
129 return /** @type {!Map<string, !WebInspector.SASSSupport.AST>} */ (new Map(t his._models));
130 }
131
132 /**
133 * @param {string} url
134 * @return {?WebInspector.SASSSupport.AST}
135 */
136 modelForURL(url) {
137 return this._models.get(url) || null;
138 }
139
140 /**
141 * @param {!WebInspector.SASSSupport.TextNode} compiled
142 * @param {!WebInspector.SASSSupport.TextNode} source
143 */
144 addMapping(compiled, source) {
145 this._compiledToSource.set(compiled, source);
146 this._sourceToCompiled.set(source, compiled);
147 }
148
149 /**
150 * @param {!WebInspector.SASSSupport.TextNode} compiled
151 * @param {!WebInspector.SASSSupport.TextNode} source
152 */
153 removeMapping(compiled, source) {
154 this._compiledToSource.delete(compiled);
155 this._sourceToCompiled.remove(source, compiled);
156 }
157
158 /**
159 * @param {!WebInspector.SASSSupport.TextNode} compiled
160 * @return {?WebInspector.SASSSupport.TextNode}
161 */
162 toSourceNode(compiled) {
163 return this._compiledToSource.get(compiled) || null;
164 }
165
166 /**
167 * @param {!WebInspector.SASSSupport.TextNode} source
168 * @return {!Array<!WebInspector.SASSSupport.TextNode>}
169 */
170 toCompiledNodes(source) {
171 var compiledNodes = this._sourceToCompiled.get(source);
172 return compiledNodes ? compiledNodes.valuesArray() : [];
173 }
174
175 /**
176 * @param {!Array<!WebInspector.SASSSupport.AST>} updated
177 * @param {!Map<!WebInspector.SASSSupport.Node, !WebInspector.SASSSupport.Node >=} outNodeMapping
178 * @return {?WebInspector.ASTSourceMap}
179 */
180 rebase(updated, outNodeMapping) {
181 outNodeMapping = outNodeMapping || new Map();
182 outNodeMapping.clear();
183
184 var models = /** @type {!Map<string, !WebInspector.SASSSupport.AST>} */ (new Map(this._models));
185 for (var newAST of updated) {
186 var oldAST = models.get(newAST.document.url);
187 if (!oldAST.match(newAST, outNodeMapping))
188 return null;
189 models.set(newAST.document.url, newAST);
190 }
191
192 var newMap = new WebInspector.ASTSourceMap(this._compiledURL, this._sourceMa pURL, models, this._editCallback);
193 var compiledNodes = this._compiledToSource.keysArray();
194 for (var i = 0; i < compiledNodes.length; ++i) {
195 var compiledNode = compiledNodes[i];
196 var sourceNode = /** @type {!WebInspector.SASSSupport.TextNode} */ (this._ compiledToSource.get(compiledNode));
197 var mappedCompiledNode =
198 /** @type {!WebInspector.SASSSupport.TextNode} */ (outNodeMapping.get( compiledNode) || compiledNode);
199 var mappedSourceNode =
200 /** @type {!WebInspector.SASSSupport.TextNode} */ (outNodeMapping.get( sourceNode) || sourceNode);
201 newMap.addMapping(mappedCompiledNode, mappedSourceNode);
202 }
203 return newMap;
204 }
24 }; 205 };
25
26 WebInspector.ASTSourceMap.prototype = {
27 /**
28 * @override
29 * @return {string}
30 */
31 compiledURL: function()
32 {
33 return this._compiledURL;
34 },
35
36 /**
37 * @override
38 * @return {string}
39 */
40 url: function()
41 {
42 return this._sourceMapURL;
43 },
44
45 /**
46 * @override
47 * @return {!Array<string>}
48 */
49 sourceURLs: function()
50 {
51 return this._models.keysArray().filter(url => url !== this._compiledURL) ;
52 },
53
54 /**
55 * @override
56 * @param {string} sourceURL
57 * @param {!WebInspector.ResourceType} contentType
58 * @return {!WebInspector.ContentProvider}
59 */
60 sourceContentProvider: function(sourceURL, contentType)
61 {
62 var model = this.modelForURL(sourceURL);
63 var sourceContent = model ? model.document.text.value() : "";
64 return WebInspector.StaticContentProvider.fromString(sourceURL, contentT ype, sourceContent);
65 },
66
67 /**
68 * @override
69 * @param {string} sourceURL
70 * @return {?string}
71 */
72 embeddedContentByURL: function(sourceURL)
73 {
74 var model = this.modelForURL(sourceURL);
75 return model ? model.document.text.value() : "";
76 },
77
78 /**
79 * @override
80 * @param {number} lineNumber
81 * @param {number=} columnNumber
82 * @return {?WebInspector.SourceMapEntry}
83 */
84 findEntry: function(lineNumber, columnNumber)
85 {
86 columnNumber = columnNumber || 0;
87 var compiledNode = this.compiledModel().findNodeForPosition(lineNumber, columnNumber);
88 if (!compiledNode)
89 return null;
90 var sourceNode = this.toSourceNode(compiledNode);
91 if (!sourceNode)
92 return null;
93 return new WebInspector.SourceMapEntry(lineNumber, columnNumber, sourceN ode.document.url, sourceNode.range.startLine, sourceNode.range.startColumn);
94 },
95
96 /**
97 * @override
98 * @return {boolean}
99 */
100 editable: function()
101 {
102 return !!this._editCallback;
103 },
104
105 /**
106 * @override
107 * @param {!Array<!WebInspector.TextRange>} ranges
108 * @param {!Array<string>} texts
109 * @return {!Promise<?WebInspector.SourceMap.EditResult>}
110 */
111 editCompiled: function(ranges, texts)
112 {
113 return this._editCallback.call(null, this, ranges, texts);
114 },
115
116 /**
117 * @return {!WebInspector.SASSSupport.AST}
118 */
119 compiledModel: function()
120 {
121 return /** @type {!WebInspector.SASSSupport.AST} */(this._models.get(thi s._compiledURL));
122 },
123
124 /**
125 * @return {!Map<string, !WebInspector.SASSSupport.AST>}
126 */
127 sourceModels: function()
128 {
129 var sourceModels = /** @type {!Map<string, !WebInspector.SASSSupport.AST >} */(new Map(this._models));
130 sourceModels.delete(this._compiledURL);
131 return sourceModels;
132 },
133
134 /**
135 * @return {!Map<string, !WebInspector.SASSSupport.AST>}
136 */
137 models: function()
138 {
139 return /** @type {!Map<string, !WebInspector.SASSSupport.AST>} */(new Ma p(this._models));
140 },
141
142 /**
143 * @param {string} url
144 * @return {?WebInspector.SASSSupport.AST}
145 */
146 modelForURL: function(url)
147 {
148 return this._models.get(url) || null;
149 },
150
151 /**
152 * @param {!WebInspector.SASSSupport.TextNode} compiled
153 * @param {!WebInspector.SASSSupport.TextNode} source
154 */
155 addMapping: function(compiled, source)
156 {
157 this._compiledToSource.set(compiled, source);
158 this._sourceToCompiled.set(source, compiled);
159 },
160
161 /**
162 * @param {!WebInspector.SASSSupport.TextNode} compiled
163 * @param {!WebInspector.SASSSupport.TextNode} source
164 */
165 removeMapping: function(compiled, source)
166 {
167 this._compiledToSource.delete(compiled);
168 this._sourceToCompiled.remove(source, compiled);
169 },
170
171 /**
172 * @param {!WebInspector.SASSSupport.TextNode} compiled
173 * @return {?WebInspector.SASSSupport.TextNode}
174 */
175 toSourceNode: function(compiled)
176 {
177 return this._compiledToSource.get(compiled) || null;
178 },
179
180 /**
181 * @param {!WebInspector.SASSSupport.TextNode} source
182 * @return {!Array<!WebInspector.SASSSupport.TextNode>}
183 */
184 toCompiledNodes: function(source)
185 {
186 var compiledNodes = this._sourceToCompiled.get(source);
187 return compiledNodes ? compiledNodes.valuesArray() : [];
188 },
189
190 /**
191 * @param {!Array<!WebInspector.SASSSupport.AST>} updated
192 * @param {!Map<!WebInspector.SASSSupport.Node, !WebInspector.SASSSupport.No de>=} outNodeMapping
193 * @return {?WebInspector.ASTSourceMap}
194 */
195 rebase: function(updated, outNodeMapping)
196 {
197 outNodeMapping = outNodeMapping || new Map();
198 outNodeMapping.clear();
199
200 var models = /** @type {!Map<string, !WebInspector.SASSSupport.AST>} */( new Map(this._models));
201 for (var newAST of updated) {
202 var oldAST = models.get(newAST.document.url);
203 if (!oldAST.match(newAST, outNodeMapping))
204 return null;
205 models.set(newAST.document.url, newAST);
206 }
207
208 var newMap = new WebInspector.ASTSourceMap(this._compiledURL, this._sour ceMapURL, models, this._editCallback);
209 var compiledNodes = this._compiledToSource.keysArray();
210 for (var i = 0; i < compiledNodes.length; ++i) {
211 var compiledNode = compiledNodes[i];
212 var sourceNode = /** @type {!WebInspector.SASSSupport.TextNode} */(t his._compiledToSource.get(compiledNode));
213 var mappedCompiledNode = /** @type {!WebInspector.SASSSupport.TextNo de} */(outNodeMapping.get(compiledNode) || compiledNode);
214 var mappedSourceNode = /** @type {!WebInspector.SASSSupport.TextNode } */(outNodeMapping.get(sourceNode) || sourceNode);
215 newMap.addMapping(mappedCompiledNode, mappedSourceNode);
216 }
217 return newMap;
218 }
219 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698