Skip to content

Commit

Permalink
Merge branch 'master' into feature/german-support
Browse files Browse the repository at this point in the history
  • Loading branch information
Dorian Sarnowski committed Sep 6, 2015
2 parents a611655 + f0427db commit 6ae9885
Show file tree
Hide file tree
Showing 18 changed files with 253 additions and 26 deletions.
18 changes: 17 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,20 @@ First release. Added support for:

Added support for:

- Czech
- Czech

## 0.3.0 (2015-07-14)

Added support for:

- English

## 0.4.0 (2015-07-22)

Added support for:

- Russian

## 0.4.1 (2015-07-22)

Fixed currency symbol for Russian
12 changes: 7 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,10 @@ Features
Supported languages
-------------------

* English
* Polish
* Czech
* Russian

Usage
-----
Expand All @@ -34,24 +36,24 @@ repositories {
}
dependencies {
compile 'pl.allegro.finance:tradukisto:0.2.0'
compile 'pl.allegro.finance:tradukisto:0.4.1'
}
```

and use it:

```java
ValueConverter converter = ValueConverters.POLISH_INTEGER;
ValueConverter converter = ValueConverters.ENGLISH_INTEGER;
String valueAsWords = converter.asWords(1_234);

assertEquals("jeden tysiąc dwieście trzydzieści cztery", valueAsWords);
assertEquals("one thousand two hundred thirty-four", valueAsWords);
```

```java
MoneyConverter converter = MoneyConverters.POLISH_BANKING_MONEY_VALUE;
MoneyConverter converter = MoneyConverters.ENGLISH_BANKING_MONEY_VALUE;
String moneyAsWords = converter.asWords(new BigDecimal("1234.56"));

assertEquals("jeden tysiąc dwieście trzydzieści cztery PLN 56/100", moneyAsWords);
assertEquals("one thousand two hundred thirty-four £ 56/100", moneyAsWords);
```

Tradukisto can handle only values with no more than two digits after the decimal point. Otherwise
Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ jacocoTestReport {
}

task wrapper(type: Wrapper) {
gradleVersion = "2.4"
gradleVersion = "2.6"
}

dependencies {
Expand Down
Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
4 changes: 2 additions & 2 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#Sun May 31 09:50:25 CEST 2015
#Sat Sep 05 13:58:48 CEST 2015
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-2.6-bin.zip
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,11 @@
import static pl.allegro.finance.tradukisto.internal.Container.czechContainer;
import static pl.allegro.finance.tradukisto.internal.Container.englishContainer;
import static pl.allegro.finance.tradukisto.internal.Container.polishContainer;
import static pl.allegro.finance.tradukisto.internal.Container.russianContainer;

public enum MoneyConverters {

RUSSIAN_BANKING_MONEY_VALUE(russianContainer().getBankingMoneyConverter()),
POLISH_BANKING_MONEY_VALUE(polishContainer().getBankingMoneyConverter()),
CZECH_BANKING_MONEY_VALUE(czechContainer().getBankingMoneyConverter()),
ENGLISH_BANKING_MONEY_VALUE(englishContainer().getBankingMoneyConverter());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,12 @@
import static pl.allegro.finance.tradukisto.internal.Container.czechContainer;
import static pl.allegro.finance.tradukisto.internal.Container.englishContainer;
import static pl.allegro.finance.tradukisto.internal.Container.polishContainer;
import static pl.allegro.finance.tradukisto.internal.Container.russianContainer;

public enum ValueConverters {

POLISH_INTEGER(polishContainer().getNumbersConverter()),
RUSSIAN_INTEGER(russianContainer().getNumbersConverter()),
CZECH_INTEGER(czechContainer().getNumbersConverter()),
ENGLISH_INTEGER(englishContainer().getNumbersConverter());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,18 @@
import pl.allegro.finance.tradukisto.internal.languages.german.GermanIntegerToWordsConverter;
import pl.allegro.finance.tradukisto.internal.languages.german.GermanValues;
import pl.allegro.finance.tradukisto.internal.languages.polish.PolishValues;
import pl.allegro.finance.tradukisto.internal.languages.russian.RussianValues;

public class Container {

public static Container polishContainer() {
return new Container(new PolishValues());
}

public static Container russianContainer() {
return new Container(new RussianValues());
}

public static Container czechContainer() {
CzechValues czechValues = new CzechValues();
Container containerForBigNumbers = new Container(czechValues);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,25 @@
package pl.allegro.finance.tradukisto.internal.languages.polish;
package pl.allegro.finance.tradukisto.internal.languages;

import com.google.common.collect.Range;
import pl.allegro.finance.tradukisto.internal.languages.GenderType;
import pl.allegro.finance.tradukisto.internal.languages.PluralForms;

public class PolishPluralForms implements PluralForms {
public class SlavonicPluralForms implements PluralForms {

private final String singularForm;
private final String pluralForm;
private final String genitivePluralForm;

public PolishPluralForms(String singularForm, String pluralForm, String genitivePluralForm) {
private final GenderType genderType;

public SlavonicPluralForms(String singularForm, String pluralForm, String genitivePluralForm) {
this(singularForm, pluralForm, genitivePluralForm, GenderType.NON_APPLICABLE);
}

public SlavonicPluralForms(String singularForm, String pluralForm, String genitivePluralForm, GenderType genderType) {
this.singularForm = singularForm;
this.pluralForm = pluralForm;
this.genitivePluralForm = genitivePluralForm;

this.genderType = genderType;
}

@Override
Expand All @@ -32,6 +38,6 @@ private boolean usePluralForm(Integer value) {

@Override
public GenderType genderType() {
return GenderType.MASCULINE;
return genderType;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public List<PluralForms> pluralForms() {
new EnglishPluralForms(""),
new EnglishPluralForms("thousand"),
new EnglishPluralForms("million"),
new EnglishPluralForms("bilion"));
new EnglishPluralForms("billion"));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import pl.allegro.finance.tradukisto.internal.BaseValues;
import pl.allegro.finance.tradukisto.internal.languages.GenderForms;
import pl.allegro.finance.tradukisto.internal.languages.PluralForms;
import pl.allegro.finance.tradukisto.internal.languages.SlavonicPluralForms;

import java.util.Arrays;
import java.util.List;
Expand Down Expand Up @@ -58,10 +59,10 @@ public Map<Integer, GenderForms> baseNumbers() {
@Override
public List<PluralForms> pluralForms() {
return Arrays.<PluralForms>asList(
new PolishPluralForms("", "", ""),
new PolishPluralForms("tysiąc", "tysiące", "tysięcy"),
new PolishPluralForms("milion", "miliony", "milionów"),
new PolishPluralForms("miliard", "miliardy", "miliardów"));
new SlavonicPluralForms("", "", ""),
new SlavonicPluralForms("tysiąc", "tysiące", "tysięcy"),
new SlavonicPluralForms("milion", "miliony", "milionów"),
new SlavonicPluralForms("miliard", "miliardy", "miliardów"));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
package pl.allegro.finance.tradukisto.internal.languages.russian;

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 pl.allegro.finance.tradukisto.internal.languages.SlavonicPluralForms;

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 RussianValues implements BaseValues {

@Override
public Map<Integer, GenderForms> baseNumbers() {
return baseNumbersBuilder()
.put(0, "ноль")
.put(1, genderForms("один", "одна", "один"))
.put(2, genderForms("два", "две", "два"))
.put(3, "три")
.put(4, "четыре")
.put(5, "пять")
.put(6, "шесть")
.put(7, "семь")
.put(8, "восемь")
.put(9, "девять")
.put(10, "десять")
.put(11, "одиннадцать")
.put(12, "двенадцать")
.put(13, "тринадцать")
.put(14, "четырнадцать")
.put(15, "пятнадцать")
.put(16, "шестнадцать")
.put(17, "семнадцать")
.put(18, "восемнадцать")
.put(19, "девятнадцать")
.put(20, "двадцать")
.put(30, "тридцать")
.put(40, "сорок")
.put(50, "пятьдесят")
.put(60, "шестьдесят")
.put(70, "семьдесят")
.put(80, "восемьдесят")
.put(90, "девяносто")
.put(100, "сто")
.put(200, "двести")
.put(300, "триста")
.put(400, "четыреста")
.put(500, "пятьсот")
.put(600, "шестьсот")
.put(700, "семьсот")
.put(800, "восемьсот")
.put(900, "девятьсот")
.build();
}

@Override
public List<PluralForms> pluralForms() {
return Arrays.<PluralForms>asList(
new SlavonicPluralForms("", "", "", GenderType.MASCULINE),
new SlavonicPluralForms("тысяча", "тысячи", "тысяч", GenderType.FEMININE),
new SlavonicPluralForms("миллион", "миллиона", "миллионов", GenderType.MASCULINE),
new SlavonicPluralForms("миллиард", "миллиарда", "миллиардов", GenderType.MASCULINE));
}

@Override
public String currency() {
return "руб.";
}

@Override
public char twoDigitsNumberSeparator() {
return ' ';
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,15 @@ import spock.lang.Specification
import static pl.allegro.finance.tradukisto.MoneyConverters.CZECH_BANKING_MONEY_VALUE
import static pl.allegro.finance.tradukisto.MoneyConverters.ENGLISH_BANKING_MONEY_VALUE
import static pl.allegro.finance.tradukisto.MoneyConverters.POLISH_BANKING_MONEY_VALUE
import static pl.allegro.finance.tradukisto.MoneyConverters.RUSSIAN_BANKING_MONEY_VALUE

class MoneyConvertersTest extends Specification {

def "should convert money in Russian"() {
expect:
RUSSIAN_BANKING_MONEY_VALUE.asWords(1_234.56) == "одна тысяча двести тридцать четыре руб. 56/100"
}

def "should convert money in Polish"() {
expect:
POLISH_BANKING_MONEY_VALUE.asWords(1_234.56) == "jeden tysiąc dwieście trzydzieści cztery PLN 56/100"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,15 @@ import spock.lang.Specification
import static pl.allegro.finance.tradukisto.ValueConverters.CZECH_INTEGER
import static pl.allegro.finance.tradukisto.ValueConverters.ENGLISH_INTEGER
import static pl.allegro.finance.tradukisto.ValueConverters.POLISH_INTEGER
import static pl.allegro.finance.tradukisto.ValueConverters.RUSSIAN_INTEGER

class ValueConvertersTest extends Specification {

def "should convert numbers in Russian"() {
expect:
RUSSIAN_INTEGER.asWords(1_234) == "одна тысяча двести тридцать четыре"
}

def "should convert numbers in Polish"() {
expect:
POLISH_INTEGER.asWords(1_234) == "jeden tysiąc dwieście trzydzieści cztery"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package pl.allegro.finance.tradukisto.internal.languages.polish
package pl.allegro.finance.tradukisto.internal.languages

import spock.lang.Specification
import spock.lang.Unroll

class PolishPluralFormsTest extends Specification {
class SlavonicPluralFormsTest extends Specification {

def pluralForms = new PolishPluralForms("tysiąc", "tysiące", "tysięcy")
def pluralForms = new SlavonicPluralForms("tysiąc", "tysiące", "tysięcy", GenderType.NON_APPLICABLE)

def "should provide value for singular form"() {
expect:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,8 +98,8 @@ public class EnglishValuesTest extends Specification {
123_456_789 | "one hundred twenty-three million four hundred fifty-six thousand seven hundred eighty-nine"
322_089_890 | "three hundred twenty-two million eighty-nine thousand eight hundred ninety"

1_000_000_000 | "one bilion"
2_147_483_647 | "two bilion one hundred forty-seven million four hundred eighty-three thousand six hundred " +
1_000_000_000 | "one billion"
2_147_483_647 | "two billion one hundred forty-seven million four hundred eighty-three thousand six hundred " +
"forty-seven"
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
package pl.allegro.finance.tradukisto.internal.languages.polish

import spock.lang.Specification
import spock.lang.Unroll

Expand Down
Loading

0 comments on commit 6ae9885

Please sign in to comment.