Body class plugin for fun
Project: http://git-wip-us.apache.org/repos/asf/drill/repo Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/f2414032 Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/f2414032 Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/f2414032 Branch: refs/heads/gh-pages Commit: f24140322a8a901532e91e03ba93ab7ee3980c6d Parents: cc1c444 Author: Elliot Berry <[email protected]> Authored: Fri May 29 11:29:27 2015 -0400 Committer: Elliot Berry <[email protected]> Committed: Fri May 29 11:29:27 2015 -0400 ---------------------------------------------------------------------- _layouts/default.html | 2 +- _plugins/bodyClass.rb | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/drill/blob/f2414032/_layouts/default.html ---------------------------------------------------------------------- diff --git a/_layouts/default.html b/_layouts/default.html index ccb47db..4059872 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -3,7 +3,7 @@ {% include head.html %} -<body onResize="resized();"> +<body onResize="resized();" class="{% body_class %}"> <div class="page-wrap"> {% include menu.html %} {{ content }} http://git-wip-us.apache.org/repos/asf/drill/blob/f2414032/_plugins/bodyClass.rb ---------------------------------------------------------------------- diff --git a/_plugins/bodyClass.rb b/_plugins/bodyClass.rb new file mode 100644 index 0000000..876121f --- /dev/null +++ b/_plugins/bodyClass.rb @@ -0,0 +1,34 @@ +class BodyClassTag < Liquid::Tag + + def generate_body_class(prefix, id) + id = id.gsub(/\.\w*?$/, '').gsub(/[-\/]/, '_').gsub(/^_/, '') # Remove extension from url, replace '-' and '/' with underscore, Remove leading '_' + + case prefix + when "class" + prefix = "" + else + prefix = "#{prefix}_" + end + + "#{prefix}#{id}" + end + + def render(context) + page = context.environments.first["page"] + classes = [] + + %w[class url categories tags layout].each do |prop| + next unless page.has_key?(prop) + if page[prop].kind_of?(Array) + page[prop].each { |proper| classes.push generate_body_class(prop, proper) } + else + classes.push generate_body_class(prop, page[prop]) + end + end + + classes.join(" ") + end + +end + +Liquid::Template.register_tag('body_class', BodyClassTag) \ No newline at end of file
