要求仕様
- 少しだけマークダウンしたい
- 場合によってはHTMLタグも自由に書きたいのでパッケージは使いたくない
- 頻繁に使用する箇条書きやテーブルだけマークダウンで対応したい
設計
プロトタイプ
- 一階層の箇条書きにしか対応していないしそれもめちゃくちゃ穴だらけだけどとりあえず動けばいいので後は需要に応じてエンハンスする
templete.html
<html> <head> <title> TITLE_HERE </title> </head> <body> CONTENTS_HERE </body> </html>
convert.py
# -*- coding: utf-8 -*- import sys import codecs import re if __name__ == "__main__": args = sys.argv if len(args) != 3: print "argument error" quit() raw_text=args[1] fout = codecs.open(args[2], "w", "shift_jis") fin_templete = codecs.open("templete.html", "r", "shift_jis") for line in fin_templete: if "TITLE_HERE" in line: fout.write(re.sub(r'.*\\', "", re.sub(r'\.txt', "", raw_text)) + "\r\n") elif "CONTENTS_HERE" in line: fin_text = codecs.open(args[1], "r", "shift_jis") stock = [] for line_text in fin_text: if re.match(r'^-', line_text): stock.append(re.sub(r'\r\n', "", re.sub(r'^-', "", line_text))) elif len(stock) > 0: fout.write("<ul>\r\n") for i in range(0, len(stock)): fout.write("<li>" + stock[i] + "</li>\r\n") fout.write("</ul>\r\n") stock = [] else: fout.write(line_text + "<br/>\r\n") fin_text.close() else: fout.write(line) fin_templete.close() fout.close()
convert.bat
@echo off set chrome="C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" cd /d %~dp0 set rawText=%1 set outHtml=%rawText:txt=html% python convert.py %rawText% %outHtml% %chrome% %outHtml% pause
動作確認
hoge.txt
動物 - 適当 - 犬 - 柴犬 - 猫 - ハムスター
hoge.html
<html> <head> <title> hoge </title> </head> <body> 動物 - 適当 <br/> <ul> <li> 犬 - 柴犬</li> <li> 猫</li> <li> ハムスター</li> </ul> </body> </html>