This repository has been archived by the owner on Jan 30, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 49
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge commit 'refs/pull/2936/head' of github.com:zendframework/zf2 in…
…to hotfix/ssl-case-sensitive
- Loading branch information
84 parents
913f51c
+
39924f3
+
c2a11e1
+
61b9322
+
413a38b
+
e51b2b8
+
20e328b
+
6437ec0
+
e9b8476
+
95e54a0
+
7ea3aed
+
df6a706
+
a82fc82
+
7c2a059
+
4fefb53
+
599ee3a
+
ea3fc65
+
f6c04c2
+
6591e3d
+
a4f76e3
+
33c7531
+
2d59782
+
8152327
+
e56ce9b
+
db9b18f
+
b88635a
+
a262823
+
b79aef6
+
c2284e4
+
70193eb
+
96acf77
+
9675426
+
5f02411
+
0dafea7
+
15dc674
+
4a2447d
+
e6eb7f3
+
e9499c5
+
272b15f
+
11c7758
+
6f0e918
+
5f4980a
+
ecca95a
+
88b5971
+
ecb8d13
+
9de1c08
+
44aad17
+
13269e9
+
654cdb6
+
dc708db
+
380ffba
+
ff67e7f
+
fe2e025
+
95f0efa
+
68cc4b3
+
bf13b96
+
8870381
+
56480f4
+
1fa90d7
+
5c7fe1f
+
abe9bc1
+
a33cacd
+
cdd7d9f
+
6a261b1
+
5e594c4
+
01c1241
+
30d1dd2
+
d4af079
+
c9aa9b4
+
10f47ca
+
ef20fa1
+
2187ae2
+
e7f3993
+
db93d37
+
aa57612
+
4af81d8
+
2f90998
+
3013404
+
69d83fe
+
f383ca9
+
1b26f48
+
b96f402
+
b36e36b
+
60fa081
commit be1ce44
Showing
6 changed files
with
222 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
<?php | ||
/** | ||
* Zend Framework (http://framework.zend.com/) | ||
* | ||
* @link http://github.com/zendframework/zf2 for the canonical source repository | ||
* @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) | ||
* @license http://framework.zend.com/license/new-bsd New BSD License | ||
* @package Zend_View | ||
*/ | ||
|
||
namespace Zend\I18n\View\Helper; | ||
|
||
use Zend\I18n\Exception; | ||
use Zend\I18n\Translator\Plural\Rule as PluralRule; | ||
use Zend\View\Helper\AbstractHelper; | ||
|
||
/** | ||
* Helper for rendering text based on a count number (like the I18n plural translation helper, but when translation | ||
* is not needed). | ||
* | ||
* Please note that we did not write any hard-coded rules for languages, as languages can evolve, we prefered to | ||
* let the developer define the rules himself, instead of potentially break applications if we change rules in the | ||
* future. | ||
* | ||
* However, you can find most of the up-to-date plural rules for most languages in those links: | ||
* - http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html | ||
* - https://developer.mozilla.org/en-US/docs/Localization_and_Plurals | ||
* | ||
* @category Zend | ||
* @package Zend_I18n | ||
* @subpackage View | ||
*/ | ||
class Plural extends AbstractHelper | ||
{ | ||
/** | ||
* Rule to use | ||
* | ||
* @var PluralRule | ||
*/ | ||
protected $rule; | ||
|
||
/** | ||
* Set the plural rule to use | ||
* | ||
* @param PluralRule|string $pluralRule | ||
* @return Plural | ||
*/ | ||
public function setPluralRule($pluralRule) | ||
{ | ||
if (!$pluralRule instanceof PluralRule) { | ||
$pluralRule = PluralRule::fromString($pluralRule); | ||
} | ||
|
||
$this->rule = $pluralRule; | ||
|
||
return $this; | ||
} | ||
|
||
/** | ||
* Given an array of strings, a number and, if wanted, an optional locale (the default one is used | ||
* otherwise), this picks the right string according to plural rules of the locale | ||
* | ||
* @param array|string $strings | ||
* @param int $number | ||
* @throws Exception\InvalidArgumentException | ||
* @return string | ||
*/ | ||
public function __invoke($strings, $number) | ||
{ | ||
if ($this->rule === null) { | ||
throw new Exception\InvalidArgumentException(sprintf( | ||
'No plural rule was set' | ||
)); | ||
} | ||
|
||
if (!is_array($strings)) { | ||
$strings = (array) $strings; | ||
} | ||
|
||
$pluralIndex = $this->rule->evaluate($number); | ||
|
||
return $strings[$pluralIndex]; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
<?php | ||
/** | ||
* Zend Framework (http://framework.zend.com/) | ||
* | ||
* @link http://github.com/zendframework/zf2 for the canonical source repository | ||
* @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) | ||
* @license http://framework.zend.com/license/new-bsd New BSD License | ||
* @package Zend_I18n | ||
*/ | ||
|
||
namespace ZendTest\I18n\View\Helper; | ||
|
||
use Zend\I18n\Translator\Plural\Rule as PluralRule; | ||
use Zend\I18n\View\Helper\Plural as PluralHelper; | ||
|
||
/** | ||
* @category Zend | ||
* @package Zend_View | ||
* @subpackage UnitTests | ||
* @group Zend_View | ||
* @group Zend_View_Helper | ||
*/ | ||
class PluralTest extends \PHPUnit_Framework_TestCase | ||
{ | ||
/** | ||
* @var PluralHelper | ||
*/ | ||
public $helper; | ||
|
||
/** | ||
* Sets up the fixture | ||
* | ||
* @return void | ||
*/ | ||
public function setUp() | ||
{ | ||
$this->helper = new PluralHelper(); | ||
} | ||
|
||
/** | ||
* @return array | ||
*/ | ||
public function pluralsTestProvider() | ||
{ | ||
return array( | ||
array('nplurals=1; plural=0', 'かさ', 0, 'かさ'), | ||
array('nplurals=1; plural=0', 'かさ', 10, 'かさ'), | ||
|
||
array('nplurals=2; plural=(n==1 ? 0 : 1)', array('umbrella', 'umbrellas'), 0, 'umbrellas'), | ||
array('nplurals=2; plural=(n==1 ? 0 : 1)', array('umbrella', 'umbrellas'), 1, 'umbrella'), | ||
array('nplurals=2; plural=(n==1 ? 0 : 1)', array('umbrella', 'umbrellas'), 2, 'umbrellas'), | ||
|
||
array('nplurals=2; plural=(n==0 || n==1 ? 0 : 1)', array('parapluie', 'parapluies'), 0, 'parapluie'), | ||
array('nplurals=2; plural=(n==0 || n==1 ? 0 : 1)', array('parapluie', 'parapluies'), 1, 'parapluie'), | ||
array('nplurals=2; plural=(n==0 || n==1 ? 0 : 1)', array('parapluie', 'parapluies'), 2, 'parapluies'), | ||
); | ||
} | ||
|
||
/** | ||
* @dataProvider pluralsTestProvider | ||
*/ | ||
public function testGetCorrectPlurals($pluralRule, $strings, $number, $expected) | ||
{ | ||
$this->helper->setPluralRule($pluralRule); | ||
$result = $this->helper->__invoke($strings, $number); | ||
$this->assertEquals($expected, $result); | ||
} | ||
} |