class Weaver::Code

Public Class Methods

new(page, anchors, lang) click to toggle source
# File lib/weaver/element_types/code.rb, line 5
def initialize(page, anchors, lang)
  @page = page
  @anchors = anchors
  @content = ''
  @options = {}

  codeArray = @anchors['code']

  @anchors['code'] = [] unless @anchors['code']

  codeArray = @anchors['code']

  @codeName = "code#{codeArray.length}"
  codeArray << @codeName

  @page.request_css 'css/plugins/codemirror/codemirror.css'
  @page.request_js 'js/plugins/codemirror/codemirror.js'

  language lang
end

Public Instance Methods

content(text) click to toggle source
# File lib/weaver/element_types/code.rb, line 41
def content(text)
  @content = text
end
generate() click to toggle source
# File lib/weaver/element_types/code.rb, line 68
def generate
  content = @content
  codeName = @codeName

  elem = Elements.new(@page, @anchors)

  elem.instance_eval do
    textarea id: codeName do
      text content
    end
  end

  elem.generate
end
generate_script() click to toggle source
# File lib/weaver/element_types/code.rb, line 51
    def generate_script
      @options[:lineNumbers] ||= true
      @options[:matchBrackets] ||= true
      @options[:styleActiveLine] ||= true
      @options[:mode] ||= 'javascript'
      @options[:readOnly] ||= true

      <<-CODESCRIPT
                $(document).ready(function()
                {
                        CodeMirror.fromTextArea(document.getElementById("#{@codeName}"),
                                JSON.parse('#{@options.to_json}')
                        );
            });
      CODESCRIPT
    end
language(lang) click to toggle source
# File lib/weaver/element_types/code.rb, line 26
def language(lang)
  # TODO: improve langmap
  langmap = {
    javascript: { mime: 'text/javascript', file: 'javascript/javascript' }
  }

  if langmap[lang]
    @options[:mode] = langmap[lang][:mime]
    @page.request_js "js/plugins/codemirror/mode/#{langmap[lang][:file]}.js"
  else
    @options[:mode] = "text/x-#{lang}"
    @page.request_js "js/plugins/codemirror/mode/#{lang}/#{lang}.js"
  end
end
theme(name) click to toggle source
# File lib/weaver/element_types/code.rb, line 45
def theme(name)
  @options[:theme] = name

  @page.request_css "css/plugins/codemirror/#{name}.css"
end