All the template are now compiled at compile-time with the `ructe` crate.
I preferred to use it instead of askama because it allows more complex Rust expressions, where askama only supports a small subset of expressions and doesn't allow them everywhere (for instance, `{{ macro!() | filter }}` would result in a parsing error).
The diff is quite huge, but there is normally no changes in functionality.
Fixes #161 and unblocks #110 and #273
		
	
			
		
			
				
	
	
		
			28 lines
		
	
	
		
			782 B
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			782 B
		
	
	
	
		
			HTML
		
	
	
	
	
	
| @use templates::{base, partials::post_card};
 | |
| @use template_utils::*;
 | |
| @use plume_models::posts::Post;
 | |
| 
 | |
| @(ctx: BaseContext, query_str: &str, articles: Vec<Post>, page: i32, n_pages: i32)
 | |
| 
 | |
| @:base(ctx, i18n!(ctx.1, "Search result for \"{0}\""; query_str).as_str(), {}, {}, {
 | |
|     <h1>@i18n!(ctx.1, "Search result")</h1>
 | |
|     <p>@query_str</p>
 | |
| 
 | |
|     @if articles.is_empty() {
 | |
|         <section>
 | |
| 	    @if page == 1 {
 | |
|                 <h2>@i18n!(ctx.1, "No result for your query")</h2>
 | |
| 	    } else {
 | |
|                 <h2>@i18n!(ctx.1, "No more result for your query")</h2>
 | |
| 	    }
 | |
|         </section>
 | |
|     } else {
 | |
|         <div class="cards">
 | |
|             @for article in articles {
 | |
|                 @:post_card(ctx, article)
 | |
|             }
 | |
|         </div>
 | |
|     }
 | |
|     @paginate(ctx.1, page, n_pages)
 | |
| })
 |