@@ -20,16 +20,14 @@ def _get_template_env():
2020 return env
2121
2222
23- def _compute_block_metadata (blocks ):
24- """Pre-compute block metadata for template rendering."""
25- blocks_list = []
26- all_fields = {} # Collect all unique fields
23+ def _get_template_data (blocks ) -> tuple [list [dict ], dict [str , object ]]:
24+ all_blocks = []
25+ all_fields = {}
2726
2827 for block_name , block_fields in blocks .items ():
2928 period_groups = filters .group_period_fields (block_fields )
3029 has_index = block_name == "period"
3130
32- # Build recarrays list
3331 recarrays = []
3432 grouped_field_names = set ()
3533 if period_groups :
@@ -38,14 +36,11 @@ def _compute_block_metadata(blocks):
3836 recarrays .append ({"name" : recarray_name , "fields" : field_names })
3937 grouped_field_names .update (field_names )
4038
41- # Get standalone fields (not in any recarray)
4239 all_field_names = list (block_fields .keys ())
4340 standalone_fields = [f for f in all_field_names if f not in grouped_field_names ]
4441
45- # Collect field objects
4642 all_fields .update (block_fields )
47-
48- blocks_list .append (
43+ all_blocks .append (
4944 {
5045 "name" : block_name ,
5146 "has_index" : has_index ,
@@ -54,7 +49,7 @@ def _compute_block_metadata(blocks):
5449 }
5550 )
5651
57- return blocks_list , all_fields
52+ return all_blocks , all_fields
5853
5954
6055def make_grammar (dfn : Dfn , outdir : PathLike ):
@@ -63,13 +58,10 @@ def make_grammar(dfn: Dfn, outdir: PathLike):
6358 env = _get_template_env ()
6459 template = env .get_template ("component.lark.jinja" )
6560 target_path = outdir / f"{ dfn .name } .lark"
66-
67- # Pre-compute block metadata and collect all fields
68- blocks_list , fields = _compute_block_metadata (dfn .blocks )
69-
61+ blocks , fields = _get_template_data (dfn .blocks )
7062 with open (target_path , "w" ) as f :
7163 name = dfn .name
72- f .write (template .render (name = name , blocks = blocks_list , fields = fields ))
64+ f .write (template .render (name = name , blocks = blocks , fields = fields ))
7365
7466
7567def make_all_grammars (dfns : dict [str , Dfn ], outdir : PathLike ):
0 commit comments