Skip to main content

faker_rust/default/
lorem.rs

1//! Lorem Ipsum generator - generates random latin-like text
2
3use crate::base::sample;
4use crate::locale::fetch_locale;
5
6/// Generate a random word
7pub fn word() -> String {
8    fetch_locale("lorem.words", "en")
9        .map(|v| sample(&v))
10        .unwrap_or_else(|| "lorem".to_string())
11}
12
13/// Generate multiple random words
14pub 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
20/// Generate a random sentence
21pub 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
36/// Generate multiple sentences
37pub 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
46/// Generate a random paragraph
47pub 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
55/// Generate multiple paragraphs
56pub 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
65/// Generate a character (for backwards compatibility)
66pub fn character() -> String {
67    let config = crate::config::FakerConfig::current();
68    config.rand_char(&crate::base::ALPHANUMERIC).to_string()
69}
70
71/// Generate characters (for backwards compatibility)
72pub 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}