Sha256: d69f66aeb1bd051acb18f5e0660a1db2b1d65d1a0e32c1822107fe9978cb4e19

Contents?: true

Size: 1.51 KB

Versions: 97

Compression:

Stored size: 1.51 KB

Contents

class Object
  # An object is blank if it's false, empty, or a whitespace string.
  # For example, "", "   ", +nil+, [], and {} are all blank.
  #
  # This simplifies:
  #
  #   if address.nil? || address.empty?
  #
  # ...to:
  #
  #   if address.blank?
  def blank?
    respond_to?(:empty?) ? empty? : !self
  end

  # An object is present if it's not <tt>blank?</tt>.
  def present?
    !blank?
  end

  # Returns object if it's <tt>present?</tt> otherwise returns +nil+.
  # <tt>object.presence</tt> is equivalent to <tt>object.present? ? object : nil</tt>.
  #
  # This is handy for any representation of objects where blank is the same
  # as not present at all. For example, this simplifies a common check for
  # HTTP POST/query parameters:
  #
  #   state   = params[:state]   if params[:state].present?
  #   country = params[:country] if params[:country].present?
  #   region  = state || country || 'US'
  #
  # ...becomes:
  #
  #   region = params[:state].presence || params[:country].presence || 'US'
  def presence
    self if present?
  end

  def trim
    respond_to?(:strip) ? self.strip : self
  end
end



class Hash
  def validate_required_strings!
    self.each do |key, value|
      raise FinApps::REST::MissingArgumentsError.new "Missing argument: #{key}." if value.blank?
      raise FinApps::REST::InvalidArgumentsError.new "Invalid #{key} specified: #{value.inspect} must be a string or symbol." unless value.is_a?(String) || value.is_a?(Symbol)
    end
  end

  def compact
    self.delete_if { |_, v| v.nil? }
  end
end

Version data entries

97 entries across 97 versions & 1 rubygems

Version Path
finapps-1.0.8 lib/finapps/utils/utils.rb
finapps-1.0.7 lib/finapps/utils/utils.rb
finapps-1.0.6 lib/finapps/utils/utils.rb
finapps-1.0.5 lib/finapps/utils/utils.rb
finapps-1.0.4 lib/finapps/utils/utils.rb
finapps-1.0.3 lib/finapps/utils/utils.rb
finapps-1.0.2 lib/finapps/utils/utils.rb
finapps-1.0.1 lib/finapps/utils/utils.rb
finapps-1.0.0 lib/finapps/utils/utils.rb
finapps-0.22.4.pre lib/finapps/utils/utils.rb
finapps-0.22.3.pre lib/finapps/utils/utils.rb
finapps-0.22.2.pre lib/finapps/utils/utils.rb
finapps-0.22.1.pre lib/finapps/utils/utils.rb
finapps-0.22.0.pre lib/finapps/utils/utils.rb
finapps-0.21.6.pre lib/finapps/utils/utils.rb
finapps-0.21.5.pre lib/finapps/utils/utils.rb
finapps-0.21.4.pre lib/finapps/utils/utils.rb
finapps-0.21.3.pre lib/finapps/utils/utils.rb
finapps-0.21.2.pre lib/finapps/utils/utils.rb
finapps-0.21.0.pre lib/finapps/utils/utils.rb