| OLD | NEW |
| 1 Verifies JavaScript pretty-printing functionality. | 1 Verifies JavaScript pretty-printing functionality. |
| 2 | 2 |
| 3 | 3 |
| 4 Running: forInFormatting | 4 Running: forInFormatting |
| 5 ====== 8< ------ | 5 ====== 8< ------ |
| 6 for (var key in myMap) | 6 for (var key in myMap) |
| 7 print(key); | 7 print(key); |
| 8 | 8 |
| 9 ------ >8 ====== | 9 ------ >8 ====== |
| 10 Correct mapping for <myMap> | 10 Correct mapping for <myMap> |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 rebuild(), | 24 rebuild(), |
| 25 show(), | 25 show(), |
| 26 hasNew ? refresh() : noop(); | 26 hasNew ? refresh() : noop(); |
| 27 | 27 |
| 28 ------ >8 ====== | 28 ------ >8 ====== |
| 29 Correct mapping for <noop> | 29 Correct mapping for <noop> |
| 30 Correct mapping for <hasNew> | 30 Correct mapping for <hasNew> |
| 31 | 31 |
| 32 Running: complexScriptFormatting | 32 Running: complexScriptFormatting |
| 33 ====== 8< ------ | 33 ====== 8< ------ |
| 34 function formatted1() | 34 function formatted1() { |
| 35 { | |
| 36 var variable1 = 0; | 35 var variable1 = 0; |
| 37 } | 36 } |
| 38 | 37 function withComments() { |
| 39 function withComments() | |
| 40 { | |
| 41 // comment | 38 // comment |
| 42 return "functionWithComments"; | 39 return "functionWithComments"; |
| 43 } | 40 } |
| 44 | |
| 45 try { | 41 try { |
| 46 onmessage = function(event) { | 42 onmessage = function(event) { |
| 47 var source = event.data; | 43 var source = event.data; |
| 48 var formattedSource = beautify(source); | 44 var formattedSource = beautify(source); |
| 49 var mapping = buildMapping(source, formattedSource); | 45 var mapping = buildMapping(source, formattedSource); |
| 50 postMessage({ | 46 postMessage({ |
| 51 formattedSource: formattedSource, | 47 formattedSource: formattedSource, |
| 52 mapping: mapping | 48 mapping: mapping |
| 53 }) | 49 }) |
| 54 } | 50 } |
| 55 ; | 51 ; |
| 56 function beautify(source) { | 52 function beautify(source) { |
| 57 var ast = parse.parse(source); | 53 var ast = parse.parse(source); |
| 58 var beautifyOptions = | 54 var beautifyOptions = { |
| 59 { | |
| 60 indent_level: 4, | 55 indent_level: 4, |
| 61 indent_start: 0, | 56 indent_start: 0, |
| 62 quote_keys: false, | 57 quote_keys: false, |
| 63 space_colon: false | 58 space_colon: false |
| 64 }; | 59 }; |
| 65 return process.gen_code(ast, beautifyOptions) | 60 return process.gen_code(ast, beautifyOptions) |
| 66 } | 61 } |
| 67 function buildMapping(source, formattedSource) { | 62 function buildMapping(source, formattedSource) { |
| 68 var mapping = { | 63 var mapping = { |
| 69 original: [], | 64 original: [], |
| 70 formatted: [] | 65 formatted: [] |
| 71 }; | 66 }; |
| 72 var lastPosition = 0; | 67 var lastPosition = 0; |
| 73 var regexp = /(^|[^\\])\b((?=\D)[\$\.\w]+)\b/g; | 68 var regexp = /(^|[^\\])\b((?=\D)[\$\.\w]+)\b/g; |
| 74 while (true) | 69 while (true) { |
| 75 { | |
| 76 var match = regexp.exec(formattedSource); | 70 var match = regexp.exec(formattedSource); |
| 77 if (!match) | 71 if (!match) |
| 78 break; | 72 break; |
| 79 var position = source.indexOf(match[2], lastPosition); | 73 var position = source.indexOf(match[2], lastPosition); |
| 80 if (position === -1) | 74 if (position === -1) |
| 81 throw "No match found in original source for " + match[2]; | 75 throw "No match found in original source for " + match[2]; |
| 82 mapping.original.push(position); | 76 mapping.original.push(position); |
| 83 mapping.formatted.push(match.index + match[1].length); | 77 mapping.formatted.push(match.index + match[1].length); |
| 84 lastPosition = position + match[2].length | 78 lastPosition = position + match[2].length |
| 85 } | 79 } |
| 86 return mapping | 80 return mapping |
| 87 } | 81 } |
| 88 function require() { | 82 function require() { |
| 89 return parse | 83 return parse |
| 90 } | 84 } |
| 91 var exports = {}; | 85 var exports = {}; |
| 92 importScripts("UglifyJS/parse-js.js"); | 86 importScripts("UglifyJS/parse-js.js"); |
| 93 var parse = exports; | 87 var parse = exports; |
| 94 var exports = {}; | 88 var exports = {}; |
| 95 importScripts("UglifyJS/process.js"); | 89 importScripts("UglifyJS/process.js"); |
| 96 var process = exports; | 90 var process = exports; |
| 97 } catch (e) {} | 91 } catch (e) {} |
| 98 | 92 function formatted2() { |
| 99 function formatted2() | |
| 100 { | |
| 101 var variable2 = 0; | 93 var variable2 = 0; |
| 102 } | 94 } |
| 103 | 95 |
| 104 ------ >8 ====== | 96 ------ >8 ====== |
| 105 Correct mapping for <function> | 97 Correct mapping for <function> |
| 106 Correct mapping for <formatted1> | 98 Correct mapping for <formatted1> |
| 107 Correct mapping for <variable1> | 99 Correct mapping for <variable1> |
| 108 Correct mapping for < return "functionWithComments"> | 100 Correct mapping for < return "functionWithComments"> |
| 109 Correct mapping for <onmessage> | 101 Correct mapping for <onmessage> |
| 110 Correct mapping for <indent_start> | 102 Correct mapping for <indent_start> |
| (...skipping 10 matching lines...) Expand all Loading... |
| 121 pretty(); | 113 pretty(); |
| 122 } else if (a + b) | 114 } else if (a + b) |
| 123 e(); | 115 e(); |
| 124 reset(); | 116 reset(); |
| 125 } | 117 } |
| 126 | 118 |
| 127 ------ >8 ====== | 119 ------ >8 ====== |
| 128 Correct mapping for <pretty> | 120 Correct mapping for <pretty> |
| 129 Correct mapping for <reset> | 121 Correct mapping for <reset> |
| 130 | 122 |
| OLD | NEW |