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)); }
/** * 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); } }
/** * 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"; } }