[ Index ] |
PHP Cross Reference of MediaWiki-1.24.0 |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * @author Niklas Laxström, Tim Starling 4 * 5 * @copyright Copyright © 2010-2012, Niklas Laxström 6 * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later 7 * 8 * @file 9 * @since 1.20 10 */ 11 12 /** 13 * Evaluator helper class representing a range list. 14 */ 15 class CLDRPluralRuleEvaluatorRange { 16 /** 17 * The parts 18 * 19 * @var array 20 */ 21 public $parts = array(); 22 23 /** 24 * Initialize a new instance of CLDRPluralRuleEvaluatorRange 25 * 26 * @param int $start The start of the range 27 * @param int|bool $end The end of the range, or false if the range is not bounded. 28 */ 29 function __construct( $start, $end = false ) { 30 if ( $end === false ) { 31 $this->parts[] = $start; 32 } else { 33 $this->parts[] = array( $start, $end ); 34 } 35 } 36 37 /** 38 * Determine if the given number is inside the range. 39 * 40 * @param int $number The number to check 41 * @param bool $integerConstraint If true, also asserts the number is an integer; 42 * otherwise, number simply has to be inside the range. 43 * @return bool True if the number is inside the range; otherwise, false. 44 */ 45 function isNumberIn( $number, $integerConstraint = true ) { 46 foreach ( $this->parts as $part ) { 47 if ( is_array( $part ) ) { 48 if ( ( !$integerConstraint || floor( $number ) === (float)$number ) 49 && $number >= $part[0] && $number <= $part[1] 50 ) { 51 return true; 52 } 53 } else { 54 if ( $number == $part ) { 55 return true; 56 } 57 } 58 } 59 60 return false; 61 } 62 63 /** 64 * Readable alias for isNumberIn( $number, false ), and the implementation 65 * of the "within" operator. 66 * 67 * @param int $number The number to check 68 * @return bool True if the number is inside the range; otherwise, false. 69 */ 70 function isNumberWithin( $number ) { 71 return $this->isNumberIn( $number, false ); 72 } 73 74 /** 75 * Add another part to this range. 76 * 77 * @param CLDRPluralRuleEvaluatorRange|int $other The part to add, either 78 * a range object itself or a single number. 79 */ 80 function add( $other ) { 81 if ( $other instanceof self ) { 82 $this->parts = array_merge( $this->parts, $other->parts ); 83 } else { 84 $this->parts[] = $other; 85 } 86 } 87 88 /** 89 * Returns the string representation of the rule evaluator range. 90 * The purpose of this method is to help debugging. 91 * 92 * @return string The string representation of the rule evaluator range 93 */ 94 function __toString() { 95 $s = 'Range('; 96 foreach ( $this->parts as $i => $part ) { 97 if ( $i ) { 98 $s .= ', '; 99 } 100 if ( is_array( $part ) ) { 101 $s .= $part[0] . '..' . $part[1]; 102 } else { 103 $s .= $part; 104 } 105 } 106 $s .= ')'; 107 108 return $s; 109 } 110 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 14:03:12 2014 | Cross-referenced by PHPXref 0.7.1 |