aboutsummaryrefslogtreecommitdiff
path: root/_plugins/iterator.rb
diff options
context:
space:
mode:
authorBrandon Mathis <brandon@imathis.com>2011-05-30 00:30:16 -0400
committerBrandon Mathis <brandon@imathis.com>2011-05-30 00:30:16 -0400
commit8698a276f937cb1cd6f67f7f213e2ea438500d7e (patch)
tree3963ed8f9750cd565087ce54fe8de38d9f5c606d /_plugins/iterator.rb
parentc7d5365f81552cae16bbb91696ca3e67b4a0a2e9 (diff)
downloadmy_new_personal_website-8698a276f937cb1cd6f67f7f213e2ea438500d7e.tar.xz
my_new_personal_website-8698a276f937cb1cd6f67f7f213e2ea438500d7e.zip
Cleaned out public from repository, updated gitignore, added syntax
highlighting tests, improved syntax highlighting and styling of pre blocks. Overriding dynamic gist styling. Added a plugin for pygments caching which should speed things up terrifically. added ender.js as a lightweight way of scripting the DOM, events, etc. Some general typography and semantic html improvements.
Diffstat (limited to '_plugins/iterator.rb')
-rw-r--r--_plugins/iterator.rb49
1 files changed, 49 insertions, 0 deletions
diff --git a/_plugins/iterator.rb b/_plugins/iterator.rb
new file mode 100644
index 00000000..da0b5f0a
--- /dev/null
+++ b/_plugins/iterator.rb
@@ -0,0 +1,49 @@
+##
+## Author: Jose Gonzalez - https://github.com/josegonzalez
+## Source URL: https://github.com/josegonzalez/josediazgonzalez.com/blob/master/_plugins/iterator.rb
+##
+
+#module Jekyll
+ #class Site
+ #alias_method :orig_site_payload, :site_payload
+
+ ## Constuct an array of hashes that will allow the user, using Liquid, to
+ ## iterate through the keys of _kv_hash_ and be able to iterate through the
+ ## elements under each key.
+ ##
+ ## Example:
+ ## categories = { 'Ruby' => [<Post>, <Post>] }
+ ## make_iterable(categories, :index => 'name', :items => 'posts')
+ ## Will allow the user to iterate through all categories and then iterate
+ ## though each post in the current category like so:
+ ## {% for category in site.categories %}
+ ## h1. {{ category.name }}
+ ## <ul>
+ ## {% for post in category.posts %}
+ ## <li>{{ post.title }}</li>
+ ## {% endfor %}
+ ## </ul>
+ ## {% endfor %}
+ ##
+ ## Returns [ {<index> => <kv_hash_key>, <items> => kv_hash[<kv_hash_key>]}, ... ]
+
+ #def make_iterable(kv_hash, options)
+ #options = {:index => 'name', :items => 'items'}.merge(options)
+ #result = []
+ #kv_hash.sort.each do |key, value|
+ #result << { options[:index] => key, options[:items] => value }
+ #end
+ #result
+ #end
+
+ #def site_payload
+ #payload = orig_site_payload
+ #payload['site']['iterable'].merge!({
+ #'categories' => make_iterable(self.categories, :index => 'name', :items => 'posts'),
+ #'tags' => make_iterable(self.tags, :index => 'name', :items => 'posts')
+ #})
+ #payload
+ #end
+
+ #end
+#end