aboutsummaryrefslogtreecommitdiff
path: root/.themes/classic/plugins/render_partial.rb
diff options
context:
space:
mode:
authorBrandon Mathis <brandon@imathis.com>2011-07-18 17:04:56 -0400
committerBrandon Mathis <brandon@imathis.com>2011-07-18 17:04:56 -0400
commit1fd21a6e254cecc10a6ae05106bfa0f665a4d90d (patch)
tree88bd95d117e7bab3ffc925895ad243d74c71984e /.themes/classic/plugins/render_partial.rb
parent64b23d9f34f140b8e544960070525343dfe1273b (diff)
downloadmy_new_personal_website-1fd21a6e254cecc10a6ae05106bfa0f665a4d90d.tar.xz
my_new_personal_website-1fd21a6e254cecc10a6ae05106bfa0f665a4d90d.zip
Renamed include_file plugin to render_partial, added documentation to include_code and render_partial
Diffstat (limited to '.themes/classic/plugins/render_partial.rb')
-rw-r--r--.themes/classic/plugins/render_partial.rb52
1 files changed, 52 insertions, 0 deletions
diff --git a/.themes/classic/plugins/render_partial.rb b/.themes/classic/plugins/render_partial.rb
new file mode 100644
index 00000000..96de97ea
--- /dev/null
+++ b/.themes/classic/plugins/render_partial.rb
@@ -0,0 +1,52 @@
+# Title: Render Partial Tag for Jekyll
+# Author: Brandon Mathis http://brandonmathis.com
+# Description: Import files on your filesystem into any blog post and render them inline.
+# Note: Paths are relative to the source directory
+#
+# Syntax {% render_partial path/to/file %}
+#
+# Example 1:
+# {% render_partial about/_bio.markdown %}
+#
+# This will import source/about/_bio.markdown and render it inline.
+# In this example I used an underscore at the beginning of the filename to prevent Jekyll
+# from generating an about/bio.html (Jekyll doesn't convert files beginning with underscores)
+#
+# Example 2:
+# {% render_partial ../README.markdown %}
+#
+# You can use relative pathnames, to include files outside of the source directory.
+# This might be useful if you want to have a page for a project's README without having
+# to duplicated the contents
+#
+
+require 'pathname'
+
+module Jekyll
+
+ class RenderPartialTag < Liquid::Tag
+ def initialize(tag_name, file, tokens)
+ super
+ @file = file.strip
+ end
+
+ def render(context)
+ file_dir = (context.registers[:site].source || 'source')
+ file_path = Pathname.new(file_dir).expand_path
+ file = file_path + @file
+
+ unless file.file?
+ return "File #{file} could not be found"
+ end
+
+ Dir.chdir(file_path) do
+ partial = Liquid::Template.parse(file.read)
+ context.stack do
+ partial.render(context)
+ end
+ end
+ end
+ end
+end
+
+Liquid::Template.register_tag('render_partial', Jekyll::RenderPartialTag)