1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
// This file is part of ICU4X. For terms of use, please see the file // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/master/LICENSE ). //! Preferences is a bag of options to be associated with either `Style` or `Components` bag which provides //! information on user preferences that can affect the result of the formatting. //! //! # Unicode Extensions //! User preferences will often be stored as part of the `Locale` identified as `Unicode Extensions`, but //! for scenarios where the application stores information about user preferences they can be also provided via //! this bag (and if they are, they will take precedence over unicode extensions from the locale). //! //! # Examples //! //! ``` //! use icu_datetime::options::preferences; //! //! let prefs = preferences::Bag { //! hour_cycle: Some(preferences::HourCycle::H23) //! }; //! ``` use crate::fields; /// Bag of preferences stores user preferences which may affect the result of date and time formatting. /// /// # Examples /// /// ``` /// use icu_datetime::options::preferences; /// /// let prefs = preferences::Bag { /// hour_cycle: Some(preferences::HourCycle::H23) /// }; /// ``` #[derive(Debug)] pub struct Bag { pub hour_cycle: Option<HourCycle>, } /// User Preference for adjusting how hour component is displayed. #[derive(Debug, Clone, Copy, PartialEq)] pub enum HourCycle { /// Hour is formatted to be in range 1-24 /// /// # Examples /// /// ``` /// "24:12"; /// "8:23"; /// "19:00"; /// "23:21"; /// ``` H24, /// Hour is formatted to be in range 0-23 /// /// # Examples /// /// ``` /// "0:12"; /// "8:23"; /// "19:00"; /// "23:21"; /// ``` H23, /// Hour is formatted to be in range 1-12 /// /// # Examples /// /// ``` /// "1:12"; /// "8:23"; /// "7:00"; /// "11:21"; /// ``` H12, /// Hour is formatted to be in range 0-11 /// /// # Examples /// /// ``` /// "0:12"; /// "8:23"; /// "7:00"; /// "11:21"; /// ``` H11, } impl HourCycle { pub fn field(self) -> fields::Hour { match self { Self::H11 => fields::Hour::H11, Self::H12 => fields::Hour::H12, Self::H23 => fields::Hour::H23, Self::H24 => fields::Hour::H24, } } }