1
0
mirror of https://github.com/tabler/tabler.git synced 2025-12-22 09:54:24 +04:00
Files
tabler/pages/_plugins/jekyll-capture.rb
2020-02-16 21:51:07 +01:00

80 lines
1.8 KiB
Ruby

module Jekyll
module Tags
class CaptureGlobal < Liquid::Block
def initialize(tag_name, text, tokens)
super
@text = text.strip
end
def render(context)
unless $captured_global[@text]
$captured_global[@text] = [];
end
$captured_global[@text].push(super.strip)
''
end
end
class CaptureScripts < Liquid::Tag
def initialize(tag_name, text, tokens)
super
@text = text.strip
end
def render(context)
unless $captured_libs.include? @text
$captured_libs.push(@text)
end
''
end
end
class CaptureOnce < Liquid::Block
def initialize(tag_name, text, tokens)
super
@text = text.strip
end
def render(context)
if $captured_once[@text] === nil
$captured_once[@text] = [];
end
data = super.strip
unless $captured_once[@text].include?(data)
$captured_once[@text].push(data);
end
''
end
end
end
Jekyll::Hooks.register [:pages, :docs], :post_init do |page|
$captured_global = {}
$captured_once = {}
$captured_libs = []
end
Jekyll::Hooks.register [:pages, :docs], :post_render do |page|
$captured_global = {}
$captured_once = {}
$captured_libs = []
end
Jekyll::Hooks.register [:pages, :docs], :pre_render do |page, jekyll|
jekyll.site['captured_global'] = $captured_global
jekyll.site['captured_once'] = $captured_once
jekyll.site['captured_libs'] = $captured_libs
end
end
Liquid::Template.register_tag('capture_global', Jekyll::Tags::CaptureGlobal)
Liquid::Template.register_tag('capture_once', Jekyll::Tags::CaptureOnce)
Liquid::Template.register_tag('append_lib', Jekyll::Tags::CaptureScripts)