Sha256: 1fa290a888d0a89b4b0d28a5ec1d41fd20802a78746e329c15af869d2457cbe8

Contents?: true

Size: 1.55 KB

Versions: 36

Compression:

Stored size: 1.55 KB

Contents

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

    # An object is present if it's not blank.
    #
    # @return [true, false]
    def present?
      !blank?
    end

    # Returns the receiver if it's present otherwise returns +nil+.
    # <tt>object.presence</tt> is equivalent to
    #
    #    object.present? ? object : nil
    #
    # For example, something like
    #
    #   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'
    #
    # @return [Object]
    def presence
      self if present?
    end
  end
end

module StringExtensions
  refine String do
    BLANK_RE = /\A[[:space:]]*\z/

    # A string is blank if it's empty or contains whitespaces only:
    #
    #   ''.blank?       # => true
    #   '   '.blank?    # => true
    #   "\t\n\r".blank? # => true
    #   ' blah '.blank? # => false
    #
    # Unicode whitespace is supported:
    #
    #   "\u00a0".blank? # => true
    #
    # @return [true, false]
    def blank?
      match BLANK_RE
    end
  end
end

Version data entries

36 entries across 36 versions & 2 rubygems

Version Path
finapps_core-2.0.13 lib/core_extensions/object/blank.rb
finapps_core-2.0.12 lib/core_extensions/object/blank.rb
finapps_core-2.0.11 lib/core_extensions/object/blank.rb
finapps_core-2.0.10 lib/core_extensions/object/blank.rb
finapps_core-2.0.9 lib/core_extensions/object/blank.rb
finapps_core-2.0.8 lib/core_extensions/object/blank.rb
finapps_core-2.0.7 lib/core_extensions/object/blank.rb
finapps_core-2.0.6 lib/core_extensions/object/blank.rb
finapps_core-2.0.5 lib/core_extensions/object/blank.rb
finapps_core-2.0.4 lib/core_extensions/object/blank.rb
finapps_core-2.0.3 lib/core_extensions/object/blank.rb
finapps_core-2.0.2 lib/core_extensions/object/blank.rb
finapps-2.1.4 lib/core_extensions/object/blank.rb
finapps-2.1.3 lib/core_extensions/object/blank.rb
finapps-2.1.2 lib/core_extensions/object/blank.rb
finapps-2.1.1 lib/core_extensions/object/blank.rb
finapps-2.0.30 lib/core_extensions/object/blank.rb
finapps-2.0.29 lib/core_extensions/object/blank.rb
finapps-2.0.28 lib/core_extensions/object/blank.rb
finapps-2.0.27 lib/core_extensions/object/blank.rb