Sha256: d9cdc1158fd27bd00d32b4d91f0d6184b0b191557dfd975682ce3e6a1725ed46

Contents?: true

Size: 872 Bytes

Versions: 13

Compression:

Stored size: 872 Bytes

Contents

require 'irods4r'

module IRODS4r
  
  # This class proxies a directory in an iRODS environment
  #
  class Directory
        
    def list()
      FileEnumerator.new(@dir_name)
    end
    
    def file?
      return false
    end
    
    def directory?
      return true
    end
    
    def initialize(dir_name)
      @dir_name = dir_name
    end
  end
  
  class FileEnumerator
    include Enumerable
    
    def each()
      while e = @entries.shift
        e = e.strip
        if e.start_with? 'C-'
          # it's a directory
          yield Directory.new(e[3 .. -1])
        else
          yield File.new(::File.join(@dir_name, e))
        end
      end
    end

    def initialize(dir_name)
      r = `ils #{dir_name}`
      @dir_name = dir_name
      @entries = r.lines.to_a
      @entries.shift # the first line is the directory name again
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
omf_web-1.2.9 lib/irods4r/directory.rb
omf_web-1.2.8 lib/irods4r/directory.rb
omf_web-1.2.7 lib/irods4r/directory.rb
omf_web-1.2.6 lib/irods4r/directory.rb
omf_web-1.2.5 lib/irods4r/directory.rb
omf_web-1.2.4 lib/irods4r/directory.rb
omf_web-1.2.3 lib/irods4r/directory.rb
omf_web-1.2.2 lib/irods4r/directory.rb
omf_web-1.2.1 lib/irods4r/directory.rb
omf_web-1.2.0 lib/irods4r/directory.rb
omf_web-1.0.0 lib/irods4r/directory.rb
omf_web-0.9.9 lib/irods4r/directory.rb
omf_web-0.9.8 lib/irods4r/directory.rb