Sha256: b84105e4254fbdc369dadb8c4ec26745bc66718fa5224f81f43b745d17146017
Contents?: true
Size: 1.79 KB
Versions: 6657
Compression:
Stored size: 1.79 KB
Contents
module CodeRay module Encoders # 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"}, # ] class JSON < Encoder begin require 'json' rescue LoadError begin require 'rubygems' unless defined? Gem gem 'json' require 'json' rescue LoadError $stderr.puts "The JSON encoder needs the JSON library.\n" \ "Please gem install json." raise end end register_for :json FILE_EXTENSION = 'json' protected def setup options super @first = true @out << '[' end def finish options @out << ']' end def append data if @first @first = false else @out << ',' end @out << data.to_json end public def text_token text, kind append :type => 'text', :text => text, :kind => kind end def begin_group kind append :type => 'block', :action => 'open', :kind => kind end def end_group kind append :type => 'block', :action => 'close', :kind => kind end def begin_line kind append :type => 'block', :action => 'begin_line', :kind => kind end def end_line kind append :type => 'block', :action => 'end_line', :kind => kind end end end end
Version data entries
6,657 entries across 6,645 versions & 72 rubygems