Sha256: c136b1fa16f62e7303cb90e0c328617a0b53575b30fc7d62aa9896927231e2e4

Contents?: true

Size: 1.01 KB

Versions: 10

Compression:

Stored size: 1.01 KB

Contents

class Object
  # Setup a default pretty_inspect
  # alias_method :pretty_inspect, :inspect

  def instance_values
    Hash[instance_variables.map { |name| [name[1..-1], instance_variable_get(name)] }]
  end

  def html_inspect
    inspect.gsub('<', '&lt;').gsub('>', '&gt;')
  end

  # TODO: Need a real implementation of this
  def deep_clone
    if RUBY_PLATFORM == 'opal'
      JSON.parse(to_json)
    else
      Marshal.load(Marshal.dump(self))
    end
  end

  # Convert a non-promise value into a resolved promise.  Resolve the block if
  # it takes one.
  def then(&block)
    promisify_and_run_method(:then, &block)
  end

  # def fail(&block)
  #   promisify_and_run_method(:fail, &block)
  # end

  def try(*a, &b)
    if a.empty? && block_given?
      yield self
    else
      public_send(*a, &b) if respond_to?(a.first)
    end
  end

  private
  def promisify_and_run_method(method_name, &block)
    promise = Promise.new.resolve(self)

    promise = promise.send(method_name, &block) if block

    promise
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
volt-0.9.4 lib/volt/extra_core/object.rb
volt-0.9.4.pre5 lib/volt/extra_core/object.rb
volt-0.9.4.pre3 lib/volt/extra_core/object.rb
volt-0.9.4.pre2 lib/volt/extra_core/object.rb
volt-0.9.4.pre1 lib/volt/extra_core/object.rb
volt-0.9.3 lib/volt/extra_core/object.rb
volt-0.9.3.pre6 lib/volt/extra_core/object.rb
volt-0.9.3.pre5 lib/volt/extra_core/object.rb
volt-0.9.3.pre4 lib/volt/extra_core/object.rb
volt-0.9.3.pre3 lib/volt/extra_core/object.rb