Module: Framed::Utils

Extended by:
Utils
Included in:
Utils
Defined in:
lib/framed/utils.rb

Instance Method Summary collapse

Instance Method Details

#flattened_hash(h, namespace = '', init = {}) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
# File 'lib/framed/utils.rb', line 42

def flattened_hash(h, namespace = '', init = {})
  h.reduce(init) do |memo, (key, value)|
    value = value.to_h if value.respond_to?(:to_h)
    if value.instance_of?(Hash)
      memo.merge!(flattened_hash(value, "#{namespace}#{key}_", memo))
    else
      memo["#{namespace}#{key}"] = value
    end
    memo
  end
end

#serialize_date(dt) ⇒ Object



38
39
40
# File 'lib/framed/utils.rb', line 38

def serialize_date(dt)
  dt.utc.iso8601
end

#try(o, *a, &b) ⇒ Object

Adapted from Rails in case it isn’t available.



22
23
24
# File 'lib/framed/utils.rb', line 22

def try(o, *a, &b)
  try!(o, *a, &b) if a.empty? || o.respond_to?(a.first)
end

#try!(o, *a, &b) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
# File 'lib/framed/utils.rb', line 26

def try!(o, *a, &b)
  if a.empty? && block_given?
    if b.arity.zero?
      o.instance_eval(&b)
    else
      yield o
    end
  else
    o.public_send(*a, &b)
  end
end

#uuidObject



13
14
15
16
17
18
19
# File 'lib/framed/utils.rb', line 13

def uuid
  begin
    UUID.new.generate
  rescue NameError
    SecureRandom.uuid
  end
end