lib/jekyll-toc.rb in jekyll-toc-0.4.0 vs lib/jekyll-toc.rb in jekyll-toc-0.5.0.rc
- old
+ new
@@ -1,32 +1,42 @@
require 'nokogiri'
require 'table_of_contents/parser'
module Jekyll
+ class TocTag < Liquid::Tag
+ def render(context)
+ return unless context.registers[:page]['toc'] == true
+ content_html = context.registers[:page].content
+ ::Jekyll::TableOfContents::Parser.new(content_html).build_toc
+ end
+ end
+
module TableOfContentsFilter
def toc_only(html)
- return html unless page['toc']
-
- ::Jekyll::TableOfContents::Parser.new(html).build_toc
+ return html unless toc_enabled?
+ ::Jekyll::TableOfContents::Parser.new(html, toc_config).build_toc
end
def inject_anchors(html)
- return html unless page['toc']
-
- ::Jekyll::TableOfContents::Parser.new(html).inject_anchors_into_html
+ return html unless toc_enabled?
+ ::Jekyll::TableOfContents::Parser.new(html, toc_config).inject_anchors_into_html
end
def toc(html)
- return html unless page['toc']
-
- ::Jekyll::TableOfContents::Parser.new(html).toc
+ return html unless toc_enabled?
+ ::Jekyll::TableOfContents::Parser.new(html, toc_config).toc
end
private
- def page
- @context.registers[:page]
+ def toc_enabled?
+ @context.registers[:page]['toc'] == true
end
+
+ def toc_config
+ @context.registers[:site].config["toc"]
+ end
end
end
Liquid::Template.register_filter(Jekyll::TableOfContentsFilter)
+# Liquid::Template.register_tag('toc', Jekyll::TocTag) # will be enabled at v1.0