Sha256: d7a66572bc21910b898fbb27f6ed0d26dc73d8cb2753a15d218db06986cb7ec5

Contents?: true

Size: 809 Bytes

Versions: 2

Compression:

Stored size: 809 Bytes

Contents

module Alf
  class Reader
    #
    # Specialization of the Reader contract for .rash files.
    #
    # A .rash file/stream contains one ruby hash literal on each line. This 
    # reader simply decodes each of them in turn with Kernel.eval, providing a 
    # state-less reader (that is, tuples are not all loaded in memory at once).
    #
    class Rash < Reader
  
      # (see Reader#line2tuple)
      def line2tuple(line)
        begin
          h = Kernel.eval(line)
          raise "hash expected, got #{h}" unless h.is_a?(Hash)
        rescue Exception => ex
          $stderr << "Skipping #{line.strip}: #{ex.message}\n"
          nil
        else
          return h
        end
      end
  
      Reader.register(:rash, [".rash"], self)  
    end # class Rash
  end # class Reader
end # module Alf

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
alf-0.10.1 lib/alf/reader/rash.rb
alf-0.10.0 lib/alf/reader/rash.rb