#!/usr/bin/python
import glob
import markdown
import os
import shutil
from datetime import datetime
# from finch import FinchLexer
TEMPLATE = """
Welcome
Language
- Syntax
- Method calls
- Variables
- Blocks
- Flow control
Objects
- Primitives
- Classes
- Functions
- Fibers
- Lists
- Maps
Usage
{title}
{html}
"""
def format_file(path):
basename = os.path.basename(path)
basename = basename.split('.')[0]
title = ""
# Read the markdown file and preprocess it.
contents = ""
with open(path, "r") as input:
# Read each line, preprocessing the special codes.
for line in input:
stripped = line.lstrip()
indentation = line[:len(line) - len(stripped)]
if stripped.startswith("^"):
command,_,args = stripped.rstrip("\n").lstrip("^").partition(" ")
args = args.strip()
if command == "title":
title = args
else:
print "UNKNOWN COMMAND:", command, args
else:
contents = contents + line
html = markdown.markdown(contents, ['def_list', 'codehilite'])
modified = datetime.fromtimestamp(os.path.getmtime(path))
mod_str = modified.strftime('%B %d, %Y')
fields = {'title': title, 'html': html, 'mod': mod_str}
# Write the html output.
with open("build/site/" + basename + ".html", 'w') as out:
out.write(TEMPLATE.format(**fields))
print "converted", basename
# Clean the output directory.
if os.path.exists("build/site"):
shutil.rmtree("build/site")
os.mkdir("build/site")
# Process each markdown file.
for f in glob.iglob("doc/site/*.markdown"):
format_file(f)
# Copy the CSS file.
shutil.copyfile("doc/site/style.css", "build/site/style.css")