Class: Sinatra::RespondWith::Format
Relationships & Source Files | |
Inherits: | Object |
Defined in: | sinatra-contrib/lib/sinatra/respond_with.rb |
Class Method Summary
- .new(app) ⇒ Format constructor
Instance Method Summary
Constructor Details
.new(app) ⇒ Format
# File 'sinatra-contrib/lib/sinatra/respond_with.rb', line 92
def initialize(app) @app = app @map = {} @generic = {} @default = nil end
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args, &block)
[ GitHub ]Instance Method Details
#finish {|_self| ... }
# File 'sinatra-contrib/lib/sinatra/respond_with.rb', line 109
def finish yield self if block_given? mime_type = @app.content_type || @app.request.preferred_type(@map.keys) || @app.request.preferred_type || 'text/html' type = mime_type.split(/\s*;\s*/, 2).first handlers = [@map[type], @generic[type[%r{^[^/]+}]], @default].compact handlers.each do |block| if (result = block.call(type)) @app.content_type mime_type @app.halt result end end @app.halt 500, 'Unknown template engine' end
#on(type, &block)
[ GitHub ]# File 'sinatra-contrib/lib/sinatra/respond_with.rb', line 99
def on(type, &block) @app.settings.mime_types(type).each do |mime| case mime when '*/*' then @default = block when %r{^([^/]+)/\*$} then @generic[$1] = block else @map[mime] = block end end end