mirror of
https://github.com/redmine/redmine.git
synced 2025-11-13 00:36:01 +01:00
Coderay upgraded to 0.9.7 (#5344).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4739 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
69
vendor/gems/coderay-0.9.7/lib/coderay/encoders/json.rb
vendored
Normal file
69
vendor/gems/coderay-0.9.7/lib/coderay/encoders/json.rb
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
($:.unshift '../..'; require 'coderay') unless defined? CodeRay
|
||||
module CodeRay
|
||||
module Encoders
|
||||
|
||||
# = JSON Encoder
|
||||
class JSON < Encoder
|
||||
|
||||
register_for :json
|
||||
FILE_EXTENSION = 'json'
|
||||
|
||||
protected
|
||||
def setup options
|
||||
begin
|
||||
require 'json'
|
||||
rescue LoadError
|
||||
require 'rubygems'
|
||||
require 'json'
|
||||
end
|
||||
@out = []
|
||||
end
|
||||
|
||||
def text_token text, kind
|
||||
{ :type => 'text', :text => text, :kind => kind }
|
||||
end
|
||||
|
||||
def block_token action, kind
|
||||
{ :type => 'block', :action => action, :kind => kind }
|
||||
end
|
||||
|
||||
def finish options
|
||||
@out.to_json
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
if $0 == __FILE__
|
||||
$VERBOSE = true
|
||||
$: << File.join(File.dirname(__FILE__), '..')
|
||||
eval DATA.read, nil, $0, __LINE__ + 4
|
||||
end
|
||||
|
||||
__END__
|
||||
require 'test/unit'
|
||||
$:.delete '.'
|
||||
require 'rubygems' if RUBY_VERSION < '1.9'
|
||||
|
||||
class JSONEncoderTest < Test::Unit::TestCase
|
||||
|
||||
def test_json_output
|
||||
tokens = CodeRay.scan <<-RUBY, :ruby
|
||||
puts "Hello world!"
|
||||
RUBY
|
||||
require 'json'
|
||||
assert_equal [
|
||||
{"type"=>"text", "text"=>"puts", "kind"=>"ident"},
|
||||
{"type"=>"text", "text"=>" ", "kind"=>"space"},
|
||||
{"type"=>"block", "action"=>"open", "kind"=>"string"},
|
||||
{"type"=>"text", "text"=>"\"", "kind"=>"delimiter"},
|
||||
{"type"=>"text", "text"=>"Hello world!", "kind"=>"content"},
|
||||
{"type"=>"text", "text"=>"\"", "kind"=>"delimiter"},
|
||||
{"type"=>"block", "action"=>"close", "kind"=>"string"},
|
||||
{"type"=>"text", "text"=>"\n", "kind"=>"space"}
|
||||
], JSON.load(tokens.json)
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user