def ulist node
result = []
id_attribute = node.id ? %( id="#{node.id}") : nil
div_classes = ['ulist', node.style, node.role].compact
marker_checked = nil
marker_unchecked = nil
if (checklist = node.option? 'checklist')
div_classes.unshift div_classes.shift, 'checklist'
ul_class_attribute = ' class="checklist"'
if node.option? 'interactive'
if @xml_mode
marker_checked = '<input type="checkbox" data-item-complete="1" checked="checked"/> '
marker_unchecked = '<input type="checkbox" data-item-complete="0"/> '
else
marker_checked = '<input type="checkbox" data-item-complete="1" checked> '
marker_unchecked = '<input type="checkbox" data-item-complete="0"> '
end
else
if node.document.attr? 'icons', 'font'
marker_checked = '<i class="fa fa-check-square-o"></i> '
marker_unchecked = '<i class="fa fa-square-o"></i> '
else
marker_checked = '✓ '
marker_unchecked = '❏ '
end
end
else
ul_class_attribute = node.style ? %( class="#{node.style}") : nil
end
result << %(<div#{id_attribute} class="#{div_classes * ' '}">)
result << %(<div class="title">#{node.title}</div>) if node.title?
result << %(<ul#{ul_class_attribute}>)
node.items.each do |item|
result << '<li>'
if checklist && (item.attr? 'checkbox')
result << %(<p>#{(item.attr? 'checked') ? marker_checked : marker_unchecked}#{item.text}</p>)
else
result << %(<p>#{item.text}</p>)
end
result << item.content if item.blocks?
result << '</li>'
end
result << '</ul>'
result << '</div>'
result * LF
end