Mercurial > hg > soundsoftware-site
view vendor/gems/coderay-1.0.0/lib/coderay/encoders/json.rb @ 1082:997f6d7738f7 bug_531
In repo controller entry action, show the page for the file even if it's binary (so user still has access to history etc links). This makes it possible to use the entry action as the default when a file is clicked on
author | Chris Cannam <chris.cannam@soundsoftware.ac.uk> |
---|---|
date | Thu, 22 Nov 2012 18:04:17 +0000 |
parents | cbb26bc654de |
children |
line wrap: on
line source
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