@@ -37,11 +37,13 @@ def render_tree(
3737 root : DirInfo ,
3838 max_depth : int = 0 ,
3939 * ,
40- date_mode : str = "seconds" ,
40+ date_format : str = "seconds" ,
41+ skip_date : bool = False ,
4142 numbered_indent : bool = False ,
4243 sort_spec : str | None = None ,
4344 skip_header : bool = False ,
4445 skip_totals : bool = False ,
46+ skip_word_count : bool = False ,
4547) -> str :
4648 """
4749 Render tree structure with word count, bytes, mtime (per date_mode), and path.
@@ -89,28 +91,36 @@ def _render_node(
8991 prefix = "" .join (prefix_parts )
9092
9193 if isinstance (node , FileInfo ):
92- date_str = _fmt_mtime (node .mtime , date_mode )
94+ date_str = _fmt_mtime (node .mtime , date_format )
9395 display_name = node .path .name
94- if date_mode == "none" :
95- data_lines .append (
96- f"{ _fmt_count (node .word_count ):>7} { node .size_bytes :>12} { prefix } { display_name } "
97- )
96+ if skip_word_count and skip_date :
97+ # Size + Path
98+ data_lines .append (f"{ node .size_bytes :>12} { prefix } { display_name } " )
99+ elif skip_word_count and not skip_date :
100+ # Size + Modified + Path
101+ data_lines .append (f"{ node .size_bytes :>12} { date_str :>19} { prefix } { display_name } " )
102+ elif not skip_word_count and skip_date :
103+ # Words + Size + Path
104+ data_lines .append (f"{ _fmt_count (node .word_count ):>7} { node .size_bytes :>12} { prefix } { display_name } " )
98105 else :
99- data_lines .append (
100- f"{ _fmt_count (node .word_count ):>7} { node .size_bytes :>12} { date_str :>19} { prefix } { display_name } "
101- )
106+ # Words + Size + Modified + Path
107+ data_lines .append (f"{ _fmt_count (node .word_count ):>7} { node .size_bytes :>12} { date_str :>19} { prefix } { display_name } " )
102108 else :
103109 # DirInfo
104- date_str = _fmt_mtime (node .mtime , date_mode )
110+ date_str = _fmt_mtime (node .mtime , date_format )
105111 display_name = f"{ node .path .name } /"
106- if date_mode == "none" :
107- data_lines .append (
108- f"{ str (node .word_count ):>7} { node .size_bytes :>12} { prefix } { display_name } "
109- )
112+ if skip_word_count and skip_date :
113+ # Size + Path
114+ data_lines .append (f"{ node .size_bytes :>12} { prefix } { display_name } " )
115+ elif skip_word_count and not skip_date :
116+ # Size + Modified + Path
117+ data_lines .append (f"{ node .size_bytes :>12} { date_str :>19} { prefix } { display_name } " )
118+ elif not skip_word_count and skip_date :
119+ # Words + Size + Path
120+ data_lines .append (f"{ str (node .word_count ):>7} { node .size_bytes :>12} { prefix } { display_name } " )
110121 else :
111- data_lines .append (
112- f"{ str (node .word_count ):>7} { node .size_bytes :>12} { date_str :>19} { prefix } { display_name } "
113- )
122+ # Words + Size + Modified + Path
123+ data_lines .append (f"{ str (node .word_count ):>7} { node .size_bytes :>12} { date_str :>19} { prefix } { display_name } " )
114124
115125 # If we are allowed to show children (display depth), iterate
116126 if depth < max_depth :
@@ -173,15 +183,15 @@ def __init__(self, obj, depth_value, parent_path):
173183
174184 # Add header if not skipped
175185 if not skip_header :
176- column_specs = get_column_specs (date_mode )
186+ column_specs = get_column_specs (date_format , skip_word_count , skip_date )
177187 lines .append (format_header_row (column_specs ))
178188
179189 # Add data rows
180190 lines .extend (data_lines )
181191
182192 # Add totals footer if not skipped and we have multiple data rows
183193 if not skip_totals and len (data_lines ) >= 2 :
184- column_specs = get_column_specs (date_mode )
194+ column_specs = get_column_specs (date_format , skip_word_count , skip_date )
185195 lines .append (format_separator_row (column_specs ))
186196 lines .append (format_totals_row (column_specs , root ))
187197
0 commit comments