Skip to main content

merged_file_path

Function merged_file_path 

Source
pub fn merged_file_path(
    kotlin_root: &Path,
    file: &KtFile,
    fallback_name: &str,
) -> PathBuf
Expand description

The flattened on-disk path of one merged file under kotlin_root: io.zenoh.jni.bytes becomes <kotlin_root>/io/zenoh/jni/bytes.kt.

write_files uses this to lay out its output; it is public so a consumer can predict, report or post-process those paths without writing anything. fallback_name names the file when the package is empty.

Examples found in repository?
examples/showcase.rs (line 34)
22fn main() {
23    let fragments = vec![
24        types_fragment(),
25        session_fragment(),
26        natives_fragment(),
27        root_fragment(),
28    ];
29
30    let files = merge_files(fragments).expect("the showcase model is valid");
31
32    println!("=== generated files ===");
33    for file in &files {
34        let path = merged_file_path(std::path::Path::new("kotlin"), file, "Generated");
35        println!("\n--- {} ---", path.display());
36        print!("{}", file.render());
37    }
38
39    println!("\n=== identifier helpers ===");
40    for raw in ["myValue", "my-field", "2fast", "object", "data", ""] {
41        let quoted = format!("{raw:?}");
42        let mangled = format!("{:?}", mangle_kotlin_ident(raw));
43        let escaped = format!("{:?}", escape_kotlin_ident(raw));
44        let valid = is_valid_kotlin_ident(raw);
45        let keyword = is_kotlin_hard_keyword(raw);
46        println!(
47            "{quoted:>10} -> valid={valid:<5} keyword={keyword:<5} \
48             mangled={mangled:<10} escaped={escaped}"
49        );
50    }
51    for raw in ["io.example.api", "fun.my-pkg", "io..jni."] {
52        let quoted = format!("{raw:?}");
53        let mangled = format!("{:?}", mangle_kotlin_package(raw));
54        let valid = is_valid_kotlin_package(raw);
55        println!("{quoted:>16} -> valid={valid:<5} mangled={mangled}");
56    }
57}