OLD | NEW |
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, 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 /** | 5 /** |
6 * Generates JS helpers for dart:core. This used to be in a file "core.js". | 6 * Generates JS helpers for dart:core. This used to be in a file "core.js". |
7 * Having them in Dart code means we can easily control which are generated. | 7 * Having them in Dart code means we can easily control which are generated. |
8 */ | 8 */ |
9 // TODO(jmesserly): one idea to make this cleaner: put these as private "native" | 9 // TODO(jmesserly): one idea to make this cleaner: put these as private "native" |
10 // methods somewhere in a library that we import. This would be rather elegant | 10 // methods somewhere in a library that we import. This would be rather elegant |
(...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
401 // we have to fall through to the toString() based implementation | 401 // we have to fall through to the toString() based implementation |
402 // below in that case. | 402 // below in that case. |
403 if (name && typeof(name) == 'string' && name != 'Object') return name; | 403 if (name && typeof(name) == 'string' && name != 'Object') return name; |
404 } | 404 } |
405 var string = Object.prototype.toString.call(this); | 405 var string = Object.prototype.toString.call(this); |
406 var name = string.substring(8, string.length - 1); | 406 var name = string.substring(8, string.length - 1); |
407 if (name == 'Window') { | 407 if (name == 'Window') { |
408 name = 'DOMWindow'; | 408 name = 'DOMWindow'; |
409 } else if (name == 'Document') { | 409 } else if (name == 'Document') { |
410 name = 'HTMLDocument'; | 410 name = 'HTMLDocument'; |
| 411 } else if (name == 'XMLDocument') { |
| 412 name = 'Document'; |
411 } | 413 } |
412 return name; | 414 return name; |
413 });"""; | 415 });"""; |
414 | 416 |
415 /** Snippet for `$inherits`. */ | 417 /** Snippet for `$inherits`. */ |
416 final String _INHERITS_FUNCTION = @""" | 418 final String _INHERITS_FUNCTION = @""" |
417 /** Implements extends for Dart classes on JavaScript prototypes. */ | 419 /** Implements extends for Dart classes on JavaScript prototypes. */ |
418 function $inherits(child, parent) { | 420 function $inherits(child, parent) { |
419 if (child.prototype.__proto__) { | 421 if (child.prototype.__proto__) { |
420 child.prototype.__proto__ = parent.prototype; | 422 child.prototype.__proto__ = parent.prototype; |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
555 bound.$length = Math.max(0, funcLength - (argsLength - 1)); | 557 bound.$length = Math.max(0, funcLength - (argsLength - 1)); |
556 return bound; | 558 return bound; |
557 } else { | 559 } else { |
558 var bound = function() { | 560 var bound = function() { |
559 return func.apply(thisObj, arguments); | 561 return func.apply(thisObj, arguments); |
560 }; | 562 }; |
561 bound.$length = funcLength; | 563 bound.$length = funcLength; |
562 return bound; | 564 return bound; |
563 } | 565 } |
564 };"""; | 566 };"""; |
OLD | NEW |