Sha256: a243ecd734c9bda7d16e6e6d11d0bffc04e0f91b167dbb8f61579b3de27d1638

Contents?: true

Size: 1.36 KB

Versions: 8

Compression:

Stored size: 1.36 KB

Contents

module Fauna
  ##
  # Converts microseconds to a Time object.
  #
  # +microseconds+:: Time in microseconds.
  def self.time_from_usecs(microseconds)
    Time.at(microseconds / 1_000_000, microseconds % 1_000_000)
  end

  ##
  # Converts a Time object to microseconds.
  #
  # +time+:: A Time object.
  def self.usecs_from_time(time)
    time.to_i * 1_000_000 + time.usec
  end

  class DSLContext # :nodoc:
    def self.eval_dsl(dsl, *args, &blk)
      ctx = eval('self', blk.binding)
      dsl.instance_variable_set(:@__ctx__, ctx)

      ctx.instance_variables.each do |iv|
        dsl.instance_variable_set(iv, ctx.instance_variable_get(iv))
      end

      dsl.instance_exec(*args, &blk)

    ensure
      dsl.instance_variables.each do |iv|
        if iv.to_sym != :@__ctx__
          ctx.instance_variable_set(iv, dsl.instance_variable_get(iv))
        end
      end
    end

    NON_PROXIED_METHODS = Set.new %w(__send__ object_id __id__ == equal?
                                     ! != instance_exec instance_variables
                                     instance_variable_get instance_variable_set
                                  ).map(&:to_sym)

    instance_methods.each do |method|
      undef_method(method) unless NON_PROXIED_METHODS.include?(method.to_sym)
    end

    def method_missing(method, *args, &block)
      @__ctx__.send(method, *args, &block)
    end
  end
end

Version data entries

8 entries across 8 versions & 2 rubygems

Version Path
yax-fauna-3.0.1 lib/fauna/util.rb
fauna-3.0.0 lib/fauna/util.rb
fauna-2.4.0 lib/fauna/util.rb
fauna-2.3.0 lib/fauna/util.rb
fauna-2.2.0 lib/fauna/util.rb
fauna-2.1.2 lib/fauna/util.rb
fauna-2.1.1 lib/fauna/util.rb
fauna-2.1.0 lib/fauna/util.rb