Sha256: 9d317e2efa38de720fe285371b124742a5f5d92ef4cb1aa947ae880045fe4c4d

Contents?: true

Size: 1.06 KB

Versions: 22

Compression:

Stored size: 1.06 KB

Contents

require 'volt/utils/ejson'

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'
      Volt::EJSON.parse(Volt::EJSON.stringify(self))
    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

22 entries across 22 versions & 1 rubygems

Version Path
volt-0.9.7.pre8 lib/volt/extra_core/object.rb
volt-0.9.7.pre7 lib/volt/extra_core/object.rb
volt-0.9.7.pre6 lib/volt/extra_core/object.rb
volt-0.9.7.pre5 lib/volt/extra_core/object.rb
volt-0.9.7.pre3 lib/volt/extra_core/object.rb
volt-0.9.7.pre2 lib/volt/extra_core/object.rb
volt-0.9.6 lib/volt/extra_core/object.rb
volt-0.9.6.pre3 lib/volt/extra_core/object.rb
volt-0.9.6.pre2 lib/volt/extra_core/object.rb
volt-0.9.6.pre1 lib/volt/extra_core/object.rb
volt-0.9.5 lib/volt/extra_core/object.rb
volt-0.9.5.pre12 lib/volt/extra_core/object.rb
volt-0.9.5.pre11 lib/volt/extra_core/object.rb
volt-0.9.5.pre9 lib/volt/extra_core/object.rb
volt-0.9.5.pre8 lib/volt/extra_core/object.rb
volt-0.9.5.pre7 lib/volt/extra_core/object.rb
volt-0.9.5.pre6 lib/volt/extra_core/object.rb
volt-0.9.5.pre5 lib/volt/extra_core/object.rb
volt-0.9.5.pre4 lib/volt/extra_core/object.rb
volt-0.9.5.pre3 lib/volt/extra_core/object.rb