Skip to content

Commit d5a5a3e

Browse files
authored
Merge pull request #111 from snipsco/En_De_fr_Ja_add_currencies
En de fr ja add currencies
2 parents 522116a + c86791a commit d5a5a3e

File tree

13 files changed

+459
-109
lines changed

13 files changed

+459
-109
lines changed

grammar/de/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ pub fn examples() -> Vec<::rustling::train::Example<rustling_ontology_values::Di
3232
training::examples_time(&mut v);
3333
training::examples_temperature(&mut v);
3434
training::examples_finance(&mut v);
35+
training::examples_percentage(&mut v);
3536
v
3637
}
3738

grammar/de/src/rules.rs

Lines changed: 66 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -27,49 +27,89 @@ pub fn rules_finance(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
2727
amount_of_money_check!(|money: &AmountOfMoneyValue| money.unit == Some("cent")),
2828
|a, b| helpers::compose_money(a.value(), b.value())
2929
);
30-
b.rule_1_terminal("cent",
31-
b.reg(r#"cents?|penn(?:y|ies)|cts?|c|¢"#)?,
32-
|_| Ok(MoneyUnitValue { unit: Some("cent") })
33-
);
34-
b.rule_1_terminal("₩",
35-
b.reg(r#"₩|krw|(?:s[üu]dkoreanische[rnms]? )?won"#)?,
36-
|_| Ok(MoneyUnitValue { unit: Some("KRW") })
37-
);
3830
b.rule_1_terminal("$",
39-
b.reg(r#"\$|dollars?"#)?,
31+
b.reg(r#"\$|dollar[sn]?"#)?,
4032
|_| Ok(MoneyUnitValue { unit: Some("$") })
4133
);
34+
b.rule_1_terminal("USD",
35+
b.reg(r#"us[d\$]|us[ -]dollar[sn]?"#)?,
36+
|_| Ok(MoneyUnitValue { unit: Some("USD") })
37+
);
38+
b.rule_1_terminal("AUD",
39+
b.reg(r#"au[d\$]|australische[rnm]? dollar[sn]?"#)?,
40+
|_| Ok(MoneyUnitValue { unit: Some("AUD") })
41+
);
42+
b.rule_1_terminal("CAD",
43+
b.reg(r#"cad|can\$|kanadische[rnm]? dollar[sn]?"#)?,
44+
|_| Ok(MoneyUnitValue { unit: Some("CAD") })
45+
);
46+
b.rule_1_terminal("HKD",
47+
b.reg(r#"hk[d\$]|hong ?kong dollar[sn]?"#)?,
48+
|_| Ok(MoneyUnitValue { unit: Some("HKD") })
49+
);
4250
b.rule_1_terminal("EUR",
43-
b.reg(r#"€|euro?"#)?,
51+
b.reg(r#"euros?|eur|€"#)?,
4452
|_| Ok(MoneyUnitValue { unit: Some("EUR") })
4553
);
4654
b.rule_1_terminal("£",
47-
b.reg(r#"£|pfunds?|pfd."#)?,
55+
b.reg(r#"£|pfund(?:e?s)?|pfd\."#)?,
4856
|_| Ok(MoneyUnitValue { unit: Some("£") })
4957
);
5058
b.rule_1_terminal("GBP",
51-
b.reg(r#"gbp|pfunds? sterling"#)?,
59+
b.reg(r#"gbp|britische[rnms]? pfund(?:e?s)?|pfund(?:e?s)? sterling"#)?,
5260
|_| Ok(MoneyUnitValue { unit: Some("GBP") })
5361
);
54-
b.rule_1_terminal("AUD",
55-
b.reg(r#"aud|australische[rnms]? dollar"#)?,
56-
|_| Ok(MoneyUnitValue { unit: Some("AUD") })
62+
b.rule_1_terminal("CHF",
63+
b.reg(r#"chf|(?:schweizer )?frankens?"#)?,
64+
|_| Ok(MoneyUnitValue { unit: Some("CHF") })
5765
);
58-
b.rule_1_terminal("USD",
59-
b.reg(r#"us[d\$]|us[ -]dollar"#)?,
60-
|_| Ok(MoneyUnitValue { unit: Some("USD") })
66+
b.rule_1_terminal("KR",
67+
b.reg(r#"kronen?|kr"#)?,
68+
|_| Ok(MoneyUnitValue { unit: Some("KR") })
69+
);
70+
b.rule_1_terminal("DKK",
71+
b.reg(r#"dkk|d[äa]nische[nr]? kronen?"#)?,
72+
|_| Ok(MoneyUnitValue { unit: Some("DKK") })
73+
);
74+
b.rule_1_terminal("NOK",
75+
b.reg(r#"nok|norwegische[nr]? kronen?"#)?,
76+
|_| Ok(MoneyUnitValue { unit: Some("NOK") })
6177
);
62-
b.rule_1_terminal("PTS",
63-
b.reg(r#"pta?s?"#)?,
64-
|_| Ok(MoneyUnitValue { unit: Some("PTS") })
78+
b.rule_1_terminal("SEK",
79+
b.reg(r#"sek|schwedische[nr]? kronen?"#)?,
80+
|_| Ok(MoneyUnitValue { unit: Some("SEK") })
81+
);
82+
b.rule_1_terminal("RUB",
83+
b.reg(r#"₽|(?:russische[rnm]? )?rubel[sn]?|rub"#)?,
84+
|_| Ok(MoneyUnitValue { unit: Some("RUB") })
6585
);
6686
b.rule_1_terminal("INR",
6787
b.reg(r#"inr|₹|(?:indische[rn]? )?rupien?"#)?,
6888
|_| Ok(MoneyUnitValue { unit: Some("INR") })
6989
);
70-
b.rule_1_terminal("CHF",
71-
b.reg(r#"chf|(?:schweizer )?frankens?"#)?,
72-
|_| Ok(MoneyUnitValue { unit: Some("CHF") })
90+
b.rule_1_terminal("JPY",
91+
b.reg(r#"jpy|yens?"#)?,
92+
|_| Ok(MoneyUnitValue { unit: Some("JPY") })
93+
);
94+
b.rule_1_terminal("CNY",
95+
b.reg(r#"cny|yuans?"#)?,
96+
|_| Ok(MoneyUnitValue { unit: Some("CNY") })
97+
);
98+
b.rule_1_terminal("¥",
99+
b.reg(r#"¥"#)?,
100+
|_| Ok(MoneyUnitValue { unit: Some("¥") })
101+
);
102+
b.rule_1_terminal("KRW",
103+
b.reg(r#"krw|₩|(?:s[üu]dkoreanische[rnm]? )?wons?"#)?,
104+
|_| Ok(MoneyUnitValue { unit: Some("KRW") })
105+
);
106+
b.rule_1_terminal("BTC",
107+
b.reg(r#"btc|฿|bitcoins?"#)?,
108+
|_| Ok(MoneyUnitValue { unit: Some("฿") })
109+
);
110+
b.rule_1_terminal("cent",
111+
b.reg(r#"cents?|penn(?:y|ies)|pence|cts?|c|¢"#)?,
112+
|_| Ok(MoneyUnitValue { unit: Some("cent") })
73113
);
74114
b.rule_2("<unit> <amount>",
75115
money_unit!(),
@@ -91,7 +131,7 @@ pub fn rules_finance(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
91131
})
92132
);
93133
b.rule_2("about <amount-of-money>",
94-
b.reg(r#"[cz]irka|nahezu|beinahe|ungef[äa]hr|fast|ca\.?"#)?,
134+
b.reg(r#"zirka|circa|nahezu|beinahe|ungef[äa]hr|fast|ca\.?"#)?,
95135
amount_of_money_check!(),
96136
|_, a| {
97137
Ok(AmountOfMoneyValue {
@@ -2078,7 +2118,7 @@ pub fn rules_temperature(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()
20782118
);
20792119
b.rule_2("<temp> fahrenheit",
20802120
temperature_check!(),
2081-
b.reg(r#"f(?:ahrenheit)?"#)?,
2121+
b.reg(r#"f(?:ah?rh?enh?eit)?"#)?,
20822122
|temp, _| Ok(TemperatureValue {
20832123
value: temp.value().value,
20842124
unit: Some("fahrenheit"),

grammar/de/src/training.rs

Lines changed: 58 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -3,52 +3,76 @@ use rustling_ontology_moment::*;
33
use rustling_ontology_values::dimension::*;
44
use rustling_ontology_values::ResolverContext;
55

6+
pub fn examples_percentage(v: &mut Vec<::rustling::train::Example<Dimension>>) {
7+
example!(v, check_percentage(15.0), "15%", "fünfzehn prozent", "15 vom Hundert");
8+
example!(v, check_percentage(3.2), "3,2 %", "drei komma zwei prozent", "3,2 vom Hundert");
9+
}
10+
611
pub fn examples_temperature(v: &mut Vec<::rustling::train::Example<Dimension>>) {
7-
example!(v, check_temperature(10.0, Some("degree")), "10 Grad");
8-
example!(v, check_temperature(-20.0, None), "minus 20");
9-
example!(v, check_temperature(-20.0, Some("degree")), "minus 20 Grad");
10-
example!(v, check_temperature(3.0, Some("degree")), "plus 3 Grad");
11-
example!(v, check_temperature(71.0, Some("degree")), "71 Grad");
12-
example!(v, check_temperature(-7.0, Some("degree")), "sieben Grad unter null");
13-
example!(v, check_temperature(-10.0, None), "10 unterm gefrierpunkt");
14-
example!(v, check_temperature(5.0, Some("degree")), "5 grad über null");
15-
example!(v, check_temperature(20.0, Some("degree")), "20 grad über null");
16-
example!(v, check_temperature(15.0, Some("celsius")), "15 C", "15°C");
17-
example!(v, check_temperature(23.0, Some("degree")), "plus 23 °", "23°");
18-
example!(v, check_temperature(-24.0, Some("degree")), "minus 24 grad");
19-
example!(v, check_temperature(-15.0, Some("degree")), "15 grad unter den gefrierpunkt");
20-
example!(v, check_temperature(-34.0, Some("degree")), "34 grad unterm gefrierpunkt");
21-
example!(v, check_temperature(13.0, Some("degree")), "plus 13 grad");
22-
example!(v, check_temperature(130.0, Some("kelvin")), "130 kelvin");
23-
example!(v, check_temperature(223.0, Some("kelvin")), "223 k");
24-
example!(v, check_temperature(78.0, Some("fahrenheit")), "78 fahrenheit", "78 f");
25-
example!(v, check_temperature(19.0, Some("degree")), "19 grad über null");
26-
example!(v, check_temperature(-18.0, Some("degree")), "Bei -18 Grad");
12+
example!(v, check_temperature(3.0, Some("degree")), "3°", "3 °", "plus 3°", "3 ° über null");
13+
example!(v, check_temperature(71.0, Some("degree")), "71 grad", "71 Grad", "plus 71 Grad", "71 Grad über null", "ein und siebzig Grad");
14+
example!(v, check_temperature(-7.0, Some("degree")), "-7°", "-7 Grad", "minus sieben grad", "7 Grad unter null", "sieben grad unter dem gefrierpunkt", "7 Grad unterm gefrierpunkt");
15+
example!(v, check_temperature(-92.0, None), "zwei und neunzig unter dem gefrierpunkt", "92 unterm gefrierpunkt");
16+
example!(v, check_temperature(-18.0, Some("degree")), "bei -18°", "Bei -18 Grad");
17+
example!(v, check_temperature(15.0, Some("celsius")), "15 celsius", "15 Grad Celsius", "fünfzehn Grad CELSIUS", "15 C", "15°C");
18+
example!(v, check_temperature(-115.0, Some("celsius")), "minus 115 celsius", "-115 Grad Celsius", "minus hundertfünfzehn Grad CELSIUS", "- 115 C", "-115°C");
19+
example!(v, check_temperature(78.0, Some("fahrenheit")), "78 fahrenheit", "78 Grad Fahrenheit", "achtundsiebzig Grad FAHRENHEIT", "78 f", "78°F");
20+
example!(v, check_temperature(-78.0, Some("fahrenheit")), "minus 78 fahrenheit", "-78 Grad Fahrenheit", "minus acht und siebzig Grad FAHRENHEIT", "- 78 f", "-78°F");
21+
example!(v, check_temperature(130.0, Some("kelvin")), "130 kelvin", "130 Grad Kelvin", "hundert dreißig Grad KELVIN", "130 k", "130°K");
2722
}
2823

2924
pub fn examples_finance(v: &mut Vec<::rustling::train::Example<Dimension>>) {
30-
example!(v, check_finance(30.0, Some("EUR"), Precision::Exact), "dreissig Euro");
3125
example!(v, check_finance(800.0, Some("$"), Precision::Exact), "800 dollar");
32-
example!(v, check_finance(800.0, Some("cent"), Precision::Exact), "achthundert cent");
33-
example!(v, check_finance(300.0, Some("cent"), Precision::Exact), "300 pennies");
34-
example!(v, check_finance(1.0, Some("cent"), Precision::Exact), "1 penny", "1 cent", "1 cts", "1 ct");
35-
example!(v, check_finance(4000.0, Some("INR"), Precision::Exact), "exakt viertausend rupien");
36-
example!(v, check_finance(980.0, Some("KRW"), Precision::Exact), "ganz genau neunhundertachtzig Won");
37-
example!(v, check_finance(478.0, Some("USD"), Precision::Exact), "478 US-Dollar");
38-
example!(v, check_finance(2134.0, Some("$"), Precision::Exact), "2134 $");
39-
example!(v, check_finance(9840.0, Some("£"), Precision::Exact), "9840 £");
40-
example!(v, check_finance(902.0, Some("£"), Precision::Approximate), "fast 902 Pfd.");
41-
example!(v, check_finance(849.0, Some("EUR"), Precision::Approximate), "ungefähr 849 €");
42-
example!(v, check_finance(4775.0, Some("EUR"), Precision::Exact), "haargenau 4775 Euro");
26+
example!(v, check_finance(2134.0, Some("$"), Precision::Exact), "2.134 $");
4327
example!(v, check_finance(90.0, Some("$"), Precision::Exact), "präzise neunzig $");
28+
example!(v, check_finance(478.0, Some("USD"), Precision::Exact), "478 US-Dollar");
29+
example!(v, check_finance(5.0, Some("USD"), Precision::Exact), "5 us$");
4430
example!(v, check_finance(674.0, Some("AUD"), Precision::Exact), "674 australische dollar");
4531
example!(v, check_finance(7438.0, Some("AUD"), Precision::Exact), "7438 AUD");
46-
example!(v, check_finance(6739.0, Some("EUR"), Precision::Approximate), "cirka 6739 €");
32+
example!(v, check_finance(8.0, Some("CAD"), Precision::Exact), "8Can$");
33+
example!(v, check_finance(5.0, Some("CAD"), Precision::Approximate), "ungefähr fünf Kanadische Dollars");
34+
example!(v, check_finance(1.0, Some("HKD"), Precision::Exact), "eines HKD");
35+
example!(v, check_finance(12.0, Some("HKD"), Precision::Exact), "12 hongkong dollarn");
36+
example!(v, check_finance(849.0, Some("EUR"), Precision::Approximate), "ungefähr 849 €");
37+
example!(v, check_finance(4775.0, Some("EUR"), Precision::Exact), "haargenau 4.775 Euro");
38+
example!(v, check_finance(30.0, Some("EUR"), Precision::Exact), "dreissig Euro");
39+
example!(v, check_finance(6739.0, Some("EUR"), Precision::Approximate), "circa 6739 €");
4740
example!(v, check_finance(839.0, Some("EUR"), Precision::Approximate), "ca 839 €");
4841
example!(v, check_finance(293.0, Some("EUR"), Precision::Approximate), "zirka 293 €");
49-
example!(v, check_finance(230983.0, Some("£"), Precision::Approximate), "beinahe 230983 £");
5042
example!(v, check_finance(150.0, Some("EUR"), Precision::Approximate), "nahezu hundertfünfzig Euro");
43+
example!(v, check_finance(9840.0, Some("£"), Precision::Exact), "9840£");
44+
example!(v, check_finance(902.0, Some("£"), Precision::Approximate), "fast 902 Pfd.");
45+
example!(v, check_finance(230983.0, Some("£"), Precision::Approximate), "beinahe 230983 £");
46+
example!(v, check_finance(1000.0, Some("GBP"), Precision::Exact), "1000 Pfund Sterling");
47+
example!(v, check_finance(2.0, Some("CHF"), Precision::Exact), "zwei CHF");
48+
example!(v, check_finance(5.0, Some("CHF"), Precision::Exact), "Fünf schweizer Franken");
49+
example!(v, check_finance(1.0, Some("KR"), Precision::Exact), "einer KRONE");
50+
example!(v, check_finance(17000.0, Some("DKK"), Precision::Exact), "siebzehn tausend dänischen kronen");
51+
example!(v, check_finance(2.2, Some("NOK"), Precision::Exact), "genau 2,2 NOK");
52+
example!(v, check_finance(5.0, Some("NOK"), Precision::Exact), "5 norwegischer Kronen");
53+
example!(v, check_finance(1.0, Some("SEK"), Precision::Exact), "einer schwedischen Krone");
54+
example!(v, check_finance(1000000.0, Some("RUB"), Precision::Approximate), "fast eine million ₽");
55+
example!(v, check_finance(1.0, Some("RUB"), Precision::Exact), "1 russischer Rubel");
5156
example!(v, check_finance(100.0, Some("INR"), Precision::Exact), "sehr genau hundert indische Rupien");
57+
example!(v, check_finance(23.0, Some("INR"), Precision::Exact), "drei und zwanzig ₹");
58+
example!(v, check_finance(4000.0, Some("INR"), Precision::Exact), "exakt viertausend rupien");
59+
example!(v, check_finance(270.0, Some("JPY"), Precision::Exact), "270 yen");
60+
example!(v, check_finance(1.0, Some("CNY"), Precision::Exact), "1 Yuan");
61+
example!(v, check_finance(0.0, Some("¥"), Precision::Exact), "0¥");
62+
example!(v, check_finance(980.0, Some("KRW"), Precision::Exact), "ganz genau neunhundertachtzig Won");
63+
example!(v, check_finance(10.5, Some("KRW"), Precision::Exact), "10,5 ₩");
64+
example!(v, check_finance(1.0, Some("฿"), Precision::Exact), "1 bitcoin");
65+
example!(v, check_finance(10.0, Some("฿"), Precision::Exact), "zehn Bitcoins");
66+
example!(v, check_finance(800.0, Some("cent"), Precision::Exact), "achthundert cent");
67+
example!(v, check_finance(300.0, Some("cent"), Precision::Exact), "300 pennies");
68+
example!(v, check_finance(1.0, Some("cent"), Precision::Exact), "1 penny", "1 cent", "1 cts", "1 ct");
69+
example!(v, check_finance(10.5, Some("EUR"), Precision::Exact), "10 € 50 ¢");
70+
example!(v, check_finance(7.8, Some("$"), Precision::Approximate), "fast 7$ 80c");
71+
example!(v, check_finance(102.1, Some("GBP"), Precision::Exact), "hundert zwei britische pfund zehn pennies");
72+
example!(v, check_finance(105.0, Some("$"), Precision::Exact), "einhundert fünf dollar");
73+
example!(v, check_finance(1047.0, Some("EUR"), Precision::Approximate), "ungefähr eintausend siebenundvierzig Euro");
74+
example!(v, check_finance(1001.0, Some("CHF"), Precision::Exact), "tausendeines Schweizer Frankens");
75+
example!(v, check_finance(500736.0, Some("EUR"), Precision::Exact), "fünfhunderttausendsiebenhundertsechsunddreißig euro");
5276
}
5377

5478
pub fn examples_time(v: &mut Vec<::rustling::train::Example<Dimension>>) {

grammar/en/src/lib.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ pub fn examples() -> Vec<::rustling::train::Example<rustling_ontology_values::Di
3131
training::examples_numbers(&mut v);
3232
training::examples_time(&mut v);
3333
training::examples_durations(&mut v);
34+
training::examples_temperature(&mut v);
35+
training::examples_finance(&mut v);
36+
training::examples_percentage(&mut v);
3437
v
3538
}
3639

0 commit comments

Comments
 (0)