chinese_rand/gregorian/
mod.rs

1//! Module supporting the random generation of date/time objects
2//! according to the Gregorian calendar.
3//!
4//! **Required feature**: `gregorian`.
5mod date;
6mod time;
7
8pub use date::*;
9pub use time::*;
10
11use crate::{ChineseFormatGenerator, RawGenerator};
12
13/// Random generator dedicated to the date/time concepts
14/// in the Gregorian calendar.
15///
16/// It is worth noting that it must be created via the
17/// [ChineseFormatGenerator::gregorian] method;
18/// furthermore, it actually just keeps a reference to
19/// the [RawGenerator] owned by [ChineseFormatGenerator].
20pub struct GregorianGenerator<'a> {
21    raw_generator: &'a dyn RawGenerator,
22}
23
24impl ChineseFormatGenerator {
25    /// Creates a reusable [GregorianGenerator] instance, for generating
26    /// date/time values according to the Gregorian calendar.
27    ///
28    /// ```
29    /// use chinese_rand::{*, gregorian::*};
30    /// use chinese_format::{ChineseFormat, Variant, gregorian::*};
31    ///
32    /// let raw_generator = FastRandGenerator::new();
33    /// let generator = ChineseFormatGenerator::new(raw_generator);
34    /// let gregorian = generator.gregorian();
35    ///
36    /// fastrand::seed(90);
37    /// let date = gregorian.date(DateParams {
38    ///     pattern: DatePattern::YearMonthDayWeekDay,
39    ///     year_range: Some(2000..=2019),
40    ///     formal: true,
41    ///     week_format: Some(WeekFormat::Zhou)
42    /// });
43    /// assert_eq!(
44    ///     date.to_chinese(Variant::Simplified),
45    ///     "二零一三年五月二十三号周一"
46    /// );
47    ///
48    /// fastrand::seed(90);
49    /// let time = gregorian.linear_time(LinearTimeParams {
50    ///     day_part: true,
51    ///     include_second: true
52    /// });
53    /// assert_eq!(time.to_chinese(Variant::Simplified), "下午四点二十分四十三秒");
54    /// ```
55    ///
56    /// **Required feature**: `gregorian`.
57    pub fn gregorian(&self) -> GregorianGenerator {
58        GregorianGenerator {
59            raw_generator: self.raw_generator.as_ref(),
60        }
61    }
62}