sfw/tools/doc/inline_docs.py

77 lines
1.8 KiB
Python

# The way markdeep works, is that it will process the entire document on load and it generates
# proper html from it's markdown syntax, and then it deletes itself from the page.
# It cannot be inlined into html, but I'd like to distribute a single file that doesn't need
# internet access to properly open.
# This script will open the generated docs in a browser using selenium, and save the final dom
# to a new file. There are probably better way to do this.
# You need selenium to use this. Also firefox. Just use the latest:
# Create virtual env:
# python -m venv venv
# Activate it (This is for bash on linux). Commands for other shells: https://docs.python.org/3/library/venv.html#how-venvs-work
# . ./venv/bin/activate
# Install:
# pip install selenium
import time
import math
import os
import shutil
import random
import subprocess
import selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
def ensure_dir(storage_path):
if not os.path.exists(storage_path):
os.makedirs(storage_path)
def write_to_file(path, data, mode = "w"):
lf = open(path, "w")
lf.write(data)
lf.close()
def process_file(driver, in_file, out_file):
browser_file_link = "file://" + os.path.abspath(in_file)
print("Processing: " + browser_file_link)
driver.get(browser_file_link)
#wait a few seconds
time.sleep(5)
write_to_file(out_file, driver.page_source)
#headless=False
driver = webdriver.Firefox()
#wait a few seconds
time.sleep(10)
ensure_dir("out/processed")
files = [
"sfw_core.html",
"sfw_full.html",
"sfw_object.html",
"sfw_render_core.html",
"sfw_render_immediate.html",
"sfw_render_objects.html",
"sfwl_core.html",
"sfwl_full.html",
]
for f in files:
process_file(driver, "out/" + f, "out/processed/" + f)
time.sleep(5)
driver.close()