-
Notifications
You must be signed in to change notification settings - Fork 86
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
10 changed files
with
269 additions
and
9 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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,6 +9,6 @@ | |
# sonar | ||
sonar-project.properties | ||
|
||
# idea | ||
# intellij | ||
.idea | ||
*.iml |
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 |
---|---|---|
|
@@ -96,3 +96,7 @@ modifyPom { | |
} | ||
} | ||
} | ||
|
||
checkstyle { | ||
toolVersion = "5.9" | ||
} |
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
37 changes: 37 additions & 0 deletions
37
...ain/java/pl/allegro/finance/tradukisto/internal/languages/latvian/LatvianPluralForms.java
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,37 @@ | ||
package pl.allegro.finance.tradukisto.internal.languages.latvian; | ||
|
||
import pl.allegro.finance.tradukisto.internal.languages.GenderType; | ||
import pl.allegro.finance.tradukisto.internal.languages.PluralForms; | ||
|
||
public class LatvianPluralForms implements PluralForms { | ||
|
||
private final String singularForm; | ||
private final String pluralForm; | ||
|
||
private final GenderType genderType; | ||
|
||
public LatvianPluralForms(String singularForm, String pluralForm, GenderType genderType) { | ||
this.singularForm = singularForm; | ||
this.pluralForm = pluralForm; | ||
this.genderType = genderType; | ||
} | ||
|
||
@Override | ||
public String formFor(Integer value) { | ||
if (useSingular(value)) { | ||
return singularForm; | ||
} else { | ||
return pluralForm; | ||
} | ||
} | ||
|
||
private boolean useSingular(Integer value) { | ||
return value == 1 || (value % 100 != 11 && value % 10 == 1); | ||
} | ||
|
||
|
||
@Override | ||
public GenderType genderType() { | ||
return genderType; | ||
} | ||
} |
80 changes: 80 additions & 0 deletions
80
src/main/java/pl/allegro/finance/tradukisto/internal/languages/latvian/LatvianValues.java
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,80 @@ | ||
package pl.allegro.finance.tradukisto.internal.languages.latvian; | ||
|
||
import pl.allegro.finance.tradukisto.internal.BaseValues; | ||
import pl.allegro.finance.tradukisto.internal.languages.GenderForms; | ||
import pl.allegro.finance.tradukisto.internal.languages.GenderType; | ||
import pl.allegro.finance.tradukisto.internal.languages.PluralForms; | ||
|
||
import java.util.Arrays; | ||
import java.util.List; | ||
import java.util.Map; | ||
|
||
import static pl.allegro.finance.tradukisto.internal.languages.GenderForms.genderForms; | ||
import static pl.allegro.finance.tradukisto.internal.support.BaseNumbersBuilder.baseNumbersBuilder; | ||
|
||
public class LatvianValues implements BaseValues { | ||
|
||
|
||
|
||
@Override | ||
public Map<Integer, GenderForms> baseNumbers() { | ||
return baseNumbersBuilder() | ||
.put(0, "nulle") | ||
.put(1, genderForms("viens", "viena", "viens")) | ||
.put(2, "divi") | ||
.put(3, "trīs") | ||
.put(4, "četri") | ||
.put(5, "pieci") | ||
.put(6, "seši") | ||
.put(7, "septiņi") | ||
.put(8, "astoņi") | ||
.put(9, "deviņi") | ||
.put(10, "desmit") | ||
.put(11, "vienpadsmit") | ||
.put(12, "divpadsmit") | ||
.put(13, "trīspadsmit") | ||
.put(14, "četrpadsmit") | ||
.put(15, "piecpadsmit") | ||
.put(16, "sešpadsmit") | ||
.put(17, "septiņpadsmit") | ||
.put(18, "astoņpadsmit") | ||
.put(19, "deviņpadsmit") | ||
.put(20, "divdesmit") | ||
.put(30, "trīsdesmit") | ||
.put(40, "četrdesmit") | ||
.put(50, "piecdesmit") | ||
.put(60, "sešdesmit") | ||
.put(70, "septiņdesmit") | ||
.put(80, "astoņdesmit") | ||
.put(90, "deviņdesmit") | ||
.put(100, "viens simts") | ||
.put(200, "divi simti") | ||
.put(300, "trīs simti") | ||
.put(400, "četri simti") | ||
.put(500, "pieci simti") | ||
.put(600, "seši simti") | ||
.put(700, "septiņi simti") | ||
.put(800, "astoņi simti") | ||
.put(900, "deviņi simti") | ||
.build(); | ||
} | ||
|
||
@Override | ||
public List<PluralForms> pluralForms() { | ||
return Arrays.<PluralForms>asList( | ||
new LatvianPluralForms("", "", GenderType.MASCULINE), | ||
new LatvianPluralForms("tūkstotis", "tūkstoši", GenderType.MASCULINE), | ||
new LatvianPluralForms("miljons", "miljoni", GenderType.MASCULINE), | ||
new LatvianPluralForms("miljards", "miljardi", GenderType.MASCULINE)); | ||
} | ||
|
||
@Override | ||
public String currency() { | ||
return "EUR"; | ||
} | ||
|
||
@Override | ||
public char twoDigitsNumberSeparator() { | ||
return ' '; | ||
} | ||
} |
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
124 changes: 124 additions & 0 deletions
124
.../groovy/pl/allegro/finance/tradukisto/internal/languages/latvian/LatvianValuesTest.groovy
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,124 @@ | ||
package pl.allegro.finance.tradukisto.internal.languages.latvian | ||
|
||
import spock.lang.Specification | ||
import spock.lang.Unroll | ||
|
||
import static pl.allegro.finance.tradukisto.internal.Container.latvianContainer | ||
|
||
class LatvianValuesTest extends Specification { | ||
|
||
static converter = latvianContainer().getNumbersConverter() | ||
|
||
@Unroll | ||
def "should convert #value to '#words' in English"() { | ||
expect: | ||
converter.asWords(value) == words | ||
|
||
where: | ||
value | words | ||
0 | "nulle" | ||
1 | "viens" | ||
2 | "divi" | ||
3 | "trīs" | ||
4 | "četri" | ||
5 | "pieci" | ||
6 | "seši" | ||
7 | "septiņi" | ||
8 | "astoņi" | ||
9 | "deviņi" | ||
|
||
11 | "vienpadsmit" | ||
12 | "divpadsmit" | ||
13 | "trīspadsmit" | ||
14 | "četrpadsmit" | ||
15 | "piecpadsmit" | ||
16 | "sešpadsmit" | ||
17 | "septiņpadsmit" | ||
18 | "astoņpadsmit" | ||
19 | "deviņpadsmit" | ||
|
||
10 | "desmit" | ||
20 | "divdesmit" | ||
30 | "trīsdesmit" | ||
40 | "četrdesmit" | ||
50 | "piecdesmit" | ||
60 | "sešdesmit" | ||
70 | "septiņdesmit" | ||
80 | "astoņdesmit" | ||
90 | "deviņdesmit" | ||
|
||
21 | "divdesmit viens" | ||
37 | "trīsdesmit septiņi" | ||
43 | "četrdesmit trīs" | ||
58 | "piecdesmit astoņi" | ||
69 | "sešdesmit deviņi" | ||
76 | "septiņdesmit seši" | ||
82 | "astoņdesmit divi" | ||
95 | "deviņdesmit pieci" | ||
|
||
100 | "viens simts" | ||
200 | "divi simti" | ||
300 | "trīs simti" | ||
400 | "četri simti" | ||
500 | "pieci simti" | ||
600 | "seši simti" | ||
700 | "septiņi simti" | ||
800 | "astoņi simti" | ||
900 | "deviņi simti" | ||
|
||
111 | "viens simts vienpadsmit" | ||
272 | "divi simti septiņdesmit divi" | ||
387 | "trīs simti astoņdesmit septiņi" | ||
448 | "četri simti četrdesmit astoņi" | ||
569 | "pieci simti sešdesmit deviņi" | ||
625 | "seši simti divdesmit pieci" | ||
777 | "septiņi simti septiņdesmit septiņi" | ||
782 | "septiņi simti astoņdesmit divi" | ||
895 | "astoņi simti deviņdesmit pieci" | ||
999 | "deviņi simti deviņdesmit deviņi" | ||
|
||
1_000 | "viens tūkstotis" | ||
2_000 | "divi tūkstoši" | ||
3_000 | "trīs tūkstoši" | ||
4_000 | "četri tūkstoši" | ||
5_000 | "pieci tūkstoši" | ||
7_634 | "septiņi tūkstoši seši simti trīsdesmit četri" | ||
11_000 | "vienpadsmit tūkstoši" | ||
15_000 | "piecpadsmit tūkstoši" | ||
21_000 | "divdesmit viens tūkstotis" | ||
22_000 | "divdesmit divi tūkstoši" | ||
24_190 | "divdesmit četri tūkstoši viens simts deviņdesmit" | ||
653_000 | "seši simti piecdesmit trīs tūkstoši" | ||
211_000 | "divi simti vienpadsmit tūkstoši" | ||
123_454 | "viens simts divdesmit trīs tūkstoši četri simti piecdesmit četri" | ||
700_000 | "septiņi simti tūkstoši" | ||
751_221 | "septiņi simti piecdesmit viens tūkstotis divi simti divdesmit viens" | ||
999_999 | "deviņi simti deviņdesmit deviņi tūkstoši deviņi simti deviņdesmit deviņi" | ||
|
||
1_000_000 | "viens miljons" | ||
2_000_000 | "divi miljoni" | ||
5_000_000 | "pieci miljoni" | ||
7_211_000 | "septiņi miljoni divi simti vienpadsmit tūkstoši" | ||
23_437_219 | "divdesmit trīs miljoni četri simti trīsdesmit septiņi tūkstoši divi simti deviņpadsmit" | ||
100_000_000 | "viens simts miljoni" | ||
123_456_789 | "viens simts divdesmit trīs miljoni četri simti piecdesmit seši tūkstoši septiņi simti " + | ||
"astoņdesmit deviņi" | ||
322_089_890 | "trīs simti divdesmit divi miljoni astoņdesmit deviņi tūkstoši astoņi simti deviņdesmit" | ||
|
||
1_000_000_000 | "viens miljards" | ||
2_147_483_647 | "divi miljardi viens simts četrdesmit septiņi miljoni četri simti astoņdesmit trīs tūkstoši " + | ||
"seši simti četrdesmit septiņi" | ||
} | ||
|
||
def "should convert any value in range of 0-999 in Latvian"() { | ||
when: | ||
def words = converter.asWords(value) | ||
|
||
then: | ||
notThrown(IllegalArgumentException) | ||
words.length() > 0 | ||
|
||
where: | ||
value << (0..999) | ||
} | ||
} |