Sha256: 14fe5a50880622474a5ba251d3576ebb3424beb79f804daad783c10d99f75e4f

Contents?: true

Size: 911 Bytes

Versions: 11

Compression:

Stored size: 911 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

    def self.json_schema_type
      :string
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
attributor-7.1 lib/attributor/types/tempfile.rb
attributor-7.0 lib/attributor/types/tempfile.rb
attributor-6.5 lib/attributor/types/tempfile.rb
attributor-6.4 lib/attributor/types/tempfile.rb
attributor-6.3 lib/attributor/types/tempfile.rb
attributor-6.2 lib/attributor/types/tempfile.rb
attributor-6.1 lib/attributor/types/tempfile.rb
attributor-6.0 lib/attributor/types/tempfile.rb
attributor-5.7 lib/attributor/types/tempfile.rb
attributor-5.6 lib/attributor/types/tempfile.rb
attributor-5.5 lib/attributor/types/tempfile.rb