Sha256: 7da4f5ea5c642147f3018c2083b80b80debe65887d24dd8bc3f3e1e3653b4f32

Contents?: true

Size: 858 Bytes

Versions: 5

Compression:

Stored size: 858 Bytes

Contents

require 'tempfile'

module Attributor
  class Tempfile
    include Attributor::Type

    def self.native_type
      ::Tempfile
    end

    def self.example(context = Attributor::DEFAULT_ROOT_CONTEXT, options: {})
      file = ::Tempfile.new(Attributor.humanize_context(context))
      file.write Randgen.sentence
      file.write '.'
      file.rewind
      file
    end

    def self.dump(value, **_opts)
      value && value.read
    end

    def self.load(value, context = Attributor::DEFAULT_ROOT_CONTEXT, **options)
      # TODO: handle additional cases that make sense
      case value
      when ::String
        name = Attributor.humanize_context(context)

        file = ::Tempfile.new(name)
        file.write(value)
        file.rewind
        return file
      end

      super
    end

    def self.family
      String.family
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
attributor-5.4 lib/attributor/types/tempfile.rb
attributor-5.3 lib/attributor/types/tempfile.rb
attributor-5.2.1 lib/attributor/types/tempfile.rb
attributor-5.2.0 lib/attributor/types/tempfile.rb
attributor-5.1.0 lib/attributor/types/tempfile.rb