基于Markdown生成文件
代码
将md文件base64编码后做为命令参数
shell
python -c "import base64;exec(base64.b64decode('aW1wb3J0IHJlCmZyb20gYmFzZTY0IGltcG9ydCBiNjRkZWNvZGUKaW1wb3J0IHN5cwppbXBvcnQgb3MKCgpkZWYgZ2VuX2RhdGEodGV4dCk6CgljID0gMAoJbCA9IFtdCglkID0gewoJCSdmaWxlbmFtZSc6ICcnLAoJCSdjb250ZW50JzogJycsCgl9Cglmb3IgaXRlbSBpbiB0ZXh0LnNwbGl0KCdcbicpOgoJCW1hdGNoX2ZpbGVuYW1lID0gcmUubWF0Y2gocideIyMgKC4qPykkJywgaXRlbSkKCQlpZiBtYXRjaF9maWxlbmFtZToKCQkJZmlsZW5hbWUgPSBtYXRjaF9maWxlbmFtZS5ncm91cCgxKQoJCQlkWydmaWxlbmFtZSddID0gZmlsZW5hbWUKCQllbGlmIGxlbihkWydmaWxlbmFtZSddKToKCQkJaWYgaXRlbS5zdGFydHN3aXRoKCdgYGAnKToKCQkJCWlmIGMgPT0gMToKCQkJCQlsLmFwcGVuZChkKQoJCQkJCWMgPSAwCgkJCQkJZCA9IHsKCQkJCQkJJ2ZpbGVuYW1lJzogJycsCgkJCQkJCSdjb250ZW50JzogJycsCgkJCQkJfQoJCQkJZWxzZToKCQkJCQljICs9IDEKCQkJZWxzZToKCQkJCWlmIGMgPiAwOgoJCQkJCWRbJ2NvbnRlbnQnXSArPSBpdGVtICsgJ1xuJwoJcmV0dXJuIGwKCnRleHQgPSBiNjRkZWNvZGUoc3lzLmFyZ3ZbMV0uZW5jb2RlKCkpLmRlY29kZSgpCmZvciBpdGVtIGluIGdlbl9kYXRhKHRleHQpOgoJcCA9IGl0ZW1bJ2ZpbGVuYW1lJ10KCXRyeToKCQlpZiBub3Qgb3MucGF0aC5leGlzdHMob3MucGF0aC5kaXJuYW1lKHApKToKCQkJb3MubWtkaXIob3MucGF0aC5kaXJuYW1lKHApKQoJZXhjZXB0OgoJCXBhc3MKCXByaW50KHApCgl3aXRoIG9wZW4ocCwgJ3cnLCBlbmNvZGluZz0ndXRmLTgnKSBhcyBmcDoKCQlmcC53cml0ZShpdGVtWydjb250ZW50J10pCg=='.encode()).decode())"
源码
python
import re
from base64 import b64decode
import sys
import os
def gen_data(text):
c = 0
l = []
d = {
'filename': '',
'content': '',
}
for item in text.split('\n'):
match_filename = re.match(r'^## (.*?)$', item)
if match_filename:
filename = match_filename.group(1)
d['filename'] = filename
elif len(d['filename']):
if item.startswith('```'):
if c == 1:
l.append(d)
c = 0
d = {
'filename': '',
'content': '',
}
else:
c += 1
else:
if c > 0:
d['content'] += item + '\n'
return l
text = b64decode(sys.argv[1].encode()).decode()
for item in gen_data(text):
p = item['filename']
try:
if not os.path.exists(os.path.dirname(p)):
os.mkdir(os.path.dirname(p))
except:
pass
print(p)
with open(p, 'w', encoding='utf-8') as fp:
fp.write(item['content'])