faker 0.0.4

A library for generating fake data such as names, addresses, and phone numbers.
use super::locale::Locale;
use super::helpers::Helpers;

pub struct Lorem {
    lorem: Vec<&'static str>,
    helpers: Helpers
}

impl Lorem {

    pub fn new(locale: Locale) -> Lorem {
        Lorem {
            lorem: locale.lorem,
            helpers: Helpers
        }
    }

    pub fn word(&self) -> String {
        self.words(1).join("")
    }

    pub fn words(&self, num: usize) -> Vec<&str> {
        self.helpers.shuffle(&self.lorem)[0..num].to_vec()
    }

    pub fn sentence(&self, word_count: usize, range: usize) -> String {
        self.helpers.sentence_case(self.words(word_count + self.helpers.number_in_range(0, range)).join(" ")) + "."
    }

    pub fn sentences(&self, sentence_count: u32) -> Vec<String> {
        let mut sentences = Vec::new();
        for _ in 0..sentence_count {
            sentences.push(self.sentence(7, 3));
        }
        sentences
    }

    pub fn paragraph(&self, sentence_count: u32) -> String {
        self.sentences(sentence_count + self.helpers.number_in_range(0, 3)).join("\n")
    }

    pub fn paragraphs(&self, paragraph_count: u32) -> Vec<String> {
        let mut paragraphs = Vec::new();
        for _ in 0..paragraph_count {
            paragraphs.push(self.paragraph(3));
        }
        paragraphs
    }
}