faker_rust/default/
commerce.rs1use crate::base::sample;
4use crate::locale::fetch_locale;
5
6pub fn department() -> String {
8 fetch_locale("commerce.department", "en")
9 .map(|v| sample(&v))
10 .unwrap_or_else(|| "Electronics".to_string())
11}
12
13pub fn product_name() -> String {
15 let config = crate::config::FakerConfig::current();
16 let choice = config.rand_usize(3);
17
18 let material = sample(&[
19 "Small".to_string(),
20 "Medium".to_string(),
21 "Large".to_string(),
22 "Extra Large".to_string(),
23 "Slim".to_string(),
24 "Compact".to_string(),
25 ]);
26 let product = fetch_locale("commerce.product_name.product", "en")
27 .map(|v| sample(&v))
28 .unwrap_or_else(|| "Table".to_string());
29 let dept = department();
30
31 match choice {
32 0 => format!("{} {}", material, product),
33 1 => format!("{} {}", dept, product),
34 _ => format!("{}, {} and {}", material, product, dept),
35 }
36}
37
38pub fn brand() -> String {
40 fetch_locale("commerce.brand", "en")
41 .map(|v| sample(&v))
42 .unwrap_or_else(|| "Nike".to_string())
43}
44
45pub fn color() -> String {
47 sample(&[
48 "Red".to_string(),
49 "Blue".to_string(),
50 "Green".to_string(),
51 "Yellow".to_string(),
52 "Orange".to_string(),
53 "Purple".to_string(),
54 "Pink".to_string(),
55 "Brown".to_string(),
56 "Black".to_string(),
57 "White".to_string(),
58 ])
59}
60
61pub fn material() -> String {
63 fetch_locale("commerce.material", "en")
64 .map(|v| sample(&v))
65 .unwrap_or_else(|| "Plastic".to_string())
66}
67
68pub fn price(range_start: Option<f64>, range_end: Option<f64>) -> String {
70 let config = crate::config::FakerConfig::current();
71 let start = range_start.unwrap_or(0.0) * 100.0;
72 let end = range_end.unwrap_or(100.0) * 100.0;
73 let price = config.rand_f64() * (end - start) + start;
74 format!("{:.2}", price / 100.0)
75}
76
77pub fn promotion_code() -> String {
79 let config = crate::config::FakerConfig::current();
80 let prefix: String = (0..2)
81 .map(|_| config.rand_char(&crate::base::U_LETTERS))
82 .collect();
83 let suffix: String = (0..4)
84 .map(|_| config.rand_char(&crate::base::DIGITS))
85 .collect();
86 format!("{}{}", prefix, suffix)
87}
88
89pub fn vendor() -> String {
91 fetch_locale("commerce.vendor", "en")
92 .map(|v| sample(&v))
93 .unwrap_or_else(|| "Acme Corp".to_string())
94}