Sha256: 87c3adb576c0afec1d18088d4c8e7ae7e432230e4e6051b73dfe5765a695e261

Contents?: true

Size: 1.31 KB

Versions: 2

Compression:

Stored size: 1.31 KB

Contents

module Browser
  # An individual item in a FileList
  class File
    attr_reader :data

    # @param native [JS] the native File object to wrap
    def initialize native
      @native = native
      @data = nil
    end

    # @return [String] the filename
    def name
      `#@native.name`
    end

    # @return [Integer] the size of this file on disk
    def size
      `#@native.size`
    end

    # @return [String] the MIME type of the file, detected by the browser
    def type
      `#@native.type`
    end

    # @return [Time] the timestamp of the file
    def last_modified
      `#@native.lastModifiedDate`
    end

    # Read the file from disk into memory
    #
    # @return [Promise] a promise that resolves when finished loading and
    #   rejects if an error occurs while loading.
    def read
      promise = Promise.new
      reader = FileReader.new
      reader.on :load do
        result = reader.result

        @data = result
        promise.resolve result
      end

      reader.on :error do
        promise.reject reader.result
      end

      reader.read_as_binary_string self

      promise
    end

    # Convert to the native object
    #
    # @return [JS.HTMLElement] the underlying native element
    def to_n
      @native
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
isomorfeus-preact-23.9.0.rc2 lib/browser_auto/browser/file.rb
isomorfeus-preact-23.9.0.rc1 lib/browser_auto/browser/file.rb