Completed
Pull Request — master (#13)
by Siwapun
04:10
created

ifElse()   A

Complexity

Conditions 2
Paths 1

Size

Total Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 14
rs 9.7998
c 0
b 0
f 0
cc 2
nc 1
nop 0
1
<?php
2
namespace Aerophant\Ramda;
3
4
function defaultTo()
5
{
6
  $defaultTo = function ($defaultValue, $value) {
7
    return $value ? $value : $defaultValue;
8
  };
9
  $arguments = func_get_args();
10
  $curried = curryN($defaultTo, 2);
11
  return call_user_func_array($curried, $arguments);
12
}
13
14
/**
15
 * (*… → Boolean) → (*… → *) → (*… → *) → (*… → *)
16
 * @param callable $condition
17
 * @param callable $onTrue
18
 * @param callable $onFalse
19
 * @return \Closure
20
 */
21
function ifElse()
22
{
23
  $ifElse = function (callable $condition, callable $onTrue, callable $onFalse) {
24
    return function () use ($condition, $onTrue, $onFalse) {
25
      $arguments = func_get_args();
26
      if (call_user_func_array($condition, $arguments)) {
27
        return call_user_func_array($onTrue, $arguments);
28
      }
29
      return call_user_func_array($onFalse, $arguments);
30
    };
31
  };
32
  $arguments = func_get_args();
33
  $curried = curryN($ifElse, 3);
34
  return call_user_func_array($curried, $arguments);
35
}
36