warlocks_cauldron/providers/
finance.rs1use super::dependencies::*;
2
3
4pub struct Finance<'a>(pub &'a Locale);
6
7impl<'a> Finance<'a> {
8 fn data(&self) -> &ParsedData { self.0.get_data() }
10
11 pub fn company(&self) -> &str {
15 get_random_element(self.data().finance.company.name.iter())
16 }
17
18 pub fn company_type(&self, abbr: bool) -> &str {
22 get_random_element(match abbr {
23 true => self.data().finance.company._type.abbr.iter(),
24 false => self.data().finance.company._type.title.iter(),
25 })
26 }
27
28 pub fn currency_iso_code(&self, allow_random: bool) -> &str {
35 match allow_random {
36 true => get_random_element(CURRENCY_ISO_CODES.iter()),
37 false => &self.data().finance.currency_code,
38 }
39 }
40
41 pub fn cryptocurrency_iso_code() -> &'static str {
45 get_random_element(CRYPTOCURRENCY_ISO_CODES.iter())
46 }
47
48 pub fn currency_symbol(&self) -> &str {
52 CURRENCY_SYMBOLS.get(self.data().lang_code.as_str()).unwrap_or_else(|| CURRENCY_SYMBOLS.get("default").unwrap())
53 }
54
55 pub fn cryptocurrency_symbol() -> &'static str {
59 get_random_element(CRYPTOCURRENCY_SYMBOLS.iter())
60 }
61
62
63 pub fn price(minimum: f32, maximum: f32) -> f32 {
71 uniform(minimum, maximum)
72 }
73
74 pub fn stock_ticker() -> &'static str {
78 get_random_element(STOCK_TICKERS.iter())
79 }
80
81 pub fn stock_name() -> &'static str {
85 get_random_element(STOCK_NAMES.iter())
86 }
87
88 pub fn stock_exchange() -> &'static str {
92 get_random_element(STOCK_EXCHANGES.iter())
93 }
94}