Code Duplication    Length = 44-57 lines in 5 locations

libs/src/locutus/src/php/array/end.js 1 location

@@ 1-57 (lines=57) @@
1
module.exports = function end (arr) {
2
  //  discuss at: https://locutus.io/php/end/
3
  // original by: Kevin van Zonneveld (https://kvz.io)
4
  // bugfixed by: Legaev Andrey
5
  //  revised by: J A R
6
  //  revised by: Brett Zamir (https://brett-zamir.me)
7
  // improved by: Kevin van Zonneveld (https://kvz.io)
8
  // improved by: Kevin van Zonneveld (https://kvz.io)
9
  //      note 1: Uses global: locutus to store the array pointer
10
  //   example 1: end({0: 'Kevin', 1: 'van', 2: 'Zonneveld'})
11
  //   returns 1: 'Zonneveld'
12
  //   example 2: end(['Kevin', 'van', 'Zonneveld'])
13
  //   returns 2: 'Zonneveld'
14
15
  var $global = (typeof window !== 'undefined' ? window : global)
16
  $global.$locutus = $global.$locutus || {}
17
  var $locutus = $global.$locutus
18
  $locutus.php = $locutus.php || {}
19
  $locutus.php.pointers = $locutus.php.pointers || []
20
  var pointers = $locutus.php.pointers
21
22
  var indexOf = function (value) {
23
    for (var i = 0, length = this.length; i < length; i++) {
24
      if (this[i] === value) {
25
        return i
26
      }
27
    }
28
    return -1
29
  }
30
31
  if (!pointers.indexOf) {
32
    pointers.indexOf = indexOf
33
  }
34
  if (pointers.indexOf(arr) === -1) {
35
    pointers.push(arr, 0)
36
  }
37
  var arrpos = pointers.indexOf(arr)
38
  if (Object.prototype.toString.call(arr) !== '[object Array]') {
39
    var ct = 0
40
    var val
41
    for (var k in arr) {
42
      ct++
43
      val = arr[k]
44
    }
45
    if (ct === 0) {
46
      // Empty
47
      return false
48
    }
49
    pointers[arrpos + 1] = ct - 1
50
    return val
51
  }
52
  if (arr.length === 0) {
53
    return false
54
  }
55
  pointers[arrpos + 1] = arr.length - 1
56
  return arr[pointers[arrpos + 1]]
57
}
58

libs/src/locutus/src/php/array/next.js 1 location

@@ 1-51 (lines=51) @@
1
module.exports = function next (arr) {
2
  //  discuss at: https://locutus.io/php/next/
3
  // original by: Brett Zamir (https://brett-zamir.me)
4
  //      note 1: Uses global: locutus to store the array pointer
5
  //   example 1: var $transport = ['foot', 'bike', 'car', 'plane']
6
  //   example 1: next($transport)
7
  //   example 1: next($transport)
8
  //   returns 1: 'car'
9
10
  var $global = (typeof window !== 'undefined' ? window : global)
11
  $global.$locutus = $global.$locutus || {}
12
  var $locutus = $global.$locutus
13
  $locutus.php = $locutus.php || {}
14
  $locutus.php.pointers = $locutus.php.pointers || []
15
  var pointers = $locutus.php.pointers
16
17
  var indexOf = function (value) {
18
    for (var i = 0, length = this.length; i < length; i++) {
19
      if (this[i] === value) {
20
        return i
21
      }
22
    }
23
    return -1
24
  }
25
26
  if (!pointers.indexOf) {
27
    pointers.indexOf = indexOf
28
  }
29
  if (pointers.indexOf(arr) === -1) {
30
    pointers.push(arr, 0)
31
  }
32
  var arrpos = pointers.indexOf(arr)
33
  var cursor = pointers[arrpos + 1]
34
  if (Object.prototype.toString.call(arr) !== '[object Array]') {
35
    var ct = 0
36
    for (var k in arr) {
37
      if (ct === cursor + 1) {
38
        pointers[arrpos + 1] += 1
39
        return arr[k]
40
      }
41
      ct++
42
    }
43
    // End
44
    return false
45
  }
46
  if (arr.length === 0 || cursor === (arr.length - 1)) {
47
    return false
48
  }
49
  pointers[arrpos + 1] += 1
50
  return arr[pointers[arrpos + 1]]
51
}
52

libs/src/locutus/src/php/array/reset.js 1 location

@@ 1-50 (lines=50) @@
1
module.exports = function reset (arr) {
2
  //  discuss at: https://locutus.io/php/reset/
3
  // original by: Kevin van Zonneveld (https://kvz.io)
4
  // bugfixed by: Legaev Andrey
5
  //  revised by: Brett Zamir (https://brett-zamir.me)
6
  //      note 1: Uses global: locutus to store the array pointer
7
  //   example 1: reset({0: 'Kevin', 1: 'van', 2: 'Zonneveld'})
8
  //   returns 1: 'Kevin'
9
10
  var $global = (typeof window !== 'undefined' ? window : global)
11
  $global.$locutus = $global.$locutus || {}
12
  var $locutus = $global.$locutus
13
  $locutus.php = $locutus.php || {}
14
  $locutus.php.pointers = $locutus.php.pointers || []
15
  var pointers = $locutus.php.pointers
16
17
  var indexOf = function (value) {
18
    for (var i = 0, length = this.length; i < length; i++) {
19
      if (this[i] === value) {
20
        return i
21
      }
22
    }
23
    return -1
24
  }
25
26
  if (!pointers.indexOf) {
27
    pointers.indexOf = indexOf
28
  }
29
  if (pointers.indexOf(arr) === -1) {
30
    pointers.push(arr, 0)
31
  }
32
  var arrpos = pointers.indexOf(arr)
33
  if (Object.prototype.toString.call(arr) !== '[object Array]') {
34
    for (var k in arr) {
35
      if (pointers.indexOf(arr) === -1) {
36
        pointers.push(arr, 0)
37
      } else {
38
        pointers[arrpos + 1] = 0
39
      }
40
      return arr[k]
41
    }
42
    // Empty
43
    return false
44
  }
45
  if (arr.length === 0) {
46
    return false
47
  }
48
  pointers[arrpos + 1] = 0
49
  return arr[pointers[arrpos + 1]]
50
}
51

libs/src/locutus/src/php/array/prev.js 1 location

@@ 1-49 (lines=49) @@
1
module.exports = function prev (arr) {
2
  //  discuss at: https://locutus.io/php/prev/
3
  // original by: Brett Zamir (https://brett-zamir.me)
4
  //      note 1: Uses global: locutus to store the array pointer
5
  //   example 1: var $transport = ['foot', 'bike', 'car', 'plane']
6
  //   example 1: prev($transport)
7
  //   returns 1: false
8
9
  var $global = (typeof window !== 'undefined' ? window : global)
10
  $global.$locutus = $global.$locutus || {}
11
  var $locutus = $global.$locutus
12
  $locutus.php = $locutus.php || {}
13
  $locutus.php.pointers = $locutus.php.pointers || []
14
  var pointers = $locutus.php.pointers
15
16
  var indexOf = function (value) {
17
    for (var i = 0, length = this.length; i < length; i++) {
18
      if (this[i] === value) {
19
        return i
20
      }
21
    }
22
    return -1
23
  }
24
25
  if (!pointers.indexOf) {
26
    pointers.indexOf = indexOf
27
  }
28
  var arrpos = pointers.indexOf(arr)
29
  var cursor = pointers[arrpos + 1]
30
  if (pointers.indexOf(arr) === -1 || cursor === 0) {
31
    return false
32
  }
33
  if (Object.prototype.toString.call(arr) !== '[object Array]') {
34
    var ct = 0
35
    for (var k in arr) {
36
      if (ct === cursor - 1) {
37
        pointers[arrpos + 1] -= 1
38
        return arr[k]
39
      }
40
      ct++
41
    }
42
    // Shouldn't reach here
43
  }
44
  if (arr.length === 0) {
45
    return false
46
  }
47
  pointers[arrpos + 1] -= 1
48
  return arr[pointers[arrpos + 1]]
49
}
50

libs/src/locutus/src/php/array/current.js 1 location

@@ 1-44 (lines=44) @@
1
module.exports = function current (arr) {
2
  //  discuss at: https://locutus.io/php/current/
3
  // original by: Brett Zamir (https://brett-zamir.me)
4
  //      note 1: Uses global: locutus to store the array pointer
5
  //   example 1: var $transport = ['foot', 'bike', 'car', 'plane']
6
  //   example 1: current($transport)
7
  //   returns 1: 'foot'
8
9
  var $global = (typeof window !== 'undefined' ? window : global)
10
  $global.$locutus = $global.$locutus || {}
11
  var $locutus = $global.$locutus
12
  $locutus.php = $locutus.php || {}
13
  $locutus.php.pointers = $locutus.php.pointers || []
14
  var pointers = $locutus.php.pointers
15
16
  var indexOf = function (value) {
17
    for (var i = 0, length = this.length; i < length; i++) {
18
      if (this[i] === value) {
19
        return i
20
      }
21
    }
22
    return -1
23
  }
24
  if (!pointers.indexOf) {
25
    pointers.indexOf = indexOf
26
  }
27
  if (pointers.indexOf(arr) === -1) {
28
    pointers.push(arr, 0)
29
  }
30
  var arrpos = pointers.indexOf(arr)
31
  var cursor = pointers[arrpos + 1]
32
  if (Object.prototype.toString.call(arr) === '[object Array]') {
33
    return arr[cursor] || false
34
  }
35
  var ct = 0
36
  for (var k in arr) {
37
    if (ct === cursor) {
38
      return arr[k]
39
    }
40
    ct++
41
  }
42
  // Empty
43
  return false
44
}
45