aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/config_tag.rb29
1 files changed, 29 insertions, 0 deletions
diff --git a/plugins/config_tag.rb b/plugins/config_tag.rb
new file mode 100644
index 00000000..b071b181
--- /dev/null
+++ b/plugins/config_tag.rb
@@ -0,0 +1,29 @@
+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')
+ 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}'"
+ 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}'"
+ end
+ end
+ tag += "></#{@tag}>"
+ p tag
+ tag
+ end
+end
+
+Liquid::Template.register_tag('config_tag', ConfigTag)