Passed
Pull Request — master (#25)
by Siwapun
04:37
created

sum()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 1
dl 0
loc 5
rs 10
c 0
b 0
f 0
ccs 3
cts 3
cp 1
crap 1
1
<?php
2
namespace Aerophant\Ramda;
3
4
/**
5
 * Number → Number → Number
6
 * @param integer|float|double $firstValue
7
 * @param integer|float|double $secondValue
8
 * @return integer|float|double|\Closure
9
 */
10
function add()
11
{
12
  $add = function ($firstValue, $secondValue) {
13 4
    return $firstValue + $secondValue;
14 4
  };
15 4
  $arguments = func_get_args();
16 4
  $curried = curryN($add, 2);
17 4
  return call_user_func_array($curried, $arguments);
18
}
19
20
/**
21
 * Number → Number → Number
22
 * @param integer|float|double $firstValue
23
 * @param integer|float|double $secondValue
24
 * @return integer|float|double|\Closure
25
 */
26
function divide()
27
{
28
  $divide = function ($firstValue, $secondValue) {
29 2
    return $firstValue / $secondValue;
30 2
  };
31 2
  $arguments = func_get_args();
32 2
  $curried = curryN($divide, 2);
33 2
  return call_user_func_array($curried, $arguments);
34
}
35
36
/**
37
 * @param double|float|integer $value
38
 * @return double|float|integer
39
 */
40
function inc()
41
{
42
  $inc = function ($value) {
43 1
    return $value + 1;
44 1
  };
45 1
  $arguments = func_get_args();
46 1
  $curried = curryN($inc, 1);
47 1
  return call_user_func_array($curried, $arguments);
48
}
49
50
/**
51
 * @param array $numbers array of numbers
52
 * @return float|integer|double|\Closure
53
 */
54
function mean()
55
{
56
  $mean = function (array $numbers) {
57 3
    $length = count($numbers);
58 3
    if ($length === 0) {
59 1
      throw new \InvalidArgumentException('$numbers passed to mean() must not be empty');
60
    }
61 2
    return array_sum($numbers)/$length;
62 3
  };
63 3
  $arguments = func_get_args();
64 3
  $curried = curryN($mean, 1);
65 3
  return call_user_func_array($curried, $arguments);
66
}
67
68
function median()
69
{
70
  $median = function (array $numbers) {
71 2
    $length = count($numbers);
72 2
    \sort($numbers, SORT_NUMERIC);
73 2
    if ($length % 2 == 0) {
74 1
      return mean([$numbers[$length/2], $numbers[$length/2 - 1]]);
75
    }
76 1
    return $numbers[($length-1)/2];
77 2
  };
78 2
  $arguments = func_get_args();
79 2
  $curried = curryN($median, 1);
80 2
  return call_user_func_array($curried, $arguments);
81
}
82
83
/**
84
 * @param integer|float|double $firstValue
85
 * @param integer|float|double $secondValue
86
 * @return integer|float|double|\Closure
87
 */
88
function modulo()
89
{
90
  $modulo = function ($firstValue, $secondValue) {
91 3
    return $firstValue % $secondValue;
92 3
  };
93 3
  $arguments = func_get_args();
94 3
  $curried = curryN($modulo, 2);
95 3
  return call_user_func_array($curried, $arguments);
96
}
97
98
99
/**
100
 * Number → Number → Number
101
 * @param integer|float|double $firstValue
102
 * @param integer|float|double $secondValue
103
 * @return integer|float|double|\Closure
104
 */
105
function multiply()
106
{
107
  $multiply = function ($firstValue, $secondValue) {
108 2
    return $firstValue * $secondValue;
109 2
  };
110 2
  $arguments = func_get_args();
111 2
  $curried = curryN($multiply, 2);
112 2
  return call_user_func_array($curried, $arguments);
113
}
114
115
/**
116
 * Number → Number → Number
117
 * @param integer|float|double $firstValue
118
 * @param integer|float|double $secondValue
119
 * @return integer|float|double|\Closure
120
 */
121
function subtract()
122
{
123
  $subtract = function ($firstValue, $secondValue) {
124 1
    return $firstValue - $secondValue;
125 1
  };
126 1
  $arguments = func_get_args();
127 1
  $curried = curryN($subtract, 2);
128 1
  return call_user_func_array($curried, $arguments);
129
}
130
131
/**
132
 * @param array $array
133
 * @return double|integer
134
 */
135
function sum(array $array = null)
136
{
137 1
  $arguments = func_get_args();
138 1
  $curried = curryN('array_sum', 1);
139 1
  return call_user_func_array($curried, $arguments);
140
}
141