Sha256: fefaf81962f1ca1e955453ffd60fde95ee055f1e31d8807b117c2998c8e87d5e

Contents?: true

Size: 661 Bytes

Versions: 10

Compression:

Stored size: 661 Bytes

Contents

# frozen_string_literal: true

require 'kind/basic'

module Kind
  module Presence
    extend self

    def call(object)
      return if KIND.nil_or_undefined?(object)

      return object.blank? ? nil : object if object.respond_to?(:blank?)

      return blank_str?(object) ? nil : object if String === object

      return object.empty? ? nil : object if object.respond_to?(:empty?)

      return object if object
    end

    def to_proc
      -> object { call(object) }
    end

    private

      BLANK_RE = /\A[[:space:]]*\z/

      def blank_str?(object)
        object.empty? || BLANK_RE === object
      end

      private_constant :BLANK_RE
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
kind-5.10.0 lib/kind/presence.rb
kind-5.9.0 lib/kind/presence.rb
kind-5.8.1 lib/kind/presence.rb
kind-5.8.0 lib/kind/presence.rb
kind-5.7.0 lib/kind/presence.rb
kind-5.6.0 lib/kind/presence.rb
kind-5.5.0 lib/kind/presence.rb
kind-5.4.1 lib/kind/presence.rb
kind-5.4.0 lib/kind/presence.rb
kind-5.3.0 lib/kind/presence.rb