faker_rust/default/
lorem.rs1use crate::base::sample;
4use crate::locale::fetch_locale;
5
6pub fn word() -> String {
8 fetch_locale("lorem.words", "en")
9 .map(|v| sample(&v))
10 .unwrap_or_else(|| "lorem".to_string())
11}
12
13pub fn words(num: usize) -> String {
15 let _config = crate::config::FakerConfig::current();
16 let words: Vec<String> = (0..num).map(|_| word()).collect();
17 words.join(" ")
18}
19
20pub fn sentence(word_count: Option<usize>) -> String {
22 let count = word_count.unwrap_or_else(|| {
23 let config = crate::config::FakerConfig::current();
24 config.rand_range(4, 8) as usize
25 });
26 let w = words(count);
27 let mut chars: Vec<char> = w.chars().collect();
28 if !chars.is_empty() {
29 chars[0] = chars[0].to_uppercase().next().unwrap_or(chars[0]);
30 }
31 let mut result: String = chars.into_iter().collect();
32 result.push('.');
33 result
34}
35
36pub fn sentences(sentence_count: Option<usize>, separator: Option<&str>) -> String {
38 let count = sentence_count.unwrap_or(3);
39 let sep = separator.unwrap_or(". ");
40 (0..count)
41 .map(|_| sentence(None))
42 .collect::<Vec<_>>()
43 .join(sep)
44}
45
46pub fn paragraph(sentence_count: Option<usize>) -> String {
48 let count = sentence_count.unwrap_or_else(|| {
49 let config = crate::config::FakerConfig::current();
50 config.rand_range(3, 6) as usize
51 });
52 sentences(Some(count), None)
53}
54
55pub fn paragraphs(paragraph_count: Option<usize>, separator: Option<&str>) -> String {
57 let count = paragraph_count.unwrap_or(3);
58 let sep = separator.unwrap_or("\n\n");
59 (0..count)
60 .map(|_| paragraph(None))
61 .collect::<Vec<_>>()
62 .join(sep)
63}
64
65pub fn character() -> String {
67 let config = crate::config::FakerConfig::current();
68 config.rand_char(&crate::base::ALPHANUMERIC).to_string()
69}
70
71pub fn characters(num: usize) -> String {
73 let config = crate::config::FakerConfig::current();
74 (0..num)
75 .map(|_| config.rand_char(&crate::base::ALPHANUMERIC))
76 .collect()
77}