현재의 티스토리 에디터는 직접 markdown 편집도 지원을 하고 있지만, 구 버전의 편집기 사용시에 다음과 같은 markdown 소스를 작성하여 HTML 변환을 한 후 티스토리 소스에 붙여넣을 경우,
PS2. 추가 작업 후보 : 소스 md에 줄바꿈이 있을 때만 추가적인 줄바꿈 삽입
## 제목1 본문 ## 제목2 - 리스트1 - 리스트2 본문 ## 제목2 본문 - 리스트1 - 리스트2
제목1
본문
제목2
- 리스트1
- 리스트2
본문
제목2
본문
- 리스트1
- 리스트2
## 제목1 <p><br></p> 본문 <p><br></p> <p><br></p> ## 제목2 - 리스트1 - 리스트2 본문 <p><br></p> <p><br></p> ## 제목2 <p><br></p> 본문 - 리스트1 - 리스트2
제목1
본문
제목2
- 리스트1
- 리스트2
본문
제목2
본문
- 리스트1
- 리스트2
변환기 소스
md_convert.py:
# -*- coding: utf-8 -*-
#!/usr/bin/python
import sys
DOUBLE_BR_BEFORE_HEADER = True
STATUS_START = 0
STATUS_NONE = 1
STATUS_LIST = 2
STATUS_PRE = 3
STATUS_HEADER = 4
LINE_BR = "<p><br></p>\n"
def print_usage():
print("usage: python md_convert.py [option]")
print("Options:")
print("-i input-file : 지정된 입력 파일을 사용하여 변환을 하고 입력 파일을 덮어씁니다.")
print("-i input-file output-file : 지정된 입력 파일과 출력 파일을 사용하여 변환을 합니다.")
def is_ol_item(str):
pos = str.find(". ")
if pos == -1:
return False
return str[:pos].isdigit()
def go_convert(config):
filename_in = config["filename_in"]
filename_out = config["filename_in"]
if "filename_out" in config:
filename_out = config["filename_out"]
print("\nconverting %s.." % filename_in)
file_in = open(filename_in, 'r', encoding = "utf-8")
all_line = []
for line in file_in:
all_line.append(line)
file_in.close()
all_line_new = []
insidePre = False
status = STATUS_START
status_old = status
for line in all_line:
status_old = status
line_strip = line.lstrip()
if len(line_strip) > 0:
if insidePre:
if line_strip[:5] == "</pre":
insidePre = False
else:
if line_strip[:4] == "<pre":
insidePre = True
status = STATUS_PRE
elif line_strip[:1] == "-" or is_ol_item(line_strip):
status = STATUS_LIST
elif line_strip[:1] == "#":
status = STATUS_HEADER
else:
status = STATUS_NONE
if DOUBLE_BR_BEFORE_HEADER and status == STATUS_HEADER and status_old != STATUS_START:
all_line_new.append(LINE_BR)
if status_old == STATUS_NONE:
if status == STATUS_HEADER:
all_line_new.append(LINE_BR)
elif status_old == STATUS_HEADER:
if status == STATUS_NONE:
all_line_new.append(LINE_BR)
if status == STATUS_HEADER:
all_line_new.append(LINE_BR)
all_line_new.append(line)
file_out = open(filename_out, 'w', encoding = "utf-8")
for line in all_line_new:
file_out.write(line)
file_out.close()
print("end")
config = {}
if len(sys.argv) >= 2:
if sys.argv[1] == "-i":
if len(sys.argv) == 3:
config['filename_in'] = sys.argv[2]
go_convert(config)
else:
config['filename_in'] = sys.argv[2]
config['filename_out'] = sys.argv[3]
go_convert(config)
else:
print_usage()
else:
print_usage()
사용 방법
사용 방법: python md_convert.py [옵션] 옵션: -i input-file : 지정된 입력 파일을 사용하여 변환을 하고 입력 파일을 덮어씁니다. -i input-file output-file : 지정된 입력 파일과 출력 파일을 사용하여 변환을 합니다.
PS2. 추가 작업 후보 : 소스 md에 줄바꿈이 있을 때만 추가적인 줄바꿈 삽입
'1. 연구 모듈 > Python' 카테고리의 다른 글
| [Python] 인스턴스 메소드 vs. 정적 메소드 vs. 클래스 메소드 요약 (0) | 2020.09.21 |
|---|---|
| [Python] 클래스 변수 vs. 인스턴스 변수 요약 (0) | 2020.08.31 |
| [Python] Pymunk 사용 예제 - 2. PyMunk + pyGame 기본 예제 (1) (0) | 2018.09.03 |
| [Python] Pymunk 사용 예제 - 1. 기본 예제 (0) | 2018.09.01 |
| [Python] 파이썬 3에서 문자열 처리 (0) | 2018.02.07 |


