Sha256: 842df6dfa1cf8d45437aa5c9d464d119bd84801c36d9399a6b286dd8a0de3e9f

Contents?: true

Size: 1.16 KB

Versions: 25

Compression:

Stored size: 1.16 KB

Contents

require 'wunderbar'
require 'coderay'
require 'nokogiri'

# workaround for https://github.com/rubychan/coderay/pull/159
module CodeRay::PluginHost
  alias_method :old_plugin_path, :plugin_path
  def plugin_path *args
    args.first.untaint if args.first == CodeRay::CODERAY_PATH
    old_plugin_path(*args)
  end
end

module Wunderbar
  class HtmlMarkup
    def _coderay(*args)

      # allow arguments in any order, disambiguate based on type
      lang, string, attrs = :ruby, '', {}
      args.each do |arg|
        case arg
          when Symbol; lang = arg
          when String; string = arg
          when Hash;   attrs = arg
        end
      end

      base = _{ CodeRay.scan(CDATANode.normalize(string), lang).div }

      # remove wrapping divs
      while base.length == 1 and base.first.name == 'div'
        div = base.first.parent.children.pop
        div.children.each {|child| child.parent = base.first.parent}
        base.first.parent.children += base.first.children
        base = div.children
      end

      # add attrs provided to pre element
      if base.length == 1 and base.first.name == 'pre'
        base.first.attrs.merge! attrs
      end
    end
  end
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
wunderbar-1.3.4 lib/wunderbar/coderay.rb
wunderbar-1.3.3 lib/wunderbar/coderay.rb
wunderbar-1.3.2 lib/wunderbar/coderay.rb
wunderbar-1.3.1 lib/wunderbar/coderay.rb
wunderbar-1.3.0 lib/wunderbar/coderay.rb
wunderbar-1.2.10 lib/wunderbar/coderay.rb
wunderbar-1.2.9 lib/wunderbar/coderay.rb
wunderbar-1.2.8 lib/wunderbar/coderay.rb
wunderbar-1.2.7 lib/wunderbar/coderay.rb
wunderbar-1.2.6 lib/wunderbar/coderay.rb
wunderbar-1.2.5 lib/wunderbar/coderay.rb
wunderbar-1.2.4 lib/wunderbar/coderay.rb
wunderbar-1.2.3 lib/wunderbar/coderay.rb
wunderbar-1.2.2 lib/wunderbar/coderay.rb
wunderbar-1.2.1 lib/wunderbar/coderay.rb
wunderbar-1.2.0 lib/wunderbar/coderay.rb
wunderbar-1.1.2 lib/wunderbar/coderay.rb
wunderbar-1.1.1 lib/wunderbar/coderay.rb
wunderbar-1.1.0 lib/wunderbar/coderay.rb
wunderbar-1.0.28 lib/wunderbar/coderay.rb