Sha256: d91f0db996a92f9efe2db4f78784d40242afec47b1d579711faafdb7ff262f38

Contents?: true

Size: 977 Bytes

Versions: 4

Compression:

Stored size: 977 Bytes

Contents

ENV = Object.new

class << ENV
  def [](name)
    `process.env[#{name}] || nil`
  end

  def []=(name, value)
    `process.env[#{name.to_s}] = #{value.to_s}`
  end

  def key?(name)
    `process.env.hasOwnProperty(#{name})`
  end

  # alias
  alias has_key? key?
  alias include? key?
  alias member? key?

  def empty?
    `Object.keys(process.env).length === 0`
  end

  def keys
    `Object.keys(process.env)`
  end

  def delete(name)
    %x{
      var value = process.env[#{name}] || nil;
      delete process.env[#{name}];
      return value;
    }
  end

  def fetch(key, default_value = undefined, &block)
    return self[key] if key?(key)
    return yield key if block_given?
    return default_value unless `typeof(#{default_value}) === 'undefined'`
    raise KeyError, 'key not found'
  end

  def to_s
    'ENV'
  end

  alias inspect to_s

  def to_h
    keys.to_h { |k| [k, self[k]] }
  end

  alias to_hash to_h

  def merge(keys)
    to_h.merge(keys)
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
opal-1.3.2 stdlib/nodejs/env.rb
opal-1.3.1 stdlib/nodejs/env.rb
opal-1.3.0 stdlib/nodejs/env.rb
opal-1.3.0.rc1 stdlib/nodejs/env.rb