Skip to content

Commit a62245a

Browse files
martinbuttnorberttech
authored andcommitted
Added PFIGS ordinals (#84)
* Added PFIGS ordinals * Typo
1 parent 150a794 commit a62245a

File tree

6 files changed

+289
-0
lines changed

6 files changed

+289
-0
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
namespace Coduo\PHPHumanizer\Resources\Ordinal;
4+
5+
use Coduo\PHPHumanizer\Number\Ordinal\StrategyInterface;
6+
7+
final class DeStrategy implements StrategyInterface
8+
{
9+
/**
10+
* {@inheritdoc}
11+
*/
12+
public function isPrefix()
13+
{
14+
return false;
15+
}
16+
17+
/** {@inheritdoc} */
18+
public function ordinalIndicator($number)
19+
{
20+
return '.';
21+
}
22+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
namespace Coduo\PHPHumanizer\Resources\Ordinal;
4+
5+
use Coduo\PHPHumanizer\Number\Ordinal\StrategyInterface;
6+
7+
final class EsStrategy implements StrategyInterface
8+
{
9+
/**
10+
* {@inheritdoc}
11+
*/
12+
public function isPrefix()
13+
{
14+
return false;
15+
}
16+
17+
/** {@inheritdoc} */
18+
public function ordinalIndicator($number)
19+
{
20+
return 'o';
21+
}
22+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php
2+
3+
namespace Coduo\PHPHumanizer\Resources\Ordinal;
4+
5+
use Coduo\PHPHumanizer\Number\Ordinal\StrategyInterface;
6+
7+
final class FrStrategy implements StrategyInterface
8+
{
9+
/**
10+
* {@inheritdoc}
11+
*/
12+
public function isPrefix()
13+
{
14+
return false;
15+
}
16+
17+
/** {@inheritdoc} */
18+
public function ordinalIndicator($number)
19+
{
20+
$absNumber = abs((integer) $number);
21+
22+
if ($absNumber == 1) {
23+
return 'er';
24+
} else {
25+
return 'e';
26+
}
27+
}
28+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
namespace Coduo\PHPHumanizer\Resources\Ordinal;
4+
5+
use Coduo\PHPHumanizer\Number\Ordinal\StrategyInterface;
6+
7+
final class ItStrategy implements StrategyInterface
8+
{
9+
/**
10+
* {@inheritdoc}
11+
*/
12+
public function isPrefix()
13+
{
14+
return false;
15+
}
16+
17+
/** {@inheritdoc} */
18+
public function ordinalIndicator($number)
19+
{
20+
return 'o';
21+
}
22+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
namespace Coduo\PHPHumanizer\Resources\Ordinal;
4+
5+
use Coduo\PHPHumanizer\Number\Ordinal\StrategyInterface;
6+
7+
final class PtStrategy implements StrategyInterface
8+
{
9+
/**
10+
* {@inheritdoc}
11+
*/
12+
public function isPrefix()
13+
{
14+
return false;
15+
}
16+
17+
/** {@inheritdoc} */
18+
public function ordinalIndicator($number)
19+
{
20+
return 'o';
21+
}
22+
}

tests/Coduo/PHPHumanizer/Tests/NumberHumanizerTest.php

Lines changed: 173 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,46 @@ public function test_return_ordinal_suffix_indonesian($expected, $number)
3737
$this->assertEquals($expected, NumberHumanizer::ordinal($number, 'id'));
3838
}
3939

40+
/**
41+
* @dataProvider ordinalSuffixPtEsItProvider
42+
* @param $expected
43+
* @param $number
44+
*/
45+
public function test_return_ordinal_suffix_spanish($expected, $number)
46+
{
47+
$this->assertEquals($expected, NumberHumanizer::ordinal($number, 'es'));
48+
}
49+
50+
/**
51+
* @dataProvider ordinalSuffixPtEsItProvider
52+
* @param $expected
53+
* @param $number
54+
*/
55+
public function test_return_ordinal_suffix_italian($expected, $number)
56+
{
57+
$this->assertEquals($expected, NumberHumanizer::ordinal($number, 'it'));
58+
}
59+
60+
/**
61+
* @dataProvider ordinalSuffixGermanProvider
62+
* @param $expected
63+
* @param $number
64+
*/
65+
public function test_return_ordinal_suffix_german($expected, $number)
66+
{
67+
$this->assertEquals($expected, NumberHumanizer::ordinal($number, 'de'));
68+
}
69+
70+
/**
71+
* @dataProvider ordinalSuffixFrenchProvider
72+
* @param $expected
73+
* @param $number
74+
*/
75+
public function test_return_ordinal_suffix_french($expected, $number)
76+
{
77+
$this->assertEquals($expected, NumberHumanizer::ordinal($number, 'fr'));
78+
}
79+
4080
/**
4181
* @dataProvider ordinalizeDataProvider
4282
* @depends test_return_ordinal_suffix
@@ -73,6 +113,56 @@ public function test_ordinalize_numbers_indonesian($expected, $number)
73113
$this->assertEquals($expected, NumberHumanizer::ordinalize($number, 'id'));
74114
}
75115

116+
/**
117+
* @dataProvider ordinalizeDataPtEsItProvider
118+
* @param $expected
119+
* @param $number
120+
*/
121+
public function test_ordinalize_numbers_portuguese($expected, $number)
122+
{
123+
$this->assertEquals($expected, NumberHumanizer::ordinalize($number, 'pt'));
124+
}
125+
126+
/**
127+
* @dataProvider ordinalizeDataPtEsItProvider
128+
* @param $expected
129+
* @param $number
130+
*/
131+
public function test_ordinalize_numbers_spanish($expected, $number)
132+
{
133+
$this->assertEquals($expected, NumberHumanizer::ordinalize($number, 'es'));
134+
}
135+
136+
/**
137+
* @dataProvider ordinalizeDataPtEsItProvider
138+
* @param $expected
139+
* @param $number
140+
*/
141+
public function test_ordinalize_numbers_italian($expected, $number)
142+
{
143+
$this->assertEquals($expected, NumberHumanizer::ordinalize($number, 'it'));
144+
}
145+
146+
/**
147+
* @dataProvider ordinalizeDataGermanProvider
148+
* @param $expected
149+
* @param $number
150+
*/
151+
public function test_ordinalize_numbers_german($expected, $number)
152+
{
153+
$this->assertEquals($expected, NumberHumanizer::ordinalize($number, 'de'));
154+
}
155+
156+
/**
157+
* @dataProvider ordinalizeDataFrenchProvider
158+
* @param $expected
159+
* @param $number
160+
*/
161+
public function test_ordinalize_numbers_french($expected, $number)
162+
{
163+
$this->assertEquals($expected, NumberHumanizer::ordinalize($number, 'fr'));
164+
}
165+
76166
/**
77167
* @dataProvider binarySuffixDataProvider
78168
*
@@ -270,6 +360,89 @@ public function ordinalizeDataIndonesianProvider()
270360
);
271361
}
272362

363+
/**
364+
* @return array
365+
*/
366+
public function ordinalizeDataPtEsItProvider()
367+
{
368+
return array(
369+
array('1o', 1),
370+
array('2o', 2),
371+
array('23o', 23),
372+
array('1002o', 1002),
373+
array('-111o', -111),
374+
);
375+
}
376+
377+
/**
378+
* @return array
379+
*/
380+
public function ordinalizeDataGermanProvider()
381+
{
382+
return array(
383+
array('1.', 1),
384+
array('2.', 2),
385+
array('23.', 23),
386+
array('1002.', 1002),
387+
array('-111.', -111),
388+
);
389+
}
390+
391+
/**
392+
* @return array
393+
*/
394+
public function ordinalizeDataFrenchProvider()
395+
{
396+
return array(
397+
array('1er', 1),
398+
array('2e', 2),
399+
array('23e', 23),
400+
array('1002e', 1002),
401+
array('-111e', -111),
402+
);
403+
}
404+
/**
405+
* @return array
406+
*/
407+
public function ordinalSuffixPtEsItProvider()
408+
{
409+
return array(
410+
array('o', 1),
411+
array('o', 2),
412+
array('o', 23),
413+
array('o', 1002),
414+
array('o', -111),
415+
);
416+
}
417+
418+
/**
419+
* @return array
420+
*/
421+
public function ordinalSuffixGermanProvider()
422+
{
423+
return array(
424+
array('.', 1),
425+
array('.', 2),
426+
array('.', 23),
427+
array('.', 1002),
428+
array('.', -111),
429+
);
430+
}
431+
432+
/**
433+
* @return array
434+
*/
435+
public function ordinalSuffixFrenchProvider()
436+
{
437+
return array(
438+
array('er', 1),
439+
array('e', 2),
440+
array('e', 23),
441+
array('e', 1002),
442+
array('e', -111),
443+
);
444+
}
445+
273446
/**
274447
* @return array
275448
*/

0 commit comments

Comments
 (0)