Sha256: 3e3aa0aec4422e3c81fda14e7a2375dfa2697696e67bddd5dd47c8d9e8f0458e

Contents?: true

Size: 1.23 KB

Versions: 1

Compression:

Stored size: 1.23 KB

Contents

# A representation of Ferver's file list
#
module Ferver
    class FileList

      # List of files
      attr_reader :files

      # create a new instance with a path
      #
      def initialize(path)

        raise ArgumentError, "No path is specified" if path.empty?

        @file_path = File.expand_path(path)

        find_files
        
      end

      # Return an absolute path to a `file_name` in the `directory`
      #
      def self.path_for_file(directory, file_name)

        File.join(directory, file_name)

      end

      # Is the file id a valid id for Ferver to serve
      #
      def file_id_is_valid?(file_id)

        file_id < @files.size

      end

      # Filename by its index
      #
      def file_by_id(id)

        @files.fetch(id)

      end

      # Number of files in list 
      #
      def file_count

        @files.size

      end

      private

        # Iterate through files in specified dir for files
        #
        def find_files

          @files = []

          Dir.foreach(@file_path) do |file|

            next if file == '.' or file == '..'

            file_path = FileList.path_for_file(@file_path, file)

            @files << file if File.file?(file_path)

          end

        end

    end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ferver-1.0.0 lib/ferver/file_list.rb