Sha256: fd31e5b75bf69e3d9cf3f74ced001d1d6fad9863435b7544a4035ba3ee169e81

Contents?: true

Size: 815 Bytes

Versions: 1

Compression:

Stored size: 815 Bytes

Contents

module Kernel
  def promise(p = Promise.new, &block)
    begin
      result = block.call
      return p.resolve(result) if result
      after(10) { promise(p, &block) }
    rescue => e
      return p.reject(e)
    end
    p
  end

  if RUBY_ENGINE == 'opal'
    def on_browser?; true; end
    def on_desktop?; false; end
    def on_mobile?; false; end
    def on_tablet?; false; end
    def on_tv?; false; end
    def on_server?; false; end

    def after(time_ms, &block)
      `setTimeout(#{block.to_n}, time_ms)`
    end
  else
    def on_browser?; false; end
    def on_desktop?; false; end
    def on_mobile?;  false; end
    def on_tablet?;  false; end
    def on_tv?;      false; end
    def on_server?;  true;  end

    def after(time_ms, &block)
      sleep time_ms/1000
      block.call
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
isomorfeus-transport-23.6.0.rc5 lib/isomorfeus/core_ext/kernel.rb