/services/sync/tps/extensions/mozmill/resource/stdlib/arrays.js

http://github.com/zpao/v8monkey · JavaScript · 93 lines · 51 code · 6 blank · 36 comment · 22 complexity · 9b556529c56c2044bce5a9810b2f1446 MD5 · raw file

  1. // ***** BEGIN LICENSE BLOCK *****// ***** BEGIN LICENSE BLOCK *****
  2. // Version: MPL 1.1/GPL 2.0/LGPL 2.1
  3. //
  4. // The contents of this file are subject to the Mozilla Public License Version
  5. // 1.1 (the "License"); you may not use this file except in compliance with
  6. // the License. You may obtain a copy of the License at
  7. // http://www.mozilla.org/MPL/
  8. //
  9. // Software distributed under the License is distributed on an "AS IS" basis,
  10. // WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  11. // for the specific language governing rights and limitations under the
  12. // License.
  13. //
  14. // The Original Code is Mozilla Corporation Code.
  15. //
  16. // The Initial Developer of the Original Code is
  17. // Mikeal Rogers.
  18. // Portions created by the Initial Developer are Copyright (C) 2008
  19. // the Initial Developer. All Rights Reserved.
  20. //
  21. // Contributor(s):
  22. // Mikeal Rogers <mikeal.rogers@gmail.com>
  23. //
  24. // Alternatively, the contents of this file may be used under the terms of
  25. // either the GNU General Public License Version 2 or later (the "GPL"), or
  26. // the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  27. // in which case the provisions of the GPL or the LGPL are applicable instead
  28. // of those above. If you wish to allow use of your version of this file only
  29. // under the terms of either the GPL or the LGPL, and not to allow others to
  30. // use your version of this file under the terms of the MPL, indicate your
  31. // decision by deleting the provisions above and replace them with the notice
  32. // and other provisions required by the GPL or the LGPL. If you do not delete
  33. // the provisions above, a recipient may use your version of this file under
  34. // the terms of any one of the MPL, the GPL or the LGPL.
  35. //
  36. // ***** END LICENSE BLOCK *****
  37. var EXPORTED_SYMBOLS = ['inArray', 'getSet', 'indexOf', 'rindexOf', 'compare'];
  38. function inArray (array, value) {
  39. for (i in array) {
  40. if (value == array[i]) {
  41. return true;
  42. }
  43. }
  44. return false;
  45. }
  46. function getSet (array) {
  47. var narray = [];
  48. for (i in array) {
  49. if ( !inArray(narray, array[i]) ) {
  50. narray.push(array[i]);
  51. }
  52. }
  53. return narray;
  54. }
  55. function indexOf (array, v, offset) {
  56. for (i in array) {
  57. if (offset == undefined || i >= offset) {
  58. if ( !isNaN(i) && array[i] == v) {
  59. return new Number(i);
  60. }
  61. }
  62. }
  63. return -1;
  64. }
  65. function rindexOf (array, v) {
  66. var l = array.length;
  67. for (i in array) {
  68. if (!isNaN(i)) {
  69. var i = new Number(i)
  70. }
  71. if (!isNaN(i) && array[l - i] == v) {
  72. return l - i;
  73. }
  74. }
  75. return -1;
  76. }
  77. function compare (array, carray) {
  78. if (array.length != carray.length) {
  79. return false;
  80. }
  81. for (i in array) {
  82. if (array[i] != carray[i]) {
  83. return false;
  84. }
  85. }
  86. return true;
  87. }