Files
docs/remove_empty-grid_rows.py
Ron Stone 729f31198c Reimplement table col/row conditionalization (r10)
Reimplement table column and row removal to be output format agnostic.

Change-Id: I4822d53d37fd4604bf45c4bc4a315c8fc904376a
Signed-off-by: Ron Stone <ronald.stone@windriver.com>
2025-06-05 13:38:20 +00:00

69 lines
1.9 KiB
Python

import sys
import re
def is_grid_table_line(line):
return re.match(r'^\+[-=+]+$', line.strip()) is not None
def is_grid_row_empty(row):
# A grid row is considered empty if the cells contain only whitespace or are just column dividers
content = re.sub(r'[+|]', '', row)
return content.strip() == ''
def remove_empty_grid_rows(lines):
result = []
i = 0
while i < len(lines):
line = lines[i]
if is_grid_table_line(line):
result.append(line)
# Check if there's a data line and a closing border after this
if i + 2 < len(lines):
data_line = lines[i + 1]
next_border = lines[i + 2]
if is_grid_table_line(next_border):
if is_grid_row_empty(data_line):
# Skip this row (data + border)
i += 3
continue
else:
# Keep data row and closing border
result.append(data_line)
result.append(next_border)
i += 3
continue
else:
# Not a properly structured row — just advance
i += 1
else:
# Not enough lines ahead — just advance
i += 1
else:
result.append(line)
i += 1
return result
def remove_empty_table_rows(filepath):
with open(filepath, 'r', encoding='utf-8') as f:
lines = f.readlines()
lines = remove_empty_grid_rows(lines)
with open(filepath, 'w', encoding='utf-8') as f:
f.writelines(lines)
if __name__ == '__main__':
if len(sys.argv) != 2:
print("Usage: python remove_empty-grid_rows.py path/to/file.rst")
sys.exit(1)
filepath = sys.argv[1]
remove_empty_table_rows(filepath)
print(f"Processed: {filepath}")