From 05db158fec6d4c2ba3b558f2b83a0addb7f55b34 Mon Sep 17 00:00:00 2001 From: Brandon Mathis Date: Mon, 11 Mar 2013 01:19:35 -0500 Subject: [PATCH] Improved: config_tag plugin is much more flexible now and can be used by other plugins directly through the config_tag method --- plugins/config_tag.rb | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/plugins/config_tag.rb b/plugins/config_tag.rb index b071b18..92d1f63 100644 --- a/plugins/config_tag.rb +++ b/plugins/config_tag.rb @@ -3,27 +3,42 @@ require 'json' class ConfigTag < Liquid::Tag def initialize(tag_name, options, tokens) super - @options = options.split(' ').map {|i| i.strip } - @key = @options.first - @tag = (@options[1] || 'div') + options = options.split(' ').map {|i| i.strip } + @key = options.slice!(0) + @tag = nil + @classname = nil + options.each do |option| + @tag = $1 if option =~ /tag:(\S+)/ + @classname = $1 if option =~ /classname:(\S+)/ + end end def render(context) - config = context.registers[:site].config - options = @options.first.split('.').map { |k| config = config[k] }.last #reference objects with dot notation - keyclass = @key.sub(/_/, '-').sub(/\./, '-') - tag = "<#{@tag} class='#{keyclass}'" + config_tag(context.registers[:site].config, @key, @tag, @classname) + end +end + +def config_tag(config, key, tag=nil, classname=nil) + options = key.split('.').map { |k| config[k] }.last #reference objects with dot notation + tag ||= 'div' + classname ||= key.sub(/_/, '-').sub(/\./, '-') + output = "<#{tag} class='#{classname}'" + + if options.respond_to? 'keys' options.each do |k,v| unless v.nil? v = v.join ',' if v.respond_to? 'join' v = v.to_json if v.respond_to? 'keys' - tag += " data-#{k.sub'_','-'}='#{v}'" + output += " data-#{k.sub'_','-'}='#{v}'" end end - tag += ">" - p tag - tag + elsif options.respond_to? 'join' + output += " data-value='#{config[key].join(',')}'" + else + output += " data-value='#{config[key]}'" end + output += ">" end Liquid::Template.register_tag('config_tag', ConfigTag) +