client/lib/protoclass.js
author veltr
Sat, 25 Feb 2012 00:45:20 +0100
changeset 45 49c818cf7c3a
parent 8 d41e19b3b043
permissions -rwxr-xr-x
z-index
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
     1
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
     2
/* Based on Alex Arnell's inheritance implementation. */
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
     3
var Class = {
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
     4
  create: function() {
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
     5
    var parent = null, properties = $A(arguments);
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
     6
    if (Object.isFunction(properties[0]))
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
     7
      parent = properties.shift();
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
     8
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
     9
    function klass() {
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    10
      this.initialize.apply(this, arguments);
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    11
    }
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    12
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    13
    Object.extend(klass, Class.Methods);
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    14
    klass.superclass = parent;
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    15
    klass.subclasses = [];
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    16
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    17
    if (parent) {
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    18
      var subclass = function() { };
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    19
      subclass.prototype = parent.prototype;
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    20
      klass.prototype = new subclass;
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    21
      parent.subclasses.push(klass);
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    22
    }
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    23
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    24
    for (var i = 0; i < properties.length; i++)
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    25
      klass.addMethods(properties[i]);
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    26
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    27
    if (!klass.prototype.initialize)
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    28
      klass.prototype.initialize = this.emptyFunction;
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    29
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    30
    klass.prototype.constructor = klass;
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    31
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    32
    return klass;
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    33
  },
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    34
  emptyFunction:function () {},
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    35
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    36
};
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    37
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    38
Class.Methods = {
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    39
  addMethods: function(source) {
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    40
    var ancestor   = this.superclass && this.superclass.prototype;
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    41
    var properties = Object.keys(source);
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    42
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    43
    if (!Object.keys({ toString: true }).length)
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    44
      properties.push("toString", "valueOf");
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    45
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    46
    for (var i = 0, length = properties.length; i < length; i++) {
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    47
      var property = properties[i], value = source[property];
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    48
      if (ancestor && Object.isFunction(value) &&
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    49
          value.argumentNames().first() == "$super") {
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    50
        var method = value, value = Object.extend((function(m) {
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    51
          return function() { return ancestor[m].apply(this, arguments) };
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    52
        })(property).wrap(method), {
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    53
          valueOf:  function() { return method },
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    54
          toString: function() { return method.toString() }
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    55
        });
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    56
      }
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    57
      this.prototype[property] = value;
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    58
    }
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    59
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    60
    return this;
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    61
  }
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    62
};
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    63
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    64
Object.extend = function(destination, source) {
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    65
  for (var property in source)
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    66
    destination[property] = source[property];
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    67
  return destination;
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    68
};
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    69
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    70
Object.extend(Object, {
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    71
  inspect: function(object) {
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    72
    try {
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    73
      if (Object.isUndefined(object)) return 'undefined';
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    74
      if (object === null) return 'null';
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    75
      return object.inspect ? object.inspect() : String(object);
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    76
    } catch (e) {
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    77
      if (e instanceof RangeError) return '...';
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    78
      throw e;
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    79
    }
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    80
  },
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    81
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    82
  toJSON: function(object) {
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    83
    var type = typeof object;
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    84
    switch (type) {
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    85
      case 'undefined':
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    86
      case 'function':
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    87
      case 'unknown': return;
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    88
      case 'boolean': return object.toString();
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    89
    }
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    90
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    91
    if (object === null) return 'null';
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    92
    if (object.toJSON) return object.toJSON();
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    93
    if (Object.isElement(object)) return;
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    94
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    95
    var results = [];
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    96
    for (var property in object) {
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    97
      var value = Object.toJSON(object[property]);
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    98
      if (!Object.isUndefined(value))
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
    99
        results.push(property.toJSON() + ': ' + value);
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   100
    }
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   101
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   102
    return '{' + results.join(', ') + '}';
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   103
  },
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   104
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   105
  toQueryString: function(object) {
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   106
    return $H(object).toQueryString();
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   107
  },
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   108
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   109
  toHTML: function(object) {
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   110
    return object && object.toHTML ? object.toHTML() : String.interpret(object);
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   111
  },
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   112
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   113
  keys: function(object) {
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   114
    var keys = [];
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   115
    for (var property in object)
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   116
      keys.push(property);
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   117
    return keys;
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   118
  },
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   119
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   120
  values: function(object) {
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   121
    var values = [];
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   122
    for (var property in object)
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   123
      values.push(object[property]);
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   124
    return values;
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   125
  },
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   126
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   127
  clone: function(object) {
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   128
    return Object.extend({ }, object);
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   129
  },
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   130
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   131
  isElement: function(object) {
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   132
    return object && object.nodeType == 1;
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   133
  },
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   134
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   135
  isArray: function(object) {
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   136
    return object != null && typeof object == "object" &&
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   137
      'splice' in object && 'join' in object;
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   138
  },
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   139
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   140
  isHash: function(object) {
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   141
    return object instanceof Hash;
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   142
  },
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   143
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   144
  isFunction: function(object) {
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   145
    return typeof object == "function";
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   146
  },
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   147
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   148
  isString: function(object) {
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   149
    return typeof object == "string";
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   150
  },
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   151
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   152
  isNumber: function(object) {
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   153
    return typeof object == "number";
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   154
  },
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   155
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   156
  isUndefined: function(object) {
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   157
    return typeof object == "undefined";
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   158
  }
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   159
});
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   160
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   161
function $A(iterable) {
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   162
  if (!iterable) return [];
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   163
  if (iterable.toArray) return iterable.toArray();
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   164
  var length = iterable.length || 0, results = new Array(length);
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   165
  while (length--) results[length] = iterable[length];
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   166
  return results;
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   167
}
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   168
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   169
if (WebKit = navigator.userAgent.indexOf('AppleWebKit/') > -1) {
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   170
  $A = function(iterable) {
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   171
    if (!iterable) return [];
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   172
    if (!(Object.isFunction(iterable) && iterable == '[object NodeList]') &&
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   173
        iterable.toArray) return iterable.toArray();
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   174
    var length = iterable.length || 0, results = new Array(length);
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   175
    while (length--) results[length] = iterable[length];
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   176
    return results;
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   177
  };
d41e19b3b043 avec les fichiers c'est mieux en effet
Romain <romain.vuillemot@gmail.com>
parents:
diff changeset
   178
}