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.



214
215
216
217
# File 'lib/roda/plugins/sinatra_helpers.rb', line 214

def initialize(&block)
  @block = block
  @value = nil
end

Instance Method Details

#eachObject

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



221
222
223
224
225
226
227
228
# File 'lib/roda/plugins/sinatra_helpers.rb', line 221

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)


232
233
234
# File 'lib/roda/plugins/sinatra_helpers.rb', line 232

def empty?
  false
end

#joinObject

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



237
238
239
240
241
# File 'lib/roda/plugins/sinatra_helpers.rb', line 237

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

#lengthObject

Calculate the length for the body.



244
245
246
247
248
# File 'lib/roda/plugins/sinatra_helpers.rb', line 244

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