Sha256: c4079e70f255bf5b93188d54228d055c8e51a5513ce2f4a1765bdcc120f941fb

Contents?: true

Size: 1.01 KB

Versions: 3

Compression:

Stored size: 1.01 KB

Contents

require 'securerandom'
require 'time'

begin
  require 'uuid'
rescue LoadError
end

module Framed
  module Utils
    extend self

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

    # Adapted from Rails in case it isn't available.
    def try(o, *a, &b)
      try!(o, *a, &b) if a.empty? || o.respond_to?(a.first)
    end

    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

    def serialize_date(dt)
      dt.utc.iso8601
    end

    def flattened_hash(h, namespace = '', memo = {})
      h.reduce(memo) { |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
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
framed_rails-0.1.7 lib/framed/utils.rb
framed_rails-0.1.5 lib/framed/utils.rb
framed_rails-0.1.4 lib/framed/utils.rb