Class \Prado\I18N\core\ChoiceFormat
ChoiceFormat converts between ranges of numeric values and string names for those ranges.
A ChoiceFormat splits the real number line -Inf to +Inf into two or more contiguous ranges. Each range is mapped to a string. ChoiceFormat is generally used in a MessageFormat for displaying grammatically correct plurals such as "There are 2 files."
$string = '[0] are no files |[1] is one file |(1,Inf] are {number} files';
$formatter = new MessageFormat(...); //init for a source
$translated = $formatter->format($string);
$choice = new ChoiceFormat();
echo $choice->format($translated, 0); //shows "are no files"
The message/string choices are separated by the pipe "|" followed by a set notation of the form
[1,2] -- accepts values between 1 and 2, inclusive.
(1,2) -- accepts values between 1 and 2, excluding 1 and 2.
{1,2,3,4} -- only values defined in the set are accepted.
[-Inf,0) -- accepts value greater or equal to negative infinity
and strictly less than 0
Any non-empty combinations of the delimiters of square and round brackets are acceptable.
Since version 3.1.2 the following set notation is also possible.
{n: n % 10 > 1 && n % 10 < 5} -- matches numbers like 2, 3, 4, 22, 23, 24
Where set is defined by the expression after n:. In particular, the expression accepts the following mathematical/logical operators to form a set of logical conditions on the value given by n:
< -- less than.
<= -- less than equals.
> -- greater than.
>= -- greater than equals.
== -- of equal value.
% -- modulo, e.g., 1 % 10 equals 1, 11 % 10 equals 1.
- -- minus, negative.
+ -- addition.
& -- conditional AND.
&& -- condition AND with short circuit.
| -- conditional OR.
|| -- conditional OR with short circuit.
! -- negation.
Additional round brackets can also be used to perform grouping.
Class hierarchy
Author: Xiang Wei Zhuo <weizhuo[at]gmail[dot]com>
public
|
|
public
|
format(string $string, float $number) : string
For the choice string, and a number, find and return the
string that satisfied the set within the choices.
|
public
|
|
public
|
parse(string $string) : array<string|int, mixed>
Parse a choice string and get a list of sets and a list of strings
corresponding to the sets.
|
protected
|
|