Example #1
0
 function testBetween()
 {
     $this->assertTrue(\r8\num\between(8, 4, 10));
     $this->assertTrue(\r8\num\between(8, 4.5, 10.5));
     $this->assertTrue(\r8\num\between(8.5, 4, 10.5));
     $this->assertFalse(\r8\num\between(2, 4, 10));
     $this->assertFalse(\r8\num\between(2, 4, 10.5));
     $this->assertFalse(\r8\num\between(2.5, 4, 10));
     $this->assertFalse(\r8\num\between(12, 4, 10));
     $this->assertFalse(\r8\num\between(12.5, 4.5, 10));
     $this->assertFalse(\r8\num\between(12, 4.5, 10));
     $this->assertTrue(\r8\num\between(10, 4, 10));
     $this->assertTrue(\r8\num\between(4, 4, 10));
     $this->assertFalse(\r8\num\between(10, 4, 10, FALSE));
     $this->assertFalse(\r8\num\between(10, 4, 10, FALSE));
     $this->assertTrue(\r8\num\between(10.5, 4.5, 10.5));
     $this->assertTrue(\r8\num\between(4.5, 4.5, 10.5));
     $this->assertFalse(\r8\num\between(10.5, 4.5, 10.5, FALSE));
     $this->assertFalse(\r8\num\between(10.5, 4.5, 10.5, FALSE));
 }
Example #2
0
/**
 * calculates the offset based on the wrap flag
 *
 * This is generally used by array functions to wrap offsets
 *
 * @param Integer $length Starting from 1 (not 0), the length of the list being wrapped around
 * @param Integer $offset The offset being wrapped
 * @param Integer $wrapFlag How to handle offsets that fall outside of the length of the list.
 * @return Integer|Boolean Returns the wrapped offset. Returns FALSE on failure
 */
function offsetWrap($length, $offset, $wrapFlag)
{
    $length = (int) $length;
    if ($length <= 0) {
        throw new \r8\Exception\Index($offset, "Offset", "List is empty");
    }
    $offset = (int) \r8\reduce($offset);
    switch ($wrapFlag) {
        default:
            throw new \r8\Exception\Argument(2, "wrapFlag", "Invalid offset wrap flag");
        case \r8\num\OFFSET_NONE:
            if (!\r8\num\between($offset, 0 - $length, $length - 1)) {
                throw new \r8\Exception\Index($offset, "Offset", "Offset is out of bounds");
            } else {
                if ($offset >= 0) {
                    return $offset;
                } else {
                    return $length + $offset;
                }
            }
        case \r8\num\OFFSET_WRAP:
            return \r8\num\intWrap($offset, 0, $length - 1);
        case FALSE:
        case \r8\num\OFFSET_RESTRICT:
            $offset = \r8\num\limit($offset, 0 - $length, $length - 1);
            if ($offset < 0) {
                $offset = $length + $offset;
            }
            return $offset;
        case \r8\num\OFFSET_LIMIT:
            return \r8\num\limit($offset, 0, $length - 1);
    }
}
Example #3
0
 /**
  * Translate a number to a string with a suffix
  *
  * For example, 1 becomes "1st", 2 becomes "2nd"
  *
  * @param Integer $integer The number to convert to an ordinal
  * @return String Returns a string version of the given integer,
  *      with a suffix tacked on
  */
 public static function ordinal($integer)
 {
     $integer = (string) (int) $integer;
     if (\r8\num\between(abs(substr($integer, -2)), 11, 13, TRUE)) {
         return $integer . "th";
     }
     switch (substr($integer, -1)) {
         case "1":
             return $integer . "st";
         case "2":
             return $integer . "nd";
         case "3":
             return $integer . "rd";
         default:
             return $integer . "th";
     }
 }