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.



261
262
263
# File 'lib/roda/plugins/sinatra_helpers.rb', line 261

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.



267
268
269
270
271
272
273
274
# File 'lib/roda/plugins/sinatra_helpers.rb', line 267

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)


278
279
280
# File 'lib/roda/plugins/sinatra_helpers.rb', line 278

def empty?
  false
end

#joinObject

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



283
284
285
286
287
# File 'lib/roda/plugins/sinatra_helpers.rb', line 283

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

#lengthObject

Calculate the length for the body.



290
291
292
293
294
# File 'lib/roda/plugins/sinatra_helpers.rb', line 290

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