module Jekyll::CodeExampleTags

Public Class Methods

buttons_markup(examples, context) click to toggle source
# File lib/pulsar-jekyll-code-example.rb, line 34
    def self.buttons_markup(examples, context)
      site = context['site']
      buttons_class = site['code_example_buttons_class'] ? site['code_example_buttons_class'] : 'buttons'
      button_class = site['code_example_button_class'] ? site['code_example_button_class'] : 'button'
      list_class = site['code_example_list_class'] ? site['code_example_list_class'] : 'code-tab'
      menu_items = ""

      examples_reverse = Hash[examples.to_a.reverse]

      examples_reverse.each_key do |lang|

            menu_items << "<li class='#{list_class}'><a href='#' class='#{button_class}' target='#{lang}'>#{lang.capitalize}</a></li>"
      end
      <<EOF
            <div class="#{buttons_class} examples">
              <ul class="#{list_class}">
                #{menu_items}
              </ul>
            </div>
EOF
    end
code_example_dir(site) click to toggle source
# File lib/pulsar-jekyll-code-example.rb, line 7
def self.code_example_dir(site) 
  site.fetch('code_example_dir', 'code_examples')
end
code_examples(context_path, example_name, site) click to toggle source

Returns a hash of available code examples (per language) for the provided example name

# File lib/pulsar-jekyll-code-example.rb, line 12
def self.code_examples(context_path, example_name, site)
  # Collect all relevant files
  examples_root = File.join(code_example_dir(site), context_path)

  code_folders = Dir.entries(examples_root).select do |entry|
    File.directory? File.join(examples_root, entry) and !(entry =='.' || entry == '..')
  end

  examples = {}
  code_folders.each do |lang|
    code_folder = File.join(examples_root, lang)
    example_file = Dir.entries(code_folder).find do |entry|
      File.file? File.join(code_folder, entry) and entry == example_name
    end
    if example_file
      examples[lang] = File.join(code_folder, example_file)
    end
  end

  examples
end
example_markup(language, content) click to toggle source
# File lib/pulsar-jekyll-code-example.rb, line 56
    def self.example_markup(language, content)
      he = HTMLEntities.new
      <<EOF
          <div class="example language-#{language} #{language}">
            <pre class="prettyprint lang-#{language}"><code data-lang="#{language}">#{he.encode(content)}</code></pre>
          </div>
EOF

    end
get_example_name_and_context(example_string) click to toggle source
# File lib/pulsar-jekyll-code-example.rb, line 70
def self.get_example_name_and_context(example_string)
  example_string.strip! 
  if example_string.include?('/')
    example_arr = example_string.split('/')
    example_name = example_arr.delete_at(-1)
    context_path = example_arr.join(File::SEPARATOR) + File::SEPARATOR 
  else
    context_path = ''
    example_name = example_string
  end

  return context_path, example_name
end
wrap_examples_div(content) click to toggle source
# File lib/pulsar-jekyll-code-example.rb, line 66
def self.wrap_examples_div(content)
  "<div class='code-examples'>#{content}</div>"
end