Class: Webgen::Path::SourceIO
- Inherits:
-
Object
- Object
- Webgen::Path::SourceIO
- Defined in:
- lib/webgen/path.rb
Overview
Helper class for easy access to the content of a path.
This class is used sothat the creation of the real IO object for #stream can be delayed till it is actually needed. This is done by not directly requiring the user of this class to supply the IO object, but by requiring a block that creates the real IO object.
Instance Method Summary collapse
-
#data(mode = 'r') ⇒ Object
Return the whole content of the wrapped IO object as string.
-
#initialize(&block) ⇒ SourceIO
constructor
Create a new SourceIO object.
-
#stream(mode = 'r') ⇒ Object
Provide direct access to the wrapped IO object by yielding it.
Constructor Details
#initialize(&block) ⇒ SourceIO
Create a new SourceIO object. A block has to be specified that returns the to-be-wrapped IO object.
45 46 47 48 |
# File 'lib/webgen/path.rb', line 45 def initialize(&block) @block = block raise ArgumentError, 'You need to provide a block which returns an IO object' if @block.nil? end |
Instance Method Details
#data(mode = 'r') ⇒ Object
Return the whole content of the wrapped IO object as string. For a description of the parameter mode
see #stream.
65 66 67 |
# File 'lib/webgen/path.rb', line 65 def data(mode = 'r') stream(mode) {|io| io.read} end |
#stream(mode = 'r') ⇒ Object
Provide direct access to the wrapped IO object by yielding it. After the method block returns the IO object is automatically closed.
The parameter mode
specifies the mode in which the wrapped IO object should be opened. This can be used, for example, to open a file in binary mode (or specify a certain input encoding under Ruby 1.9).
56 57 58 59 60 61 |
# File 'lib/webgen/path.rb', line 56 def stream(mode = 'r') io = @block.call(mode) yield(io) ensure io.close end |