Class: Roda::RodaPlugins::SinatraHelpers::DelayedBody

Inherits:
Object
  • Object
show all
Defined in:
lib/roda/plugins/sinatra_helpers.rb

Overview

Class used when the response body is set explicitly, instead of using Roda’s default body array and response.write to write to it.

Instance Method Summary collapse

Constructor Details

#initialize(&block) ⇒ DelayedBody

Save the block that will return the body, it won’t be called until the body is needed.



242
243
244
# File 'lib/roda/plugins/sinatra_helpers.rb', line 242

def initialize(&block)
  @block = block
end

Instance Method Details

#eachObject

If the body is a String, yield it, otherwise yield each string returned by calling each on the body.



248
249
250
251
252
253
254
255
# File 'lib/roda/plugins/sinatra_helpers.rb', line 248

def each
  v = value
  if v.is_a?(String)
    yield v
  else
    v.each{|s| yield s}
  end
end

#empty?Boolean

Assume that if the body has been set directly that it is never empty.

Returns:

  • (Boolean)


259
260
261
# File 'lib/roda/plugins/sinatra_helpers.rb', line 259

def empty?
  false
end

#joinObject

Return the body as a single string, mostly useful during testing.



264
265
266
267
268
# File 'lib/roda/plugins/sinatra_helpers.rb', line 264

def join
  a = []
  each{|s| a << s}
  a.join
end

#lengthObject

Calculate the length for the body.



271
272
273
274
275
# File 'lib/roda/plugins/sinatra_helpers.rb', line 271

def length
  length = 0
  each{|s| length += s.bytesize}
  length
end