diff --git a/docs/_includes/components/navs.html b/docs/_includes/components/navs.html
index ed1f53f616..cd9db235b5 100644
--- a/docs/_includes/components/navs.html
+++ b/docs/_includes/components/navs.html
@@ -5,23 +5,8 @@
Base nav
Roll your own navigation style by extending the base .nav
component. All Bootstrap's nav components are built on top of this. Includes styles for the disabled state, but not the active state.
-
-{% highlight html %}
+
+{% example html %}
-{% endhighlight %}
+{% endexample %}
Classes are used so your markup can be super flexible.
diff --git a/docs/_plugins/highlight_alt.rb b/docs/_plugins/highlight_alt.rb
new file mode 100644
index 0000000000..de84e759da
--- /dev/null
+++ b/docs/_plugins/highlight_alt.rb
@@ -0,0 +1,80 @@
+module Jekyll
+ module Tags
+ class ExampleBlock < Liquid::Block
+ include Liquid::StandardFilters
+
+ # The regular expression syntax checker. Start with the language specifier.
+ # Follow that by zero or more space separated options that take one of three
+ # forms: name, name=value, or name="
"
+ #
+ # is a space-separated list of numbers
+ SYNTAX = /^([a-zA-Z0-9.+#-]+)((\s+\w+(=(\w+|"([0-9]+\s)*[0-9]+"))?)*)$/
+
+ def initialize(tag_name, markup, tokens)
+ super
+ if markup.strip =~ SYNTAX
+ @lang = $1.downcase
+ @options = {}
+ if defined?($2) && $2 != ''
+ # Split along 3 possible forms -- key="", key=value, or key
+ $2.scan(/(?:\w="[^"]*"|\w=\w|\w)+/) do |opt|
+ key, value = opt.split('=')
+ # If a quoted list, convert to array
+ if value && value.include?("\"")
+ value.gsub!(/"/, "")
+ value = value.split
+ end
+ @options[key.to_sym] = value || true
+ end
+ end
+ @options[:linenos] = "inline" if @options.key?(:linenos) and @options[:linenos] == true
+ else
+ raise SyntaxError.new <<-eos
+Syntax Error in tag 'highlight' while parsing the following markup:
+
+ #{markup}
+
+Valid syntax: highlight [linenos]
+eos
+ end
+ end
+
+ def render(context)
+ prefix = context["highlighter_prefix"] || ""
+ suffix = context["highlighter_suffix"] || ""
+ code = super.to_s.strip
+
+ output = case context.registers[:site].highlighter
+
+ when 'rouge'
+ render_rouge(code)
+ end
+
+ rendered_output = example(code) + add_code_tag(output)
+ prefix + rendered_output + suffix
+ end
+
+ def example(output)
+ "#{output}
"
+ end
+
+ def render_rouge(code)
+ require 'rouge'
+ formatter = Rouge::Formatters::HTML.new(line_numbers: @options[:linenos], wrap: false)
+ lexer = Rouge::Lexer.find_fancy(@lang, code) || Rouge::Lexers::PlainText
+ code = formatter.format(lexer.lex(code))
+ ""
+ end
+
+ def add_code_tag(code)
+ # Add nested tags to code blocks
+ code = code.sub(/\n*/,'')
+ code = code.sub(/\n*<\/pre>/,"
")
+ code.strip
+ end
+
+ end
+ end
+end
+
+Liquid::Template.register_tag('example', Jekyll::Tags::ExampleBlock)
diff --git a/docs/_plugins/markdown-block.rb b/docs/_plugins/markdown-block.rb
new file mode 100644
index 0000000000..6aa761585d
--- /dev/null
+++ b/docs/_plugins/markdown-block.rb
@@ -0,0 +1,20 @@
+module Jekyll
+ class MarkdownBlock < Liquid::Block
+ alias_method :render_block, :render
+
+ def initialize(tag_name, markup, tokens)
+ super
+ end
+
+ # Uses the default Jekyll markdown parser to
+ # parse the contents of this block
+ #
+ def render(context)
+ site = context.registers[:site]
+ converter = site.getConverterImpl(::Jekyll::Converters::Markdown)
+ converter.convert(render_block(context))
+ end
+ end
+end
+
+Liquid::Template.register_tag('markdown', Jekyll::MarkdownBlock)