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

Side by Side Diff: Source/devtools/front_end/documentation/DocumentationView.js

Issue 525363003: DevTools: [Documentation] Add signature section for renderer (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@iliia-patch
Patch Set: Change signature css-class selector Created 6 years, 3 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 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 4
5 /** 5 /**
6 * @constructor 6 * @constructor
7 * @extends {WebInspector.View} 7 * @extends {WebInspector.View}
8 */ 8 */
9 WebInspector.DocumentationView = function() 9 WebInspector.DocumentationView = function()
10 { 10 {
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 } 95 }
96 96
97 WebInspector.DocumentationView.Renderer.prototype = { 97 WebInspector.DocumentationView.Renderer.prototype = {
98 /** 98 /**
99 * @return {!Element} 99 * @return {!Element}
100 */ 100 */
101 renderJSArticle: function() 101 renderJSArticle: function()
102 { 102 {
103 this._createPageTitle(this._article.pageTitle, this._searchItem); 103 this._createPageTitle(this._article.pageTitle, this._searchItem);
104 this._createStandardizationStatus(this._article.standardizationStatus); 104 this._createStandardizationStatus(this._article.standardizationStatus);
105 this._createSignatureSection(this._article.parameters, this._article.met hods);
105 this._createTextSectionWithTitle("Summary", this._article.summary); 106 this._createTextSectionWithTitle("Summary", this._article.summary);
106 this._createSignatureSection(this._article.parameters, this._article.met hods); 107 this._createParametersSection(this._article.parameters);
107 this._createReturnValueSection(this._article.methods); 108 this._createReturnValueSection(this._article.methods);
108 this._createExamplesSection(this._article.examples); 109 this._createExamplesSection(this._article.examples);
109 this._createTextSectionWithTitle("Remarks", this._article.remarks); 110 this._createTextSectionWithTitle("Remarks", this._article.remarks);
110 111
111 return this._element; 112 return this._element;
112 }, 113 },
113 114
114 /** 115 /**
115 * @param {string} titleText 116 * @param {string} titleText
116 * @param {string} searchItem 117 * @param {string} searchItem
(...skipping 24 matching lines...) Expand all
141 */ 142 */
142 _createTextSectionWithTitle: function(titleText, article) 143 _createTextSectionWithTitle: function(titleText, article)
143 { 144 {
144 if (!article) 145 if (!article)
145 return; 146 return;
146 var section = this._element.createChild("div", "documentation-section"); 147 var section = this._element.createChild("div", "documentation-section");
147 var title = section.createChild("div", "documentation-section-title"); 148 var title = section.createChild("div", "documentation-section-title");
148 title.textContent = titleText; 149 title.textContent = titleText;
149 var text = this._renderBlock(article); 150 var text = this._renderBlock(article);
150 text.classList.add("documentation-text"); 151 text.classList.add("documentation-text");
152 text.classList.add("documentation-section-content");
151 section.appendChild(text); 153 section.appendChild(text);
152 }, 154 },
153 155
154 /** 156 /**
155 * @param {!Array.<!WebInspector.JSArticle.Parameter>} parameters 157 * @param {!Array.<!WebInspector.JSArticle.Parameter>} parameters
156 * @param {?WebInspector.JSArticle.Method} method 158 * @param {?WebInspector.JSArticle.Method} method
157 */ 159 */
158 _createSignatureSection: function(parameters, method) 160 _createSignatureSection: function(parameters, method)
159 { 161 {
162 if (!method)
163 return;
164 var section = this._element.createChild("p", "documentation-section");
165 var signature = section.createChild("span", "documentation-method-signat ure documentation-section-content monospace");
166 var methodName = signature.createChild("span", "documentation-method-nam e");
167 methodName.textContent = this._searchItem.split(".").peekLast() + "(";
168 for (var i = 0; i < parameters.length; ++i) {
169 if (i > 0)
170 signature.createTextChild(", ")
171 var parameterType = signature.createChild("span", "documentation-par ameter-data-type-value");
172 parameterType.textContent = parameters[i].dataType + (parameters[i]. optional ? "=" : "");;
173 }
174 signature.createTextChild("): ");
175 var returnTypeElement = signature.createChild("span", "documentation-par ameter-data-type-value");
176 returnTypeElement.textContent = method.returnValueName;
177 },
178
179 /**
180 * @param {!Array.<!WebInspector.JSArticle.Parameter>} parameters
181 */
182 _createParametersSection: function(parameters)
183 {
160 if (!parameters.length) 184 if (!parameters.length)
161 return; 185 return;
162 var section = this._element.createChild("div", "documentation-section"); 186 var section = this._element.createChild("div", "documentation-section");
163 var title = section.createChild("div", "documentation-section-title"); 187 var title = section.createChild("div", "documentation-section-title");
164 title.textContent = "Parameters"; 188 title.textContent = "Parameters";
165 for (var i = 0; i < parameters.length; ++i) { 189 for (var i = 0; i < parameters.length; ++i) {
166 var parameter = section.createChild("div", "documentation-parameter" ); 190 var parameter = section.createChild("div", "documentation-parameter documentation-section-content");
167 var header = parameter.createChild("div", "documentation-parameter-h eader"); 191 var header = parameter.createChild("div", "documentation-parameter-h eader");
168 var name = header.createChild("span", "documentation-parameter-name" ); 192 var name = header.createChild("span", "documentation-parameter-name" );
169 name.textContent = parameters[i].name; 193 name.textContent = parameters[i].name;
170 var dataTypeValue = header.createChild("span", "documentation-parame ter-data-type-value"); 194 var dataTypeValue = header.createChild("span", "documentation-parame ter-data-type-value documentation-parameter-margin");
171 dataTypeValue.textContent = parameters[i].dataType; 195 dataTypeValue.textContent = parameters[i].dataType;
172 if (parameters[i].optional) { 196 if (parameters[i].optional) {
173 var optional = header.createChild("span", "documentation-paramet er-optional"); 197 var optional = header.createChild("span", "documentation-paramet er-optional documentation-parameter-margin");
174 optional.textContent = WebInspector.UIString("Optional"); 198 optional.textContent = WebInspector.UIString("Optional");
175 } 199 }
176 parameter.appendChild(this._renderBlock(parameters[i].description)); 200 parameter.appendChild(this._renderBlock(parameters[i].description));
177 } 201 }
178 }, 202 },
179 203
180 /** 204 /**
181 * @param {?WebInspector.JSArticle.Method} method 205 * @param {?WebInspector.JSArticle.Method} method
182 */ 206 */
183 _createReturnValueSection: function(method) 207 _createReturnValueSection: function(method)
184 { 208 {
185 if (!method) 209 if (!method)
186 return; 210 return;
187
188 var section = this._element.createChild("div", "documentation-section"); 211 var section = this._element.createChild("div", "documentation-section");
189 var title = section.createChild("div", "documentation-section-title"); 212 var title = section.createChild("div", "documentation-section-title");
190 title.textContent = "Return Value"; 213 title.textContent = "Return Value";
191 var returnValueName = section.createChild("div", "documentation-return-v alue"); 214 var returnValueName = section.createChild("div", "documentation-section- content documentation-return-value");
192 returnValueName.textContent = WebInspector.UIString("Returns an object o f type " + method.returnValueName + "."); 215 returnValueName.textContent = WebInspector.UIString("Returns an object o f type " + method.returnValueName + ".");
193 var returnValueDescription = section.createChild("div", "documentation-r eturn-value"); 216 var returnValueDescription = section.createChild("div", "documentation-s ection-content documentation-text");
194 returnValueDescription.textContent = WebInspector.UIString(method.return ValueDescription); 217 returnValueDescription.textContent = WebInspector.UIString(method.return ValueDescription);
195 }, 218 },
196 219
197 /** 220 /**
198 * @param {!Array.<!WebInspector.JSArticle.Example>} examples 221 * @param {!Array.<!WebInspector.JSArticle.Example>} examples
199 */ 222 */
200 _createExamplesSection: function(examples) 223 _createExamplesSection: function(examples)
201 { 224 {
202 if (!examples.length) 225 if (!examples.length)
203 return; 226 return;
204 227
205 var section = this._element.createChild("div", "documentation-section"); 228 var section = this._element.createChild("div", "documentation-section");
206 var title = section.createChild("div", "documentation-section-title"); 229 var title = section.createChild("div", "documentation-section-title");
207 title.textContent = "Examples"; 230 title.textContent = "Examples";
208 231
209 for (var i = 0; i < examples.length; ++i) { 232 for (var i = 0; i < examples.length; ++i) {
210 var example = section.createChild("div", "documentation-example"); 233 var example = section.createChild("div", "documentation-example docu mentation-section-content");
211 var exampleDescription = example.createChild("div", "documentation-e xample-description-section"); 234 var exampleDescription = example.createChild("div", "documentation-e xample-description-section");
212 if (examples[i].liveUrl) { 235 if (examples[i].liveUrl) {
213 var liveUrl = exampleDescription.createChild("a", "documentation -example-link"); 236 var liveUrl = exampleDescription.createChild("a", "documentation -example-link");
214 liveUrl.href = examples[i].liveUrl; 237 liveUrl.href = examples[i].liveUrl;
215 liveUrl.textContent = WebInspector.UIString("Example"); 238 liveUrl.textContent = WebInspector.UIString("Example");
216 } 239 }
217 exampleDescription.appendChild(this._renderBlock(examples[i].descrip tion)); 240 var description = this._renderBlock(examples[i].description);
218 var code = example.createChild("div", "documentation-example-code"); 241 description.classList.add("documentation-text");
219 code.classList.add("source-code"); 242 exampleDescription.appendChild(description);
243 var code = example.createChild("div", "documentation-example-code so urce-code");
220 code.textContent = examples[i].code; 244 code.textContent = examples[i].code;
221 if (!examples[i].language) 245 if (!examples[i].language)
222 continue; 246 continue;
223 var syntaxHighlighter = new WebInspector.DOMSyntaxHighlighter(WebIns pector.DocumentationView._languageToMimeType[examples[i].language.toLowerCase()] , true); 247 var syntaxHighlighter = new WebInspector.DOMSyntaxHighlighter(WebIns pector.DocumentationView._languageToMimeType[examples[i].language.toLowerCase()] , true);
224 syntaxHighlighter.syntaxHighlightNode(code); 248 syntaxHighlighter.syntaxHighlightNode(code);
225 } 249 }
226 }, 250 },
227 251
228 /** 252 /**
229 * @param {!WebInspector.WikiParser.ArticleElement} article 253 * @param {!WebInspector.WikiParser.ArticleElement} article
(...skipping 11 matching lines...) Expand all
241 case elementTypes.Link: 265 case elementTypes.Link:
242 element = document.createElementWithClass("a", "documentation-link") ; 266 element = document.createElementWithClass("a", "documentation-link") ;
243 element.href = article.url(); 267 element.href = article.url();
244 if (!article.children().length) 268 if (!article.children().length)
245 element.textContent = article.url(); 269 element.textContent = article.url();
246 break; 270 break;
247 case elementTypes.Code: 271 case elementTypes.Code:
248 element = document.createElementWithClass("span", "documentation-cod e-tag"); 272 element = document.createElementWithClass("span", "documentation-cod e-tag");
249 break; 273 break;
250 case elementTypes.CodeBlock: 274 case elementTypes.CodeBlock:
251 element = document.createElementWithClass("pre", "documentation-code "); 275 element = document.createElementWithClass("pre", "documentation-code source-code");
252 element.classList.add("source-code");
253 element.textContent = article.code(); 276 element.textContent = article.code();
254 break; 277 break;
255 case elementTypes.PlainText: 278 case elementTypes.PlainText:
256 element = document.createElement("span"); 279 element = document.createElement("span");
257 element.textContent = article.text(); 280 element.textContent = article.text();
258 if (article.isHighlighted()) 281 if (article.isHighlighted())
259 element.classList.add("documentation-highlighted-text"); 282 element.classList.add("documentation-highlighted-text");
260 break; 283 break;
261 default: 284 default:
262 console.error("Unknown ArticleElement type " + article.type()); 285 console.error("Unknown ArticleElement type " + article.type());
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 appendApplicableItems: function(event, contextMenu, target) 317 appendApplicableItems: function(event, contextMenu, target)
295 { 318 {
296 if (!(target instanceof WebInspector.CodeMirrorTextEditor)) 319 if (!(target instanceof WebInspector.CodeMirrorTextEditor))
297 return; 320 return;
298 var textEditor = /** @type {!WebInspector.CodeMirrorTextEditor} */ (targ et); 321 var textEditor = /** @type {!WebInspector.CodeMirrorTextEditor} */ (targ et);
299 var descriptors = this._determineDescriptors(textEditor); 322 var descriptors = this._determineDescriptors(textEditor);
300 if (!descriptors.length) 323 if (!descriptors.length)
301 return; 324 return;
302 if (descriptors.length === 1) { 325 if (descriptors.length === 1) {
303 var formatString = WebInspector.useLowerCaseMenuTitles() ? "Show doc umentation for %s.%s" : "Show Documentation for %s.%s"; 326 var formatString = WebInspector.useLowerCaseMenuTitles() ? "Show doc umentation for %s.%s" : "Show Documentation for %s.%s";
304 contextMenu.appendItem(WebInspector.UIString(formatString, descripto rs[0].name(), descriptors[0].searchItem()), WebInspector.DocumentationView.showD ocumentationURL.bind(null, descriptors[0].url(), descriptors[0].searchItem())); 327 var methodName = String.sprintf("%s.%s", descriptors[0].name(), desc riptors[0].searchItem());
328 contextMenu.appendItem(WebInspector.UIString(formatString, descripto rs[0].name(), descriptors[0].searchItem()), WebInspector.DocumentationView.showD ocumentationURL.bind(null, descriptors[0].url(), methodName));
305 return; 329 return;
306 } 330 }
307 var subMenuItem = contextMenu.appendSubMenuItem(WebInspector.UIString(We bInspector.useLowerCaseMenuTitles() ? "Show documentation for..." : "Show Docume ntation for...")); 331 var subMenuItem = contextMenu.appendSubMenuItem(WebInspector.UIString(We bInspector.useLowerCaseMenuTitles() ? "Show documentation for..." : "Show Docume ntation for..."));
308 for (var i = 0; i < descriptors.length; ++i) 332 for (var i = 0; i < descriptors.length; ++i) {
309 subMenuItem.appendItem(String.sprintf("%s.%s", descriptors[i].name() , descriptors[i].searchItem()), WebInspector.DocumentationView.showDocumentation URL.bind(null, descriptors[i].url(), descriptors[i].searchItem())); 333 var methodName = String.sprintf("%s.%s", descriptors[i].name(), desc riptors[i].searchItem());
334 subMenuItem.appendItem(methodName, WebInspector.DocumentationView.sh owDocumentationURL.bind(null, descriptors[i].url(), methodName));
335 }
310 }, 336 },
311 337
312 /** 338 /**
313 * @param {!WebInspector.CodeMirrorTextEditor} textEditor 339 * @param {!WebInspector.CodeMirrorTextEditor} textEditor
314 * @return {!Array.<!WebInspector.DocumentationURLProvider.ItemDescriptor>} 340 * @return {!Array.<!WebInspector.DocumentationURLProvider.ItemDescriptor>}
315 */ 341 */
316 _determineDescriptors: function(textEditor) 342 _determineDescriptors: function(textEditor)
317 { 343 {
318 var urlProvider = WebInspector.DocumentationURLProvider.instance(); 344 var urlProvider = WebInspector.DocumentationURLProvider.instance();
319 var textSelection = textEditor.selection().normalize(); 345 var textSelection = textEditor.selection().normalize();
(...skipping 17 matching lines...) Expand all
337 function computeDescriptors(column) 363 function computeDescriptors(column)
338 { 364 {
339 var token = textEditor.tokenAtTextPosition(textSelection.startLine, column); 365 var token = textEditor.tokenAtTextPosition(textSelection.startLine, column);
340 if (!token) 366 if (!token)
341 return []; 367 return [];
342 var tokenText = textEditor.line(textSelection.startLine).substring(t oken.startColumn, token.endColumn); 368 var tokenText = textEditor.line(textSelection.startLine).substring(t oken.startColumn, token.endColumn);
343 return urlProvider.itemDescriptors(tokenText); 369 return urlProvider.itemDescriptors(tokenText);
344 } 370 }
345 } 371 }
346 } 372 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698