Skip to content

Instantly share code, notes, and snippets.

@wzpan
Created June 1, 2015 16:17
Show Gist options
  • Save wzpan/7db9b0888f06a8d6ff8c to your computer and use it in GitHub Desktop.
Save wzpan/7db9b0888f06a8d6ff8c to your computer and use it in GitHub Desktop.
A python script to speed up the rendering process of Hexo 3.
#!/usr/bin/python2
'''
SYNOPSIS:
$ python speedup.py -f FILE
or
$ python speedup.py -d DIR
'''
import sys, os, getopt
TARGET_TYPE = [".md", ".markdown"]
def process_file(path):
''' Process a file. '''
line = ""
quote_flag = False
line_list = []
with open(path) as f:
while True:
line = f.readline()
if line == "":
break
if line.startswith("```"):
quote_flag = not quote_flag
if line.strip()=="```" and quote_flag:
line = "``` plain\r\n"
line_list.append(line)
with open(path, 'w+') as f:
f.writelines(line_list)
def process_dir(path):
''' Process a directory. '''
file_list = []
files = os.listdir(path)
for file in files:
file = os.path.join(path, file)
root, ext = os.path.splitext(os.path.basename(file))
if os.path.isfile(file) and ext in TARGET_TYPE:
process_file(file)
def main():
if len(sys.argv) < 2:
print "Arguments should be at least 2."
print "python speedup.py -f [FILE]"
print "python speedup.py -d [DIRECTORY]"
exit(1)
try:
opts, args = getopt.getopt(sys.argv[1:], "f:d:", ["file=", "directory="])
for arg, value in opts:
if arg in ('-f', '--file'):
root, ext = os.path.basename(value)
if ext in 'TARGET_TYPE':
process_file(value)
elif arg in ('-d', '--directory'):
process_dir(value)
else:
print "Argument error. %s" % arg
exit(1)
except getopt.GetoptError as e:
print e
exit(1)
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment