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

Side by Side Diff: Source/devtools/front_end/script_formatter_worker/JavaScriptFormatter.js

Issue 479033002: DevTools: improve javascript formatter to support "return" properties. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: address @vsevik comments Created 6 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « LayoutTests/inspector/sources/debugger/script-formatter-expected.txt ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 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 23 matching lines...) Expand all
34 * @param {!FormatterWorker.JavaScriptFormattedContentBuilder} builder 34 * @param {!FormatterWorker.JavaScriptFormattedContentBuilder} builder
35 */ 35 */
36 FormatterWorker.JavaScriptFormatter = function(tokenizer, builder) 36 FormatterWorker.JavaScriptFormatter = function(tokenizer, builder)
37 { 37 {
38 this._tokenizer = tokenizer; 38 this._tokenizer = tokenizer;
39 this._builder = builder; 39 this._builder = builder;
40 this._token = null; 40 this._token = null;
41 this._nextToken = this._tokenizer.next(); 41 this._nextToken = this._tokenizer.next();
42 } 42 }
43 43
44 FormatterWorker.JavaScriptFormatter._identifierRegex = /^[$A-Z_][0-9A-Z_$]*$/i;
45
44 FormatterWorker.JavaScriptFormatter.prototype = { 46 FormatterWorker.JavaScriptFormatter.prototype = {
45 format: function() 47 format: function()
46 { 48 {
47 this._parseSourceElements(FormatterWorker.JavaScriptTokens.EOS); 49 this._parseSourceElements(FormatterWorker.JavaScriptTokens.EOS);
48 this._consume(FormatterWorker.JavaScriptTokens.EOS); 50 this._consume(FormatterWorker.JavaScriptTokens.EOS);
49 }, 51 },
50 52
51 /** 53 /**
52 * @return {number} 54 * @return {number}
53 */ 55 */
(...skipping 30 matching lines...) Expand all
84 /** 86 /**
85 * @param {number} token 87 * @param {number} token
86 */ 88 */
87 _expect: function(token) 89 _expect: function(token)
88 { 90 {
89 var next = this._next(); 91 var next = this._next();
90 if (next !== token) 92 if (next !== token)
91 throw "Unexpected token: expected " + token + ", actual " + next; 93 throw "Unexpected token: expected " + token + ", actual " + next;
92 }, 94 },
93 95
96 _expectGeneralIdentifier: function()
97 {
98 var next = this._next();
99 if (next !== FormatterWorker.JavaScriptTokens.IDENTIFIER && !FormatterWo rker.JavaScriptFormatter._identifierRegex.test(this._token.value))
100 throw "Unexpected token: expected javascript identifier, actual " + this._token.value;
101 },
102
94 _expectSemicolon: function() 103 _expectSemicolon: function()
95 { 104 {
96 if (this._peek() === FormatterWorker.JavaScriptTokens.SEMICOLON) 105 if (this._peek() === FormatterWorker.JavaScriptTokens.SEMICOLON)
97 this._consume(FormatterWorker.JavaScriptTokens.SEMICOLON); 106 this._consume(FormatterWorker.JavaScriptTokens.SEMICOLON);
98 }, 107 },
99 108
100 /** 109 /**
101 * @return {boolean} 110 * @return {boolean}
102 */ 111 */
103 _hasLineTerminatorBeforeNext: function() 112 _hasLineTerminatorBeforeNext: function()
(...skipping 411 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 this._parseExpression(); 524 this._parseExpression();
516 this._expect(FormatterWorker.JavaScriptTokens.RBRACK); 525 this._expect(FormatterWorker.JavaScriptTokens.RBRACK);
517 break; 526 break;
518 527
519 case FormatterWorker.JavaScriptTokens.LPAREN: 528 case FormatterWorker.JavaScriptTokens.LPAREN:
520 this._parseArguments(); 529 this._parseArguments();
521 break; 530 break;
522 531
523 case FormatterWorker.JavaScriptTokens.PERIOD: 532 case FormatterWorker.JavaScriptTokens.PERIOD:
524 this._consume(FormatterWorker.JavaScriptTokens.PERIOD); 533 this._consume(FormatterWorker.JavaScriptTokens.PERIOD);
525 this._expect(FormatterWorker.JavaScriptTokens.IDENTIFIER); 534 this._expectGeneralIdentifier();
526 break; 535 break;
527 536
528 default: 537 default:
529 return; 538 return;
530 } 539 }
531 } 540 }
532 }, 541 },
533 542
534 _parseNewExpression: function() 543 _parseNewExpression: function()
535 { 544 {
(...skipping 20 matching lines...) Expand all
556 while (true) { 565 while (true) {
557 switch (this._peek()) { 566 switch (this._peek()) {
558 case FormatterWorker.JavaScriptTokens.LBRACK: 567 case FormatterWorker.JavaScriptTokens.LBRACK:
559 this._consume(FormatterWorker.JavaScriptTokens.LBRACK); 568 this._consume(FormatterWorker.JavaScriptTokens.LBRACK);
560 this._parseExpression(); 569 this._parseExpression();
561 this._expect(FormatterWorker.JavaScriptTokens.RBRACK); 570 this._expect(FormatterWorker.JavaScriptTokens.RBRACK);
562 break; 571 break;
563 572
564 case FormatterWorker.JavaScriptTokens.PERIOD: 573 case FormatterWorker.JavaScriptTokens.PERIOD:
565 this._consume(FormatterWorker.JavaScriptTokens.PERIOD); 574 this._consume(FormatterWorker.JavaScriptTokens.PERIOD);
566 this._expect(FormatterWorker.JavaScriptTokens.IDENTIFIER); 575 this._expectGeneralIdentifier();
567 break; 576 break;
568 577
569 case FormatterWorker.JavaScriptTokens.LPAREN: 578 case FormatterWorker.JavaScriptTokens.LPAREN:
570 this._parseArguments(); 579 this._parseArguments();
571 break; 580 break;
572 581
573 default: 582 default:
574 return; 583 return;
575 } 584 }
576 } 585 }
(...skipping 442 matching lines...) Expand 10 before | Expand all | Expand 10 after
1019 { 1028 {
1020 var token = FormatterWorker.JavaScriptTokensByType[uglifyToken.type]; 1029 var token = FormatterWorker.JavaScriptTokensByType[uglifyToken.type];
1021 if (typeof token === "number") 1030 if (typeof token === "number")
1022 return token; 1031 return token;
1023 token = FormatterWorker.JavaScriptTokensByValue[uglifyToken.value]; 1032 token = FormatterWorker.JavaScriptTokensByValue[uglifyToken.value];
1024 if (typeof token === "number") 1033 if (typeof token === "number")
1025 return token; 1034 return token;
1026 throw "Unknown token type " + uglifyToken.type; 1035 throw "Unknown token type " + uglifyToken.type;
1027 } 1036 }
1028 } 1037 }
OLDNEW
« no previous file with comments | « LayoutTests/inspector/sources/debugger/script-formatter-expected.txt ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698