Class: Rack::Coderay::Parser
- Inherits:
-
Object
- Object
- Rack::Coderay::Parser
- Defined in:
- lib/rack/coderay/parser.rb
Overview
This class is the interface between Rack and the CodeRay gem
Constant Summary collapse
- DEFAULT_CODERAY_OPTS =
Defaults for the Coderay gem config
{ :css => :class }
Instance Attribute Summary collapse
-
#coderay_options ⇒ Object
Coderay gem options for HTML encoder, see coderay.rubychan.de/doc/classes/CodeRay/Encoders/HTML.html.
Instance Method Summary collapse
-
#call(env) ⇒ Object
method required by Rack interface.
-
#call!(env) ⇒ Object
thread safe version using shallow copy of env.
-
#initialize(app, markup_trigger, options = {}) ⇒ Parser
constructor
A new instance of Parser.
Constructor Details
#initialize(app, markup_trigger, options = {}) ⇒ Parser
Returns a new instance of Parser.
17 18 19 20 21 22 |
# File 'lib/rack/coderay/parser.rb', line 17 def initialize(app, markup_trigger, = {}) @app = app @markup_trigger = markup_trigger self. = DEFAULT_CODERAY_OPTS.merge() raise "Markup trigger must include a 'lang' attribute" if !markup_trigger.include?('lang') end |
Instance Attribute Details
#coderay_options ⇒ Object
Coderay gem options for HTML encoder, see coderay.rubychan.de/doc/classes/CodeRay/Encoders/HTML.html
15 16 17 |
# File 'lib/rack/coderay/parser.rb', line 15 def @coderay_options end |
Instance Method Details
#call(env) ⇒ Object
method required by Rack interface
25 26 27 |
# File 'lib/rack/coderay/parser.rb', line 25 def call(env) call! env end |
#call!(env) ⇒ Object
thread safe version using shallow copy of env
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/rack/coderay/parser.rb', line 30 def call!(env) @env = env.dup status, headers, response = @app.call(@env) if headers["Content-Type"] && headers["Content-Type"].include?("text/html") headers.delete('Content-Length') response = Rack::Response.new( response = parse_and_replace(response.respond_to?(:body) ? response.body : response), status, headers ) response.finish response.to_a else [status, headers, response] end end |