template_demo/
template_demo.rs

1use net_shell::template::TemplateEngine;
2use serde_json::json;
3
4fn main() -> Result<(), Box<dyn std::error::Error>> {
5    println!("=== 测试模板引擎完整功能 ===");
6    
7    // 测试基本变量替换
8    let mut engine = TemplateEngine::new();
9    engine.set_variable("name", "World");
10    engine.set_variable("age", 25);
11    
12    let result = engine.render_string("Hello, {{ name }}! You are {{ age }} years old.")?;
13    println!("变量替换测试: {}", result);
14    
15    // 测试嵌套变量访问
16    engine.set_variable("user", json!({
17        "name": "Alice",
18        "profile": {
19            "age": 30,
20            "city": "Beijing"
21        }
22    }));
23    
24    let result = engine.render_string("Name: {{ user.name }}, City: {{ user.profile.city }}")?;
25    println!("嵌套变量测试: {}", result);
26    
27    // 测试for循环
28    engine.set_variable("items", json!(["apple", "banana", "cherry"]));
29    
30    let template = r#"
31{% for item in items %}
32- {{ item }}
33{% endfor %}"#;
34    
35    let result = engine.render_string(template)?;
36    println!("For循环测试:{}", result);
37    
38    // 测试自定义定界符
39    let mut custom_engine = TemplateEngine::with_delimiters("${", "}");
40    custom_engine.set_variable("name", "Custom");
41    
42    let result = custom_engine.render_string("Hello, ${ name }!")?;
43    println!("自定义定界符测试: {}", result);
44    
45    // 测试复杂模板
46    engine.set_variable("title", "User List");
47    engine.set_variable("users", json!([
48        {"name": "Alice", "age": 25},
49        {"name": "Bob", "age": 30},
50        {"name": "Charlie", "age": 35}
51    ]));
52    
53    let template = r#"
54<h1>{{ title }}</h1>
55<ul>
56{% for user in users %}
57    <li>{{ user.name }} ({{ user.age }} years old)</li>
58{% endfor %}
59</ul>"#;
60    
61    let result = engine.render_string(template)?;
62    println!("复杂模板测试:{}", result);
63    
64    println!("=== 所有测试完成 ===");
65    Ok(())
66}