@@ -41,9 +41,9 @@ def _as_float(v: Scalar, default: float) -> float:
4141 pass
4242 return default
4343
44- def _default_literal (field_type : str , default : Scalar , required : bool ) -> str :
44+ def _default_literal (field_name : str , field_type : str , default : Scalar , required : bool ) -> str :
4545 """Return a Nim literal/expression usable as the fallback/default element value."""
46- if field_type in ("string" , "text" , "select" , "font" ):
46+ if field_type in ("string" , "text" , "select" , "font" , "date" ):
4747 return _nim_quote (default if isinstance (default , str ) else "" )
4848 if field_type == "integer" :
4949 return str (_as_int (default , 0 ))
@@ -65,15 +65,15 @@ def _default_literal(field_type: str, default: Scalar, required: bool) -> str:
6565 # fallback to black if not provided
6666 s = default if isinstance (default , str ) and default else "#000000"
6767 return f'parseHtmlColor({ _nim_quote (s )} )'
68- raise ValueError (f"Unsupported field type: { field_type } " )
68+ raise ValueError (f"Unsupported field type: { field_type } , field name: { field_name } " )
6969
7070def _scalar_getter (field_name : str , field_type : str , default_expr : str , required : bool ) -> str :
7171 """
7272 Build Nim expression to read a scalar from params with default, robust to numbers-as-strings, etc.
7373 Returns a Nim *expression* (often a 'block:' expression).
7474 """
7575 k = f'params{{"{ field_name } "}}'
76- if field_type in ("string" , "text" , "select" , "font" ):
76+ if field_type in ("string" , "text" , "select" , "font" , "date" ):
7777 return f'{ k } .getStr({ default_expr } )'
7878
7979 if field_type == "integer" :
@@ -150,7 +150,7 @@ def _scalar_getter(field_name: str, field_type: str, default_expr: str, required
150150 except CatchableError:
151151 discard
152152 v"""
153- raise ValueError (f"Unsupported field type: { field_type } " )
153+ raise ValueError (f"Unsupported field type: { field_type } , fieldName: { field_name } " )
154154
155155def _field_elem_nim_type (field_type : str , required : bool ) -> str :
156156 """Element type (for seqs)."""
@@ -218,7 +218,7 @@ def _seq_init_expr(field: Dict[str, Any], all_fields: Dict[str, Dict[str, Any]])
218218 ftype = field ["type" ]
219219 required = bool (field .get ("required" , False ))
220220 elem_type = _field_elem_nim_type (ftype , required )
221- elem_default = _default_literal (ftype , field .get ("value" ), required )
221+ elem_default = _default_literal (name , ftype , field .get ("value" ), required )
222222
223223 seq_spec : List [List [Union [str , int ]]] = field .get ("seq" , [])
224224 dims = len (seq_spec )
@@ -567,7 +567,7 @@ def write_app_loader_nim(app_dir, config: Optional[dict] = None) -> str:
567567 continue
568568
569569 # Scalars
570- default_expr = _default_literal (field_type , field_default , field_required )
570+ default_expr = _default_literal (field_name , field_type , field_default , field_required )
571571 getter_expr = _scalar_getter (field_name , field_type , default_expr , field_required )
572572 if getter_expr .startswith ("block:" ):
573573 formatted = _format_block_value_after_colon (getter_expr )
0 commit comments