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}