pub fn is_valid_kotlin_package(s: &str) -> boolExpand description
Whether s is a legal Kotlin package path: one or more
valid identifiers separated by single dots. The
empty string is legal — it is the default (root) package.
use kotlin_codegen::is_valid_kotlin_package;
assert!(is_valid_kotlin_package("io.zenoh.jni"));
assert!(is_valid_kotlin_package("")); // default package
assert!(!is_valid_kotlin_package("io..jni")); // empty segment
assert!(!is_valid_kotlin_package("io.object")); // keyword segmentExamples found in repository?
examples/showcase.rs (line 54)
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}