Skip to content

Commit

Permalink
feat: clamp fractional digits
Browse files Browse the repository at this point in the history
  • Loading branch information
kartva committed Aug 21, 2024
1 parent a572e81 commit af238e0
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 1 deletion.
11 changes: 11 additions & 0 deletions components/experimental/src/duration/format.rs
Original file line number Diff line number Diff line change
Expand Up @@ -780,4 +780,15 @@ mod tests {
Err(DurationFormatterOptionsError::PreviousFractional)
);
}

#[test]
fn test_fractional_digit_clamping() {
let options = DurationFormatterOptions {
fractional_digits: FractionalDigits::Fixed(10),
..Default::default()
};

let options = ValidatedDurationFormatterOptions::validate(options).unwrap();
assert_eq!(options.fractional_digits, FractionalDigits::Fixed(9));
}
}
3 changes: 2 additions & 1 deletion components/experimental/src/duration/options.rs
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,8 @@ pub enum FractionalDigits {
#[default]
ShowAll,
/// Use the given number of fractional digits.
/// Rounded to zero if necessary.
/// This value is clamped to the range 0..=9.
/// Fractional digits are rounded to zero if necessary.
Fixed(u8),
}

Expand Down
6 changes: 6 additions & 0 deletions components/experimental/src/duration/validated_options.rs
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,12 @@ impl ValidatedDurationFormatterOptions {
prev_style = *style;
}

// section 1.2.1
// 27. Set durationFormat.[[FractionalDigits]] to ? GetNumberOption(options, "fractionalDigits", 0, 9, undefined).
if let FractionalDigits::Fixed(i) = builder.fractional_digits {
builder.fractional_digits = FractionalDigits::Fixed(i.clamp(0, 9));
}

Ok(builder.try_into().unwrap())
}

Expand Down

0 comments on commit af238e0

Please sign in to comment.