@@ -2,11 +2,11 @@ use crate::file_cache::AsyncFromStrWithState;
2
2
use crate :: utils:: static_filename;
3
3
use crate :: { AppState , FileCache , TEMPLATES_DIR } ;
4
4
use async_trait:: async_trait;
5
- use handlebars:: RenderErrorReason ;
6
5
use handlebars:: {
7
6
handlebars_helper, template:: TemplateElement , Context , Handlebars , JsonValue , RenderError ,
8
7
Renderable , Template ,
9
8
} ;
9
+ use handlebars:: { PathAndJson , RenderErrorReason } ;
10
10
use include_dir:: { include_dir, Dir } ;
11
11
use std:: path:: PathBuf ;
12
12
use std:: sync:: Arc ;
@@ -160,16 +160,22 @@ fn icon_img_helper<'reg, 'rc>(
160
160
_rc : & mut handlebars:: RenderContext < ' reg , ' rc > ,
161
161
writer : & mut dyn handlebars:: Output ,
162
162
) -> handlebars:: HelperResult {
163
- let name = helper
164
- . params ( )
165
- . get ( 0 )
166
- . and_then ( |v| v. value ( ) . as_str ( ) )
167
- . ok_or ( RenderErrorReason :: InvalidParamType ( "str" ) ) ?;
168
- let size = helper
169
- . params ( )
170
- . get ( 1 )
171
- . and_then ( |v| v. value ( ) . as_u64 ( ) )
172
- . unwrap_or ( 24 ) ;
163
+ let null = handlebars:: JsonValue :: Null ;
164
+ let params = [ 0 , 1 ] . map ( |i| {
165
+ helper
166
+ . params ( )
167
+ . get ( i)
168
+ . map ( PathAndJson :: value)
169
+ . unwrap_or ( & null)
170
+ } ) ;
171
+ let err_fmt = || {
172
+ RenderErrorReason :: Other ( format ! (
173
+ "{{icon_img str int}}: invalid parameters {:?}" ,
174
+ params
175
+ ) )
176
+ } ;
177
+ let name = params[ 0 ] . as_str ( ) . ok_or_else ( err_fmt) ?;
178
+ let size = params[ 1 ] . as_u64 ( ) . unwrap_or ( 24 ) ;
173
179
write ! (
174
180
writer,
175
181
"<svg width={size} height={size}><use href=\" /{}#tabler-{name}\" /></svg>" ,
0 commit comments