mock_json 0.1.8

A very simple mock json tool
Documentation
use crate::mock::MockFn;
use crate::mock::{create_sentence, create_word, CN_LETTER_POOL, LETTER_POOL};
use rand::Rng;
use serde_json::{json, Value};

#[derive(Debug, Default, Clone)]
pub struct MockParagraphFn;
impl MockFn for MockParagraphFn {
    fn mock(&self, args: Option<Vec<&str>>) -> Value {
        let lang = args.as_ref().and_then(|args| args.first());
        let mut rng = rand::thread_rng();
        let count = rng.gen_range(3..=10);
        match lang {
            Some(&"cn") => {
                let mut ts = vec![];
                for _ in 0..=count {
                    ts.push(create_word(&CN_LETTER_POOL, 7, 15));
                }
                let mut str = ts.join("");
                str.push('');
                json!(str)
            }
            _ => {
                let mut ts = vec![];
                for _ in 0..=count {
                    ts.push(create_sentence(&LETTER_POOL, 3, 15));
                }
                let mut str = ts.join(", ");
                str.push('.');
                json!(str)
            }
        }
    }
}

#[derive(Debug, Default, Clone)]
pub struct MockSentenceFn;
impl MockFn for MockSentenceFn {
    fn mock(&self, args: Option<Vec<&str>>) -> Value {
        let lang = args.as_ref().and_then(|args| args.first());
        match lang {
            Some(&"cn") => json!(create_word(&CN_LETTER_POOL, 7, 15)),
            _ => json!(create_sentence(&LETTER_POOL, 3, 15)),
        }
    }
}

#[derive(Debug, Default, Clone)]
pub struct MockTitleFn;
impl MockFn for MockTitleFn {
    fn mock(&self, args: Option<Vec<&str>>) -> Value {
        let lang = args.as_ref().and_then(|args| args.first());
        match lang {
            Some(&"cn") => json!(create_word(&CN_LETTER_POOL, 7, 15)),
            _ => json!(create_sentence(&LETTER_POOL, 4, 8)),
        }
    }
}