diff --git a/.themes/classic/plugins/include_code.rb b/.themes/classic/plugins/include_code.rb index 905cee5..b063f14 100644 --- a/.themes/classic/plugins/include_code.rb +++ b/.themes/classic/plugins/include_code.rb @@ -1,3 +1,18 @@ +# Title: Include Code Tag for Jekyll +# Author: Brandon Mathis http://brandonmathis.com +# Description: Import files on your filesystem into any blog post as embedded code snippets with syntax highlighting and a download link. +# Configuration: You can set default import path in _config.yml (defaults to code_dir: downloads/code) +# +# Syntax {% include_code path/to/file %} +# +# Example: +# {% include_code javascripts/test.js %} +# +# This will import test.js from source/downloads/code/javascripts/test.js +# and output the contents in a syntax highlighted code block inside a figure, +# with a figcaption listing the file name and download link +# + require 'pathname' module Jekyll diff --git a/.themes/classic/plugins/include_file.rb b/.themes/classic/plugins/include_file.rb deleted file mode 100644 index 3862228..0000000 --- a/.themes/classic/plugins/include_file.rb +++ /dev/null @@ -1,31 +0,0 @@ -require 'pathname' - -module Jekyll - - class IncludePartialTag < 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('include_partial', Jekyll::IncludePartialTag) - diff --git a/.themes/classic/plugins/render_partial.rb b/.themes/classic/plugins/render_partial.rb new file mode 100644 index 0000000..96de97e --- /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)