doido_generators/generators/
mod.rs1pub mod channel;
2pub mod controller;
3pub mod field;
4pub mod generator_gen;
5pub mod job;
6pub mod locale;
7pub mod mailer;
8pub mod migration;
9pub mod migration_support;
10pub mod model;
11pub mod new;
12pub mod resource;
13pub mod scaffold;
14pub mod storage_adapter;
15pub mod storage_install;
16pub mod templates_gen;
17
18use doido_core::Inflector;
19
20pub fn to_snake(s: &str) -> String {
22 Inflector::underscore(s)
23}
24
25pub(crate) fn register_module(existing: &str, module: &str, marker: &str) -> String {
29 let decl = format!("pub mod {module};");
30 if existing.lines().any(|l| l.trim() == decl) {
31 return existing.to_string();
32 }
33 let mut lines: Vec<String> = existing.lines().map(String::from).collect();
34 match lines.iter().position(|l| l.contains(marker)) {
35 Some(i) => lines.insert(i, decl),
36 None => lines.push(decl),
37 }
38 let mut out = lines.join("\n");
39 out.push('\n');
40 out
41}
42
43pub fn to_pascal(s: &str) -> String {
45 Inflector::camelize(&Inflector::underscore(s))
48}
49
50pub fn to_table_name(s: &str) -> String {
53 Inflector::tableize(s)
54}