Skip to main content

jgd_rs/
lib.rs

1use std::path::PathBuf;
2
3use serde_json::Value;
4
5pub use crate::type_spec::*;
6
7mod type_spec;
8mod fake;
9mod locales_keys;
10
11pub fn generate_jgd_from_str(value: &str) -> Result<Value, JgdGeneratorError> {
12    Jgd::from(value)
13        .generate()
14}
15
16pub fn generate_jgd_from_file(path: &PathBuf) -> Result<Value, JgdGeneratorError> {
17    Jgd::from_file(path)
18        .generate()
19}
20
21#[cfg(test)]
22mod tests {
23    use std::{path::PathBuf, str::FromStr, sync::Arc};
24
25    use serde_json::Value;
26
27    use crate::{Arguments, Jgd};
28
29    #[test]
30    fn all_keys() {
31        Jgd::add_custom_key("custom.key", Arc::new(|args: Arguments| {
32            let value = match args {
33                Arguments::None => "Empty Custom Key".to_string(),
34                Arguments::Fixed(_) => format!("Fixed Custom Key with value {}", args.get_string("")),
35                Arguments::Range(_, _) => format!("Range Custom Key with values {:?}", args.get_string_tuple("0", "1")),
36            };
37
38            Ok(Value::String(value))
39        }));
40
41        let result = Jgd::from_file(&PathBuf::from_str("../examples/user-post-entities-custom-keys.jgd").unwrap())
42            .generate();
43
44        assert!(result.is_ok());
45    }
46}