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("(.*?)",PreviewBlogPage,re.DOTALL); HeadAttributes=HeadMatch.group(1); FullDocumentHead=HeadMatch.group(2); BodyMatch=re.search("(.*?)",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.");