Make floated TOCs in wikis compatible with the Liquid engine

The floated tags (>toc and <toc) are invalid syntax because of the < and >
characters. We transform them to toc_left and toc_right instead.
This commit is contained in:
Holger Just 2011-12-17 22:07:52 +01:00
parent 7458bca34b
commit e2c57fd12d
3 changed files with 18 additions and 3 deletions

View File

@ -740,7 +740,7 @@ module ApplicationHelper
end
end
TOC_RE = /<p>\{\{([<>]?)toc\}\}<\/p>/i unless const_defined?(:TOC_RE)
TOC_RE = /<p>\{%\s*toc(_right|_left)?\s*%\}<\/p>/i unless const_defined?(:TOC_RE)
# Renders the TOC with given headings
def replace_toc(text, headings)
@ -749,8 +749,8 @@ module ApplicationHelper
''
else
div_class = 'toc'
div_class << ' right' if $1 == '>'
div_class << ' left' if $1 == '<'
div_class << ' right' if $1 == '_right'
div_class << ' left' if $1 == '_left'
out = "<fieldset class='header_collapsible collapsible'><legend onclick='toggleFieldset(this);'></legend><div>"
out << "<ul class=\"#{div_class}\"><li>"
root = headings.map(&:first).min

View File

@ -63,5 +63,11 @@ module ChiliProject
Legacy.add('child_pages', :tag)
Legacy.add('hello_world', :tag)
Legacy.add('include', :tag)
# Transform the old textile TOC tags to syntax suported by liquid
Legacy.add('toc', :tag)
Legacy.add('>toc', :tag, "toc_right")
Legacy.add('<toc', :tag, "toc_left")
end
end

View File

@ -28,6 +28,15 @@ module ChiliProject::Liquid
register_tag('include', Include, :html => true)
register_tag('tag_list', TagList, :html => true)
register_tag('variable_list', VariableList, :html => true)
# Output these tags again as they were typed
# These are to be handled later
register_tag('toc', Identity, :html => true)
register_tag('toc_left', Identity, :html => true)
register_tag('toc_right', Identity, :html => true)
# See ChiliProject::Liquid::Legacy for the definition of legacy tags,
# most of which are also defined here
end
end