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

Side by Side Diff: lib/compiler/implementation/lib/math_patch.dart

Issue 10913271: Move parseInt parseDouble to int/double classes as a static method. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Make int.parse directly native. Created 8 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 | Annotate | Revision Log
« no previous file with comments | « lib/compiler/implementation/lib/js_helper.dart ('k') | lib/core/core.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 // Patch file for dart:math library. 5 // Patch file for dart:math library.
6 6
7 // Imports checkNum etc. used below. 7 // Imports checkNum etc. used below.
8 #import("js_helper.dart"); 8 #import("js_helper.dart");
9 9
10 // TODO(lrn): Consider not using the JS function directly, but instead calling
11 // helper functions in the "js_helper" library. Then we can stop enabling JS
12 // in all patched library files.
13
14 patch int parseInt(str) {
15 checkString(str);
16 if (!JS('bool',
17 @'/^\s*[+-]?(?:0[xX][abcdefABCDEF0-9]+|\d+)\s*$/.test(#)',
18 str)) {
19 throw new FormatException(str);
20 }
21 var trimmed = str.trim();
22 var base = 10;
23 if ((trimmed.length > 2 && (trimmed[1] == 'x' || trimmed[1] == 'X')) ||
24 (trimmed.length > 3 && (trimmed[2] == 'x' || trimmed[2] == 'X'))) {
25 base = 16;
26 }
27 var ret = JS('num', @'parseInt(#, #)', trimmed, base);
28 if (ret.isNaN()) throw new FormatException(str);
29 return ret;
30 }
31
32 patch double parseDouble(String str) {
33 checkString(str);
34 var ret = JS('num', @'parseFloat(#)', str);
35 if (ret == 0 && (str.startsWith("0x") || str.startsWith("0X"))) {
36 // TODO(ahe): This is unspecified, but tested by co19.
37 ret = JS('num', @'parseInt(#)', str);
38 }
39 if (ret.isNaN() && str != 'NaN' && str != '-NaN') {
40 throw new FormatException(str);
41 }
42 return ret;
43 }
44
45 patch double sqrt(num value) 10 patch double sqrt(num value)
46 => JS('double', @'Math.sqrt(#)', checkNum(value)); 11 => JS('double', @'Math.sqrt(#)', checkNum(value));
47 12
48 patch double sin(num value) 13 patch double sin(num value)
49 => JS('double', @'Math.sin(#)', checkNum(value)); 14 => JS('double', @'Math.sin(#)', checkNum(value));
50 15
51 patch double cos(num value) 16 patch double cos(num value)
52 => JS('double', @'Math.cos(#)', checkNum(value)); 17 => JS('double', @'Math.cos(#)', checkNum(value));
53 18
54 patch double tan(num value) 19 patch double tan(num value)
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 * Generates a positive random floating point value uniformly distributed on 61 * Generates a positive random floating point value uniformly distributed on
97 * the range from 0.0, inclusive, to 1.0, exclusive. 62 * the range from 0.0, inclusive, to 1.0, exclusive.
98 */ 63 */
99 double nextDouble() => JS("double", "Math.random()"); 64 double nextDouble() => JS("double", "Math.random()");
100 65
101 /** 66 /**
102 * Generates a random boolean value. 67 * Generates a random boolean value.
103 */ 68 */
104 bool nextBool() => JS("bool", "Math.random() < 0.5"); 69 bool nextBool() => JS("bool", "Math.random() < 0.5");
105 } 70 }
OLDNEW
« no previous file with comments | « lib/compiler/implementation/lib/js_helper.dart ('k') | lib/core/core.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698