Skip to content
This repository was archived by the owner on Nov 1, 2017. It is now read-only.

Commit 9095980

Browse files
committed
Filter LIs in reverse
I'm almost certain what's happening is that as we filter each XPath query result, modifications are invalidating other elements needing to be updated within the same tree, for example nested Task Lists. This is the most direct fix, but far from the most elegant.
1 parent ec81d44 commit 9095980

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

lib/task_list/filter.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ def task_lists
113113
def filter_list(node)
114114
add_css_class(node, 'task-list')
115115

116-
node.xpath(ItemSelector).each do |li|
116+
node.xpath(ItemSelector).reverse.each do |li|
117117
outer, inner =
118118
if p = li.xpath(ItemParaSelector)[0]
119119
[p, p.inner_html]
@@ -122,7 +122,8 @@ def filter_list(node)
122122
end
123123
if match = (inner.chomp =~ ItemPattern && $1)
124124
item = TaskList::Item.new(match, inner)
125-
task_list_items << item
125+
# prepend because we're iterating in reverse
126+
task_list_items.unshift item
126127

127128
add_css_class(li, 'task-list-item')
128129
outer.inner_html = render_task_list_item(item)

0 commit comments

Comments
 (0)