4a4b18f19f
Fix undef'd var scenario Change-Id: Idd51c2838cb2863faf31fd33eba63270633f1bdb Signed-off-by: Ron Stone <ronald.stone@windriver.com>
93 lines
2.9 KiB
Python
93 lines
2.9 KiB
Python
import sys
|
|
import os
|
|
from bs4 import BeautifulSoup
|
|
|
|
BUILD_CONTEXT=os.environ.get('DOCS_BUILD_CONTEXT')
|
|
|
|
def remove_column_from_tables(file_path):
|
|
with open(file_path, 'r', encoding='utf-8') as file:
|
|
soup = BeautifulSoup(file, 'lxml')
|
|
|
|
empty_rows = 0
|
|
in_context = None
|
|
|
|
print("Checking if in valid context for", file_path)
|
|
|
|
if BUILD_CONTEXT:
|
|
context_tags = soup.find('meta', attrs={'name': 'docs-build-context'})
|
|
if context_tags:
|
|
for context_tag in context_tags.get('content').split(","):
|
|
if context_tag == BUILD_CONTEXT:
|
|
in_context = True
|
|
print(" ... in", context_tag, "- Processing")
|
|
break
|
|
else:
|
|
print(" ... not in", context_tag)
|
|
|
|
if not in_context:
|
|
return
|
|
else:
|
|
print("docs-build-context not set. Treating", BUILD_CONTEXT, "as valid.")
|
|
|
|
# Find column to delete
|
|
column_tag = soup.find('meta', attrs={'name': 'remove-column-from-html-table'})
|
|
if column_tag:
|
|
column_names = column_tag.get('content').split(",")
|
|
else:
|
|
print(f"No column to remove specified in '{file_path}' header")
|
|
sys.exit(1)
|
|
|
|
# Remove empty rows?
|
|
row_tag = soup.find('meta', attrs={'name': 'remove-column-emptied-row'})
|
|
if row_tag:
|
|
if row_tag.get('content') == 1:
|
|
empty_rows = 1
|
|
|
|
for column_name in column_names:
|
|
|
|
with open(file_path, 'r', encoding='utf-8') as file:
|
|
soup = BeautifulSoup(file, 'lxml')
|
|
|
|
print(f"Removing column '{column_name}' from '{file_path}'")
|
|
tables = soup.find_all('table')
|
|
|
|
for table in tables:
|
|
headers = table.find_all('th')
|
|
column_index = None
|
|
|
|
for index, header in enumerate(headers):
|
|
if header.get_text(strip=True) == column_name:
|
|
column_index = index
|
|
break
|
|
|
|
if column_index is not None:
|
|
# for header in headers:
|
|
# header.extract()
|
|
|
|
rows = table.find_all('tr')
|
|
for row in rows:
|
|
columns = row.find_all(['td', 'th'])
|
|
if column_index < len(columns):
|
|
columns[column_index].extract()
|
|
|
|
|
|
# Clean up rows that have become empty
|
|
if int(empty_rows) == 1:
|
|
for row in rows:
|
|
if not row.find_all(['td', 'th']):
|
|
row.decompose()
|
|
|
|
with open(file_path, 'w', encoding='utf-8') as file:
|
|
file.write(str(soup))
|
|
|
|
if int(empty_rows) == 1:
|
|
print("... removed rows made empty by column removal")
|
|
|
|
if __name__ == '__main__':
|
|
if len(sys.argv) < 2:
|
|
print("Usage: python remove_column.py <html_file> <html_file> ...")
|
|
sys.exit(0)
|
|
|
|
for html_file in sys.argv[1:]:
|
|
remove_column_from_tables(html_file)
|