9999# To automatically enable TaskLists, add the `js-task-list-enable` class to the
100100# `js-task-list-container`.
101101
102- incomplete = " [ ]"
103- incompleteNBSP = " [\xC2\xA0 ]"
104- complete = " [x]"
102+ incomplete = " [ ]"
103+ complete = " [x]"
105104
106- escape = (str ) ->
107- str .replace (/ ([\[\] ] )/ g , " \\ $1" )
105+ # Escapes the String for regular expression matching.
106+ escapePattern = (str ) ->
107+ str.
108+ replace (/ ([\[\] ] )/ g , " \\ $1" ). # escape square brackets
109+ replace (/ \s / , " \\ s" ) # match all white space
110+
111+ incompletePattern = ///
112+ #{ escapePattern (incomplete)}
113+ ///
114+ completePattern = ///
115+ #{ escapePattern (complete)}
116+ ///
108117
109118# Pattern used to identify all task list items.
110119# Useful when you need iterate over all items.
@@ -113,9 +122,8 @@ itemPattern = ///
113122 (?:\s * [-+*] | (?:\d + \. ))? # optional list prefix
114123 \s * # optional whitespace prefix
115124 ( # checkbox
116- #{ escape (complete)} |
117- #{ escape (incomplete)} |
118- #{ escape (incompleteNBSP)}
125+ #{ escapePattern (complete)} |
126+ #{ escapePattern (incomplete)}
119127 )
120128 (?=\s ) # followed by whitespace
121129///
@@ -137,9 +145,8 @@ codeFencesPattern = ///
137145itemsInParasPattern = ///
138146 ^
139147 (
140- #{ escape (complete)} |
141- #{ escape (incomplete)} |
142- #{ escape (incompleteNBSP)}
148+ #{ escapePattern (complete)} |
149+ #{ escapePattern (incomplete)}
143150 )
144151 . +
145152 $
@@ -159,9 +166,9 @@ updateTaskListItem = (source, itemIndex, checked) ->
159166 if index == itemIndex
160167 line =
161168 if checked
162- line .replace (incomplete, complete). replace (incompleteNBSP , complete)
169+ line .replace (incompletePattern , complete)
163170 else
164- line .replace (complete , incomplete)
171+ line .replace (completePattern , incomplete)
165172 line
166173 result .join (" \n " )
167174
0 commit comments