45 lines
2.2 KiB
Python
45 lines
2.2 KiB
Python
import re
|
|
|
|
if (__name__ == "__main__"):
|
|
# Assemble the script which embeds the Markdeep page into the preview blog
|
|
PreviewBlogPage = open("PreviewBlogPage.htm", "rb").read().decode("utf-8")
|
|
HeadMatch = re.search("<head(.*?)>(.*?)</head>", PreviewBlogPage, re.DOTALL)
|
|
HeadAttributes = HeadMatch.group(1)
|
|
FullDocumentHead = HeadMatch.group(2)
|
|
BodyMatch = re.search("<body(.*?)>(.*?)</body>", PreviewBlogPage, re.DOTALL)
|
|
BodyAttributes = BodyMatch.group(1)
|
|
FullPreviewBody = BodyMatch.group(2)
|
|
ArticleHTMLCodeMacro = "$(ARTICLE_HTML_CODE)"
|
|
iArticleHTMLCodeMacro = FullPreviewBody.find(ArticleHTMLCodeMacro)
|
|
DocumentBodyPrefix = FullPreviewBody[0:iArticleHTMLCodeMacro]
|
|
DocumentBodySuffix = FullPreviewBody[iArticleHTMLCodeMacro + len(ArticleHTMLCodeMacro):]
|
|
FullPrepareHTMLCode = open("PrepareHTML.js", "rb").read().decode("utf-8")
|
|
ReplacementList = [("$(FULL_DOCUMENT_HEAD)", FullDocumentHead),
|
|
("$(DOCUMENT_BODY_PREFIX)", DocumentBodyPrefix),
|
|
("$(DOCUMENT_BODY_SUFFIX)", DocumentBodySuffix)]
|
|
for Macro, Replacement in ReplacementList:
|
|
FullPrepareHTMLCode = FullPrepareHTMLCode.replace(
|
|
Macro,
|
|
Replacement.replace("\r\n", "\\r\\n\\\r\n").replace("'", "\\'"))
|
|
# Generate code which sets body and head attributes appropriately
|
|
for Element, AttributeCode in [("head", HeadAttributes), ("body", BodyAttributes)]:
|
|
FullPrepareHTMLCode += "\r\n// Setting " + Element + " attributes\r\n"
|
|
for Match in re.finditer("(\\w+)=\\\"(.*?)\\\"", AttributeCode):
|
|
FullPrepareHTMLCode += "document." + Element + ".setAttribute(\"" + Match.group(
|
|
1) + "\",\"" + Match.group(2) + "\");\r\n"
|
|
open("PrepareHTML.full.js", "wb").write(FullPrepareHTMLCode.encode("utf-8"))
|
|
|
|
# Concatenate all the scripts together
|
|
SourceFileList = [
|
|
"PrepareHTML.full.js", "SetMarkdeepMode.js", "markdeep.min.js", "DisplayMarkdeepOutput.js",
|
|
"InvokeMathJax.js"
|
|
]
|
|
OutputCode = "\r\n\r\n".join([
|
|
"// " + SourceFile + "\r\n\r\n" + open(SourceFile, "rb").read().decode("utf-8")
|
|
for SourceFile in SourceFileList
|
|
])
|
|
OutputFile = open("MarkdeepUtility.js", "wb")
|
|
OutputFile.write(OutputCode.encode("utf-8"))
|
|
OutputFile.close()
|
|
print("Done.")
|