Module: Mayu::Utils

Extended by:
T::Sig
Defined in:
lib/mayu/utils.rb

Defined Under Namespace

Classes: DeepDuper, DeepFreezer

Class Method Summary collapse

Class Method Details

.deep_dup(obj) ⇒ Object



110
111
112
# File 'lib/mayu/utils.rb', line 110

def self.deep_dup(obj)
  DeepDuper.new(obj).deep_dup
end

.deep_freeze(obj) ⇒ Object



101
102
103
# File 'lib/mayu/utils.rb', line 101

def self.deep_freeze(obj)
  DeepFreezer.new(obj).deep_freeze
end

.flatten_props(hash, path = []) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/mayu/utils.rb', line 25

def self.flatten_props(hash, path = [])
  hash.reduce({}) do |obj, (k, v)|
    next obj.merge(style: v) if k == :style && path.empty?

    current_path = [*path, k]

    obj.merge(
      case v
      when Hash
        flatten_props(v, current_path)
      else
        { current_path.join("_").to_sym => v }
      end
    )
  end
end

.measure_time(unit = :float_millisecond, &block) ⇒ Object



13
14
15
16
17
# File 'lib/mayu/utils.rb', line 13

def self.measure_time(unit = :float_millisecond, &block)
  start = monotonic_now
  yield
  monotonic_now - start
end

.monotonic_now(unit = :float_millisecond) ⇒ Object



8
9
10
# File 'lib/mayu/utils.rb', line 8

def self.monotonic_now(unit = :float_millisecond)
  Process.clock_gettime(Process::CLOCK_MONOTONIC, unit).to_f
end