Skip to content

Commit 5ec6fa0

Browse files
Merge branch 'fix/issues-in-backlog' into fix/misc-issues - issues #125,#152,#170
2 parents 08a5f8b + d787fdb commit 5ec6fa0

File tree

18 files changed

+81
-81
lines changed

18 files changed

+81
-81
lines changed

grammar/de/src/rules.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2333,7 +2333,7 @@ pub fn rules_numbers(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
23332333
number_check!(|number: &NumberValue| !number.suffixed()),
23342334
|a, _, b| {
23352335
let power = b.value().value().to_string().chars().count();
2336-
let coeff = 10.0_f32.powf(-1.0 * power as f32);
2336+
let coeff = 10.0_f64.powf(-1.0 * power as f64);
23372337
Ok(FloatValue {
23382338
value: b.value().value() * coeff + a.value().value(),
23392339
..FloatValue::default()
@@ -2347,7 +2347,7 @@ pub fn rules_numbers(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
23472347
number_check!(|number: &NumberValue| !number.suffixed()),
23482348
|a, _, zeros, b| {
23492349
let power = zeros.group(0).split_whitespace().count() + b.value().value().to_string().chars().count();
2350-
let coeff = 10.0_f32.powf(-1.0 * power as f32);
2350+
let coeff = 10.0_f64.powf(-1.0 * power as f64);
23512351
Ok(FloatValue {
23522352
value: b.value().value() * coeff + a.value().value(),
23532353
..FloatValue::default()
@@ -2424,7 +2424,7 @@ pub fn rules_numbers(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
24242424
.into()
24252425
}
24262426
NumberValue::Float(float) => {
2427-
let product = float.value * (multiplier as f32);
2427+
let product = float.value * (multiplier as f64);
24282428
if product.floor() == product {
24292429
IntegerValue {
24302430
value: product as i64,

grammar/en/src/rules_datetime.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use std::f32;
1+
use std::f64;
22

33
use rustling::*;
44
use rustling_ontology_values::dimension::*;
@@ -502,7 +502,7 @@ pub fn rules_datetime(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
502502
b.rule_1("time-of-day (latent) (half)",
503503
number_check!(|number: &NumberValue| {
504504
let hour = (number.value() - 0.5) as u32;
505-
hour as f32 == (number.value() - 0.5) && hour >= 1 && hour <= 23
505+
hour as f64 == (number.value() - 0.5) && hour >= 1 && hour <= 23
506506
}),
507507
|number| {
508508
let hour = number.value().value() as u32;
@@ -512,7 +512,7 @@ pub fn rules_datetime(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
512512
b.rule_1("time-of-day (latent) (quarter)",
513513
number_check!(|number: &NumberValue| {
514514
let hour = (number.value() - 0.25) as u32;
515-
hour as f32 == (number.value() - 0.25) && hour >= 1 && hour <= 23
515+
hour as f64 == (number.value() - 0.25) && hour >= 1 && hour <= 23
516516
}),
517517
|number| {
518518
let hour = number.value().value() as u32;

grammar/en/src/rules_number.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use std::f32;
1+
use std::f64;
22

33
use rustling::*;
44
use rustling_ontology_values::dimension::*;
@@ -176,7 +176,7 @@ pub fn rules_numbers(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
176176
b.rule_1("decimal number",
177177
b.reg(r#"(\d*\.\d+)"#)?,
178178
|text_match| {
179-
let value: f32 = text_match.group(0).parse()?;
179+
let value: f64 = text_match.group(0).parse()?;
180180
Ok(FloatValue {
181181
value: value,
182182
..FloatValue::default()
@@ -185,20 +185,20 @@ pub fn rules_numbers(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
185185
b.rule_2("<integer> and a half",
186186
integer_check!(),
187187
b.reg(r#"and a half"#)?,
188-
|integer, _| FloatValue::new(integer.value().value as f32 + 0.5)
188+
|integer, _| FloatValue::new(integer.value().value as f64 + 0.5)
189189
);
190190
b.rule_2("<integer> and a quarter",
191191
integer_check!(),
192192
b.reg(r#"and a quarter"#)?,
193-
|integer, _| FloatValue::new(integer.value().value as f32 + 0.25)
193+
|integer, _| FloatValue::new(integer.value().value as f64 + 0.25)
194194
);
195195
b.rule_3("number dot number",
196196
number_check!(|number: &NumberValue| !number.prefixed()),
197197
b.reg(r#"dot|point"#)?,
198198
number_check!(|number: &NumberValue| !number.suffixed()),
199199
|a, _, b| {
200200
let power = b.value().value().to_string().chars().count();
201-
let coeff = 10.0_f32.powf(-1.0 * power as f32);
201+
let coeff = 10.0_f64.powf(-1.0 * power as f64);
202202
Ok(FloatValue {
203203
value: b.value().value() * coeff + a.value().value(),
204204
..FloatValue::default()
@@ -211,7 +211,7 @@ pub fn rules_numbers(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
211211
number_check!(|number: &NumberValue| !number.suffixed()),
212212
|a, _, zeros, b| {
213213
let power = zeros.group(0).split_whitespace().count() + b.value().value().to_string().chars().count();
214-
let coeff = 10.0_f32.powf(-1.0 * power as f32);
214+
let coeff = 10.0_f64.powf(-1.0 * power as f64);
215215
Ok(FloatValue {
216216
value: b.value().value() * coeff + a.value().value(),
217217
..FloatValue::default()
@@ -221,7 +221,7 @@ pub fn rules_numbers(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
221221
b.reg(r#"(\d+(,\d\d\d)+\.\d+)"#)?,
222222
|text_match| {
223223
let reformatted_string = text_match.group(1).replace(",", "");
224-
let value: f32 = reformatted_string.parse()?;
224+
let value: f64 = reformatted_string.parse()?;
225225
Ok(FloatValue {
226226
value: value,
227227
..FloatValue::default()
@@ -295,7 +295,7 @@ pub fn rules_numbers(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
295295
.into()
296296
}
297297
NumberValue::Float(float) => {
298-
let product = float.value * (multiplier as f32);
298+
let product = float.value * (multiplier as f64);
299299
if product.floor() == product {
300300
IntegerValue {
301301
value: product as i64,

grammar/es/src/rules_number.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use std::f32;
1+
use std::f64;
22
use rustling::*;
33
use rustling_ontology_values::dimension::*;
44
use rustling_ontology_values::helpers;
@@ -214,7 +214,7 @@ pub fn rules_numbers(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
214214
b.reg(r#"(\d*,\d+)"#)?,
215215
|text_match| {
216216
let reformatted_string = text_match.group(1).replace(",", ".");
217-
let value: f32 = reformatted_string.parse()?;
217+
let value: f64 = reformatted_string.parse()?;
218218
FloatValue::new(value)
219219
});
220220
b.rule_3("number dot number",
@@ -223,7 +223,7 @@ pub fn rules_numbers(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
223223
number_check!(|number: &NumberValue| !number.suffixed()),
224224
|a, _, b| {
225225
let power = b.value().value().to_string().chars().count();
226-
let coeff = 10.0_f32.powf(-1.0 * power as f32);
226+
let coeff = 10.0_f64.powf(-1.0 * power as f64);
227227
Ok(FloatValue {
228228
value: b.value().value() * coeff + a.value().value(),
229229
..FloatValue::default()
@@ -236,7 +236,7 @@ pub fn rules_numbers(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
236236
number_check!(|number: &NumberValue| !number.suffixed()),
237237
|a, _, zeros, b| {
238238
let power = zeros.group(0).split_whitespace().count() + b.value().value().to_string().chars().count();
239-
let coeff = 10.0_f32.powf(-1.0 * power as f32);
239+
let coeff = 10.0_f64.powf(-1.0 * power as f64);
240240
Ok(FloatValue {
241241
value: b.value().value() * coeff + a.value().value(),
242242
..FloatValue::default()
@@ -247,7 +247,7 @@ pub fn rules_numbers(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
247247
b.reg(r#"(\d+(\.\d\d\d)+,\d+)"#)?,
248248
|text_match| {
249249
let reformatted_string = text_match.group(1).replace(".", "").replace(",", ".");
250-
let value: f32 = reformatted_string.parse()?;
250+
let value: f64 = reformatted_string.parse()?;
251251
FloatValue::new(value)
252252
});
253253
b.rule_2("numbers prefix with -, negative or minus",
@@ -318,7 +318,7 @@ pub fn rules_numbers(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
318318
.into()
319319
}
320320
NumberValue::Float(float) => {
321-
let product = float.value * (multiplier as f32);
321+
let product = float.value * (multiplier as f64);
322322
if product.floor() == product {
323323
IntegerValue {
324324
value: product as i64,

grammar/fr/src/rules_amount.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ pub fn rules_finance(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
130130
money_unit!(),
131131
|a, _, b| {
132132
Ok(AmountOfMoneyValue {
133-
value: a.value().value as f32,
133+
value: a.value().value as f64,
134134
precision: Exact,
135135
unit: b.value().unit,
136136
..AmountOfMoneyValue::default()
@@ -142,7 +142,7 @@ pub fn rules_finance(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
142142
money_unit!(),
143143
|a, _, b| {
144144
Ok(AmountOfMoneyValue {
145-
value: a.value().value as f32,
145+
value: a.value().value as f64,
146146
precision: Approximate,
147147
unit: b.value().unit,
148148
..AmountOfMoneyValue::default()

grammar/fr/src/rules_number.rs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use std::f32;
1+
use std::f64;
22
use rustling::*;
33
use rustling_ontology_values::dimension::*;
44
use rustling_ontology_values::helpers;
@@ -191,39 +191,39 @@ pub fn rules_numbers(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
191191
b.reg(r#"(\d*,\d+)"#)?,
192192
|text_match| {
193193
let reformatted_string = text_match.group(1).replace(",", ".");
194-
let value: f32 = reformatted_string.parse()?;
194+
let value: f64 = reformatted_string.parse()?;
195195
FloatValue::new(value)
196196
});
197197
b.rule_3("number dot number",
198-
number_check!(|number: &NumberValue| !number.prefixed()),
198+
integer_check!(|integer: &IntegerValue| !integer.prefixed),
199199
b.reg(r#"virgule|point"#)?,
200-
number_check!(|number: &NumberValue| !number.suffixed()),
200+
integer_check!(|integer: &IntegerValue| !integer.suffixed),
201201
|a, _, b| {
202-
let power = b.value().value().to_string().chars().count();
203-
let coeff = 10.0_f32.powf(-1.0 * power as f32);
202+
let value: f64 = format!("{}.{}", a.value().value, b.value().value).parse()?;
204203
Ok(FloatValue {
205-
value: b.value().value() * coeff + a.value().value(),
204+
value,
206205
..FloatValue::default()
207206
})
208207
});
209208
b.rule_4("number dot zero ... number",
210-
number_check!(|number: &NumberValue| !number.prefixed()),
209+
integer_check!(|integer: &IntegerValue| !integer.prefixed),
211210
b.reg(r#"virgule|point"#)?,
212211
b.reg(r#"(?:(?:z[eé]ro )*(?:z[eé]ro))"#)?,
213-
number_check!(|number: &NumberValue| !number.suffixed()),
212+
integer_check!(|integer: &IntegerValue| !integer.suffixed),
214213
|a, _, zeros, b| {
215-
let power = zeros.group(0).split_whitespace().count() + b.value().value().to_string().chars().count();
216-
let coeff = 10.0_f32.powf(-1.0 * power as f32);
214+
let zeros_string = std::iter::repeat("0").take(zeros.group(0).split_whitespace().count()).collect::<String>();
215+
println!("{:?}", format!("{}.{}{}", a.value().value, zeros_string, b.value().value));
216+
let value: f64 = format!("{}.{}{}", a.value().value, zeros_string, b.value().value).parse()?;
217217
Ok(FloatValue {
218-
value: b.value().value() * coeff + a.value().value(),
218+
value,
219219
..FloatValue::default()
220220
})
221221
});
222222
b.rule_1_terminal("decimal with thousands separator",
223223
b.reg(r#"(\d+(\.\d\d\d)+,\d+)"#)?,
224224
|text_match| {
225225
let reformatted_string = text_match.group(1).replace(".", "").replace(",", ".");
226-
let value: f32 = reformatted_string.parse()?;
226+
let value: f64 = reformatted_string.parse()?;
227227
FloatValue::new(value)
228228
});
229229
b.rule_2("numbers prefix with -, negative or minus",
@@ -293,7 +293,7 @@ pub fn rules_numbers(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
293293
.into()
294294
}
295295
NumberValue::Float(float) => {
296-
let product = float.value * (multiplier as f32);
296+
let product = float.value * (multiplier as f64);
297297
if product.floor() == product {
298298
IntegerValue {
299299
value: product as i64,
@@ -470,7 +470,7 @@ pub fn rules_numbers(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
470470
integer_check_by_range!(0, 99),
471471
b.reg(r#"et demie?"#)?,
472472
|integer, _| {
473-
FloatValue::new(integer.value().value as f32 + 0.5)
473+
FloatValue::new(integer.value().value as f64 + 0.5)
474474
}
475475
);
476476
b.rule_1_terminal("70, 80, 90 (Belgium and Switzerland)",
@@ -697,7 +697,7 @@ pub fn rules_numbers(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
697697
integer_check_by_range!(0, 99),
698698
b.reg(r#"et demie?"#)?,
699699
|integer, _| {
700-
FloatValue::new(integer.value().value as f32 + 0.5)
700+
FloatValue::new(integer.value().value as f64 + 0.5)
701701
}
702702
);
703703
b.rule_1_terminal("70, 80, 90 (Belgium and Switzerland)",

grammar/it/src/rules_amount.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ pub fn rules_finance(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
147147
money_unit!(),
148148
|a, _, b| {
149149
Ok(AmountOfMoneyValue {
150-
value: a.value().value as f32,
150+
value: a.value().value as f64,
151151
precision: Exact,
152152
unit: b.value().unit,
153153
..AmountOfMoneyValue::default()

grammar/it/src/rules_number.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use std::f32;
1+
use std::f64;
22
use rustling::*;
33
use rustling_ontology_values::dimension::*;
44
use rustling_ontology_values::helpers;
@@ -193,7 +193,7 @@ pub fn rules_numbers(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
193193
b.reg(r#"(\d*,\d+)"#)?,
194194
|text_match| {
195195
let reformatted_string = text_match.group(1).replace(",", ".");
196-
let value: f32 = reformatted_string.parse()?;
196+
let value: f64 = reformatted_string.parse()?;
197197
FloatValue::new(value)
198198
});
199199
b.rule_3("number dot number",
@@ -202,7 +202,7 @@ pub fn rules_numbers(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
202202
number_check!(|number: &NumberValue| !number.suffixed()),
203203
|a, _, b| {
204204
let power = b.value().value().to_string().chars().count();
205-
let coeff = 10.0_f32.powf(-1.0 * power as f32);
205+
let coeff = 10.0_f64.powf(-1.0 * power as f64);
206206
Ok(FloatValue {
207207
value: b.value().value() * coeff + a.value().value(),
208208
..FloatValue::default()
@@ -216,7 +216,7 @@ pub fn rules_numbers(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
216216
number_check!(|number: &NumberValue| !number.suffixed()),
217217
|a, _, zeros, b| {
218218
let power = zeros.group(0).split_whitespace().count() + b.value().value().to_string().chars().count();
219-
let coeff = 10.0_f32.powf(-1.0 * power as f32);
219+
let coeff = 10.0_f64.powf(-1.0 * power as f64);
220220
Ok(FloatValue {
221221
value: b.value().value() * coeff + a.value().value(),
222222
..FloatValue::default()
@@ -227,7 +227,7 @@ pub fn rules_numbers(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
227227
b.reg(r#"(\d+(\.\d\d\d)+,\d+)"#)?,
228228
|text_match| {
229229
let reformatted_string = text_match.group(1).replace(".", "").replace(",", ".");
230-
let value: f32 = reformatted_string.parse()?;
230+
let value: f64 = reformatted_string.parse()?;
231231
FloatValue::new(value)
232232
});
233233
b.rule_2("numbers prefix with -, negative or minus",
@@ -297,7 +297,7 @@ pub fn rules_numbers(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
297297
.into()
298298
}
299299
NumberValue::Float(float) => {
300-
let product = float.value * (multiplier as f32);
300+
let product = float.value * (multiplier as f64);
301301
if product.floor() == product {
302302
IntegerValue {
303303
value: product as i64,

grammar/ja/src/rules.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ pub fn rules_numbers(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
236236
b.rule_1("float number",
237237
b.reg(r#"((?:\d|〇)*[、,,\.](?:\d|〇)+)"#)?, |text_match| {
238238
let res = text_match.group(1).replace_japanese_digit().replace_comma();
239-
let value: f32 = res.parse()?;
239+
let value: f64 = res.parse()?;
240240
Ok(FloatValue {
241241
value: value,
242242
..FloatValue::default()
@@ -248,7 +248,7 @@ pub fn rules_numbers(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
248248
number_check!(|number: &NumberValue| !number.suffixed()),
249249
|a, _, b| {
250250
let power = b.value().value().to_string().chars().count();
251-
let coeff = 10.0_f32.powf(-1.0 * power as f32);
251+
let coeff = 10.0_f64.powf(-1.0 * power as f64);
252252
Ok(FloatValue {
253253
value: b.value().value() * coeff + a.value().value(),
254254
..FloatValue::default()
@@ -279,7 +279,7 @@ pub fn rules_numbers(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
279279
decimal_part_string.chars()
280280
.filter_map(number_mapping)
281281
.collect::<String>());
282-
let decimal_part: f32 = decimal_part_string.parse()?;
282+
let decimal_part: f64 = decimal_part_string.parse()?;
283283
Ok(FloatValue {
284284
value: a.value().value() + decimal_part,
285285
..FloatValue::default()

grammar/ko/src/rules.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1745,7 +1745,7 @@ pub fn rules_numbers(b: &mut RuleSetBuilder<Dimension>) -> RustlingResult<()> {
17451745
.filter_map(number_mapping)
17461746
.collect::<String>()
17471747
);
1748-
FloatValue::new(a.value().value() + number_string.parse::<f32>()?)
1748+
FloatValue::new(a.value().value() + number_string.parse::<f64>()?)
17491749
},
17501750
);
17511751

0 commit comments

Comments
 (0)