From d94679eab0ef10ad4c795d1a097fb869bd7576cb Mon Sep 17 00:00:00 2001 From: liguangsheng <670118818@qq.com> Date: Fri, 24 Jun 2016 04:02:10 +0200 Subject: [PATCH 1/2] add extra tasklist --- lib/markdown2.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/lib/markdown2.py b/lib/markdown2.py index bfe9abb5..b6502ba9 100755 --- a/lib/markdown2.py +++ b/lib/markdown2.py @@ -1508,15 +1508,18 @@ def _do_lists(self, text): (\n)? # leading line = \1 (^[ \t]*) # leading whitespace = \2 (?P%s) [ \t]+ # list marker = \3 - ((?:.+?) # list item text = \4 - (\n{1,2})) # eols = \5 + (\[[\ x]\])[ \t]+ # tasklist marker = \4 + ((?:.+?) # list item text = \5 + (\n{1,2})) # eols = \6 (?= \n* (\Z | \2 (?P%s) [ \t]+)) ''' % (_marker_any, _marker_any), re.M | re.X | re.S) + _task_list_warpper_str = r'''

%s

''' + _last_li_endswith_two_eols = False def _list_item_sub(self, match): - item = match.group(4) + item = match.group(5) leading_line = match.group(1) if leading_line or "\n\n" in item or self._last_li_endswith_two_eols: item = self._run_block_gamut(self._outdent(item)) @@ -1526,7 +1529,13 @@ def _list_item_sub(self, match): if item.endswith('\n'): item = item[:-1] item = self._run_span_gamut(item) - self._last_li_endswith_two_eols = (len(match.group(5)) == 2) + self._last_li_endswith_two_eols = (len(match.group(6)) == 2) + if "tasklist" in self.extras: + task_list_marker = match.group(4) + if task_list_marker == '[x]': + item = self._task_list_warpper_str % ('checked ', item) + elif task_list_marker == '[ ]': + item = self._task_list_warpper_str % ('', item) return "
  • %s
  • \n" % item def _process_list_items(self, list_str): From 12a995d2ec5f1ca8065cc4126c079b95620a6d5a Mon Sep 17 00:00:00 2001 From: liguangsheng <670118818@qq.com> Date: Fri, 24 Jun 2016 04:11:21 +0200 Subject: [PATCH 2/2] add li class 'task-list-item' --- lib/markdown2.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/markdown2.py b/lib/markdown2.py index b6502ba9..19ed5512 100755 --- a/lib/markdown2.py +++ b/lib/markdown2.py @@ -1515,7 +1515,12 @@ def _do_lists(self, text): ''' % (_marker_any, _marker_any), re.M | re.X | re.S) - _task_list_warpper_str = r'''

    %s

    ''' + _task_list_warpper_str = r'''
  • +

    + %s +

    +
  • +''' _last_li_endswith_two_eols = False def _list_item_sub(self, match): @@ -1533,10 +1538,11 @@ def _list_item_sub(self, match): if "tasklist" in self.extras: task_list_marker = match.group(4) if task_list_marker == '[x]': - item = self._task_list_warpper_str % ('checked ', item) + return self._task_list_warpper_str % ('checked ', item) elif task_list_marker == '[ ]': - item = self._task_list_warpper_str % ('', item) - return "
  • %s
  • \n" % item + return self._task_list_warpper_str % ('', item) + else: + return "
  • %s
  • \n" % item def _process_list_items(self, list_str): # Process the contents of a single ordered or unordered list,