module Sinatra::Streaming::Stream
Attributes
Public Class Methods
Source
# File lib/sinatra/streaming.rb, line 92 def self.extended(obj) obj.closed = false obj.lineno = 0 obj.pos = 0 obj.callback { obj.closed = true } obj.errback { obj.closed = true } end
Public Instance Methods
Source
# File lib/sinatra/streaming.rb, line 100 def <<(data) raise IOError, 'not opened for writing' if closed? @transformer ||= nil data = data.to_s data = @transformer[data] if @transformer @pos += data.bytesize super(data) end
Calls superclass method
Source
# File lib/sinatra/streaming.rb, line 160 def close_read raise IOError, 'closing non-duplex IO for reading' end
Source
# File lib/sinatra/streaming.rb, line 220 def dummy(*) end
Source
# File lib/sinatra/streaming.rb, line 110 def each # that way body.each.map { ... } works return self unless block_given? super end
Calls superclass method
Source
# File lib/sinatra/streaming.rb, line 208 def enum_not_open_for_reading(*) not_open_for_reading if block_given? enum_for(:not_open_for_reading) end
Source
# File lib/sinatra/streaming.rb, line 172 def external_encoding Encoding.find settings.default_encoding rescue NameError settings.default_encoding end
Source
# File lib/sinatra/streaming.rb, line 117 def map(&block) # dup would not copy the mixin clone.map!(&block) end
Source
# File lib/sinatra/streaming.rb, line 122 def map!(&block) @transformer ||= nil if @transformer inner = @transformer outer = block block = proc { |value| outer[inner[value]] } end @transformer = block self end
Source
# File lib/sinatra/streaming.rb, line 142 def print(*args) args.each { |arg| self << arg } nil end
Source
# File lib/sinatra/streaming.rb, line 147 def printf(format, *args) print(format.to_s % args) end
Source
# File lib/sinatra/streaming.rb, line 155 def puts(*args) args.each { |arg| self << "#{arg}\n" } nil end
Source
# File lib/sinatra/streaming.rb, line 134 def write(data) self << data data.to_s.bytesize end
Also aliased as: syswrite, write_nonblock
Private Instance Methods
Source
# File lib/sinatra/streaming.rb, line 186 def not_open_for_reading(*) raise IOError, 'not opened for reading' end