class Jekyll::Prism

Constants

LANGUAGE
OPTION_PARAMS

Public Class Methods

new(tag_name, markup, tokens) click to toggle source
Calls superclass method
# File lib/mm-jekyll-prism.rb, line 18
def initialize(tag_name, markup, tokens)
        super
        
        markup = markup.strip
        
        tmp = markup.split(/\s+/, 2) 
        if tmp.count >= 1 then
                param = tmp[0].strip.downcase
                if LANGUAGE =~ param then
                        @language = param
                        if tmp.count == 2 then
                                markup = tmp[1]
                        else
                                return
                        end
                elsif not param.start_with? "file" then
                        syntax_error
                end
        end
        
        
        params = markup.strip.scan(OPTION_PARAMS).to_a
        
        params.each { |x|
                if x.count == 1 || x[1] == nil then
                        name = x[0]
                        
                        if name.eql? "numbering" then
                                @numbering = true
                        else
                                syntax_error
                        end
                elsif x.count == 2 then
                        name = x[0]
                        value = x[1]
                        if name.eql? "file" then
                                @file = value.tr('"', '')
                        elsif name.eql? "highlight" then
                                @highlight = value.tr('"', '')
                        elsif name.eql? "numbering" then
                                @numbering = value.to_i
                elsif name.eql? "host" then
                                @host = value.tr('"', '')
                elsif name.eql? "user" then
                                @user = value.tr('"', '')
            elsif name.eql? "prompt" then
                                @prompt = value.tr('"', '')
                        elsif name.eql? "output" then
                                @output = value.tr('"', '')
                        end
                else
                        syntax_error
                end
        }
end

Public Instance Methods

render(context) click to toggle source
Calls superclass method
# File lib/mm-jekyll-prism.rb, line 81
    def render(context)
            code = super.to_s.strip
            dataline = ""
            
            linenumber = ""
            datastart = ""
            
            language = ""
            
            class_attr = ""
            
            unless @language.nil? then
                    class_attr = class_attr + " language-" + @language + " "
            end
            
            if not @numbering.nil? then
                    class_attr = class_attr + " line-numbers "
            end
            
            if @numbering.is_a? Numeric then
                    datastart = "data-start='#{@numbering}'"
            end
            
            unless @highlight.nil? then
                    dataline = "data-line='#{@highlight}'"
            end
            
        unless @output.nil? then
                    dataline = dataline +  " data-output='#{@output}' "
            end

        unless @prompt.nil? then
    dataline = dataline + " data-prompt='#{@prompt}'"
    class_attr = class_attr + " command-line "                      
end

unless @user.nil? || @host.nil?then
    dataline = dataline + " data-user='#{@user}'"
    dataline = dataline + " data-host='#{@host}'"
    class_attr = class_attr + " command-line "
end

            if @file.nil?
                    "<pre class=\"#{class_attr}\" #{datastart} #{dataline}><code>#{code}</code></pre>"
            else
                    "<pre class='#{class_attr}' #{datastart} #{dataline} data-src='#{@file}'></pre>"
            end
            
    end
syntax_error() click to toggle source
# File lib/mm-jekyll-prism.rb, line 75
def syntax_error
        raise SyntaxError.new(
                "Syntax Error in 'prism' - Valid syntax: prism <lang> [<option>(=<value>)] or prism file=path/to/file [<option>(=<value>)]"
        )
end