Sha256: d170d01758a73f414310a0216511331cde17564399799023cc57a52ad8e28916

Contents?: true

Size: 1.33 KB

Versions: 22

Compression:

Stored size: 1.33 KB

Contents

module Ftpd
  module ListFormat

    # Easily Parsed LIST Format (EPLF) Directory formatter
    # See: {http://cr.yp.to/ftp/list/eplf.html}

    class Eplf

      extend Forwardable

      # Create a new formatter for a file object
      # @param file_info [FileInfo]

      def initialize(file_info)
        @file_info = file_info
      end

      # Return the formatted directory entry.
      # For example:
      #   +i8388621.48598,m824253270,r,s612, 514.html
      # Note: The calling code adds the \r\n

      def to_s
        "+%s\t%s" % [facts, filename]
      end

      private

      def facts
        [
          retrievable_fact,
          cwd_target_fact,
          size_fact,
          mtime_fact,
          identifier_fact,
        ].compact.join(',')
      end

      def retrievable_fact
        'r' if retrievable?
      end

      def cwd_target_fact
        '/' if cwd_target?
      end

      def size_fact
        "s#{@file_info.size}" if retrievable?
      end

      def mtime_fact
        "m#{@file_info.mtime.to_i}"
      end

      def identifier_fact
        "i#{@file_info.identifier}" if @file_info.identifier
      end

      def filename
        File.basename(@file_info.path)
      end

      def retrievable?
        @file_info.file?
      end

      def cwd_target?
        @file_info.directory?
      end

    end

  end
end

Version data entries

22 entries across 22 versions & 2 rubygems

Version Path
ftpd-1.1.1 lib/ftpd/list_format/eplf.rb
ftpd-1.1.0 lib/ftpd/list_format/eplf.rb
investtools-ftpd-1.0.1 lib/ftpd/list_format/eplf.rb
ftpd-1.0.1 lib/ftpd/list_format/eplf.rb
ftpd-1.0.0 lib/ftpd/list_format/eplf.rb
ftpd-0.17.0 lib/ftpd/list_format/eplf.rb
ftpd-0.16.0 lib/ftpd/list_format/eplf.rb
ftpd-0.15.0 lib/ftpd/list_format/eplf.rb
ftpd-0.14.0 lib/ftpd/list_format/eplf.rb
ftpd-0.13.0 lib/ftpd/list_format/eplf.rb
ftpd-0.12.0 lib/ftpd/list_format/eplf.rb
ftpd-0.11.0 lib/ftpd/list_format/eplf.rb
ftpd-0.10.0 lib/ftpd/list_format/eplf.rb
ftpd-0.9.0 lib/ftpd/list_format/eplf.rb
ftpd-0.7.1 lib/ftpd/list_format/eplf.rb
ftpd-0.8.0 lib/ftpd/list_format/eplf.rb
ftpd-0.7.0 lib/ftpd/list_format/eplf.rb
ftpd-0.6.0 lib/ftpd/list_format/eplf.rb
ftpd-0.5.0 lib/ftpd/list_format/eplf.rb
ftpd-0.4.0 lib/ftpd/list_format/eplf.rb