Skip to content

Commit

Permalink
add missing options for FluentNumber use_grouping
Browse files Browse the repository at this point in the history
  • Loading branch information
JasperDeSutter committed Dec 14, 2022
1 parent b9b4dbe commit 8f2dc43
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 25 deletions.
51 changes: 28 additions & 23 deletions fluent-bundle/src/types/number.rs
Original file line number Diff line number Diff line change
Expand Up @@ -66,35 +66,33 @@ impl From<&str> for FluentNumberCurrencyDisplayStyle {
}
}

#[derive(Debug, Clone, Hash, PartialEq, Eq)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum FluentNumberUseGrouping {
Auto,
False,
Always,
Min2,
}

impl Default for FluentNumberUseGrouping {
fn default() -> Self {
Self::Auto
}
}

#[derive(Default, Debug, Clone, Hash, PartialEq, Eq)]
pub struct FluentNumberOptions {
pub style: FluentNumberStyle,
pub currency: Option<String>,
pub currency_display: FluentNumberCurrencyDisplayStyle,
pub use_grouping: bool,
pub use_grouping: FluentNumberUseGrouping,
pub minimum_integer_digits: Option<usize>,
pub minimum_fraction_digits: Option<usize>,
pub maximum_fraction_digits: Option<usize>,
pub minimum_significant_digits: Option<usize>,
pub maximum_significant_digits: Option<usize>,
}

impl Default for FluentNumberOptions {
fn default() -> Self {
Self {
style: Default::default(),
currency: None,
currency_display: Default::default(),
use_grouping: true,
minimum_integer_digits: None,
minimum_fraction_digits: None,
maximum_fraction_digits: None,
minimum_significant_digits: None,
maximum_significant_digits: None,
}
}
}

impl FluentNumberOptions {
pub fn merge(&mut self, opts: &FluentArgs) {
for (key, value) in opts.iter() {
Expand All @@ -109,7 +107,12 @@ impl FluentNumberOptions {
self.currency_display = n.as_ref().into();
}
("useGrouping", FluentValue::String(n)) => {
self.use_grouping = n != "false";
self.use_grouping = match n.as_ref() {
"false" => FluentNumberUseGrouping::False,
"always" => FluentNumberUseGrouping::Always,
"min2" => FluentNumberUseGrouping::Min2,
_ => FluentNumberUseGrouping::Auto,
}
}
("minimumIntegerDigits", FluentValue::Number(n)) => {
self.minimum_integer_digits = Some(n.into());
Expand Down Expand Up @@ -266,9 +269,9 @@ from_num!(f32 f64);

pub type NumberFormatProvider = Box<dyn DataProvider<DecimalSymbolsV1Marker>>;

#[derive(Debug, Eq, PartialEq, Clone, Default, Hash)]
#[derive(Clone, Hash, PartialEq, Eq)]
struct FormatterOptions {
use_grouping: bool,
use_grouping: FluentNumberUseGrouping,
}

struct NumberFormatter(FixedDecimalFormatter);
Expand All @@ -293,8 +296,10 @@ impl Memoizable for NumberFormatter {

let mut options: FixedDecimalFormatterOptions = Default::default();
options.grouping_strategy = match args.0.use_grouping {
true => GroupingStrategy::Always,
false => GroupingStrategy::Auto,
FluentNumberUseGrouping::Auto => GroupingStrategy::Auto,
FluentNumberUseGrouping::False => GroupingStrategy::Never,
FluentNumberUseGrouping::Always => GroupingStrategy::Always,
FluentNumberUseGrouping::Min2 => GroupingStrategy::Min2,
};

let inner = FixedDecimalFormatter::try_new_unstable(
Expand Down
4 changes: 2 additions & 2 deletions fluent-bundle/tests/types_test.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use fluent_bundle::resolver::Scope;
use fluent_bundle::types::{
FluentNumber, FluentNumberCurrencyDisplayStyle, FluentNumberOptions, FluentNumberStyle,
FluentNumber, FluentNumberCurrencyDisplayStyle, FluentNumberOptions, FluentNumberStyle, FluentNumberUseGrouping,
};
use fluent_bundle::FluentArgs;
use fluent_bundle::FluentBundle;
Expand Down Expand Up @@ -120,7 +120,7 @@ fn fluent_number_style() {
assert_eq!(fno.style, FluentNumberStyle::Currency);
assert_eq!(fno.currency, Some("EUR".to_string()));
assert_eq!(fno.currency_display, FluentNumberCurrencyDisplayStyle::Code);
assert_eq!(fno.use_grouping, false);
assert_eq!(fno.use_grouping, FluentNumberUseGrouping::False);

let num = FluentNumber::new(0.2, FluentNumberOptions::default());
assert_eq!(num.as_string_basic(), "0.2");
Expand Down

0 comments on commit 8f2dc43

Please sign in to comment.