class CodeRay::Encoders::JSON

A simple JSON Encoder.

Example:

CodeRay.scan('puts "Hello world!"', :ruby).json

yields

[
  {"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"},
]

Constants

FILE_EXTENSION

Public Instance Methods

begin_group(kind) click to toggle source
# File lib/coderay/encoders/json.rb, line 64
def begin_group kind
  append :type => 'block', :action => 'open', :kind => kind
end
begin_line(kind) click to toggle source
# File lib/coderay/encoders/json.rb, line 72
def begin_line kind
  append :type => 'block', :action => 'begin_line', :kind => kind
end
end_group(kind) click to toggle source
# File lib/coderay/encoders/json.rb, line 68
def end_group kind
  append :type => 'block', :action => 'close', :kind => kind
end
end_line(kind) click to toggle source
# File lib/coderay/encoders/json.rb, line 76
def end_line kind
  append :type => 'block', :action => 'end_line', :kind => kind
end
text_token(text, kind) click to toggle source
# File lib/coderay/encoders/json.rb, line 60
def text_token text, kind
  append :type => 'text', :text => text, :kind => kind
end

Protected Instance Methods

append(data) click to toggle source
# File lib/coderay/encoders/json.rb, line 49
def append data
  if @first
    @first = false
  else
    @out << ','
  end
  
  @out << data.to_json
end
finish(options) click to toggle source
# File lib/coderay/encoders/json.rb, line 45
def finish options
  @out << ']'
end
setup(options) click to toggle source
# File lib/coderay/encoders/json.rb, line 38
def setup options
  super
  
  @first = true
  @out << '['
end