Skip to main content

hangeul_id/
lib.rs

1//! # Hangeul ID
2//!
3//! `Hangeul ID` is a shorter unique id library using Hangeul
4//!
5use crate::hangeul::HangeulCharGroup;
6use crate::hangeul::ksx1001::ksx1001_letters;
7
8pub mod base;
9pub mod hangeul;
10
11/// Struct of HangeulId
12pub struct HangeulId {
13  pub char_group: HangeulCharGroup
14}
15
16impl HangeulId {
17  /// Return HangeulId struct with KSX1001
18  pub fn new() -> HangeulId {
19    HangeulId {
20      char_group: HangeulCharGroup::KSX1001
21    }
22  }
23
24  /// Return HangeulId struct with character group
25  ///
26  /// # Arguments
27  ///
28  /// * `char_group` - HangeulCharGroup value
29  ///
30  /// # Examples
31  /// ```
32  /// use hangeul_id::HangeulId;
33  /// use hangeul_id::hangeul::HangeulCharGroup;
34  ///
35  /// let hangeulid = HangeulId::new_with_char_group(HangeulCharGroup::KSX1001);
36  /// ```
37  pub fn new_with_char_group(char_group: HangeulCharGroup) -> HangeulId {
38    HangeulId {
39      char_group
40    }
41  }
42
43  /// Return Hangeul id from integer
44  ///
45  /// # Arguments
46  ///
47  /// * `integer` - usize value
48  ///
49  /// # Examples
50  ///
51  /// ```
52  /// use hangeul_id::HangeulId;
53  ///
54  /// let hangeulid = HangeulId::new();
55  /// let id = hangeulid.int_to_hangeul_id(5529549);
56  /// assert_eq!(id, "각간힝");
57  /// ```
58  pub fn int_to_hangeul_id(&self, integer: usize) -> String {
59    match self.char_group {
60      HangeulCharGroup::KSX1001 => ksx1001_letters(integer),
61    }
62  }
63}
64
65
66#[cfg(test)]
67mod tests {
68  use super::*;
69  #[test]
70  fn int_to_hangeul_id_default_test() {
71    let hangeulid = HangeulId::new();
72    let res = hangeulid.int_to_hangeul_id(5529549);
73    assert_eq!(res, "각간힝".to_string());
74  }
75
76  #[test]
77  fn int_to_hangeul_id_ksx1001_test() {
78    let hangeulid = HangeulId::new_with_char_group(HangeulCharGroup::KSX1001);
79    let res = hangeulid.int_to_hangeul_id(5529549);
80    assert_eq!(res, "각간힝".to_string());
81  }
82}