Sha256: 6be9bbb5b32119039866ec33d4368fdc779211392494f5c224ff1a17f0bb9922

Contents?: true

Size: 1.32 KB

Versions: 8

Compression:

Stored size: 1.32 KB

Contents

#!/usr/bin/env ruby
# frozen_string_literal: true

# encoding=utf-8

# version 2023-10-02

class FalseClass
  unless defined?(blank?)
    def present?
      true
    end
  end
end

# is the value empty?
#
class String
  unless defined?(blank?)
    def blank?
      empty? || /\A[[:space:]]*\z/.freeze.match?(self)
    end
  end
end

# is the value non-empty?
#
class String
  unless defined?(present?)
    def present?
      !empty?
    end
  end
end

# is the value a non-empty string or a binary?
#
# :reek:ManualDispatch ### temp
class Object
  unless defined?(present?)
    def present?
      case self.class.to_s
      when 'FalseClass', 'TrueClass'
        true
      else
        self && (!respond_to?(:blank?) || !blank?)
      end
    end
  end
end

if $PROGRAM_NAME == __FILE__
  require 'minitest/autorun'

  class TestStringMethods < Minitest::Test
    def test_blank
      assert ''.blank?
      assert ' '.blank?
      assert "\t\n\r".blank?
      refute 'foo'.blank?
    end

    def test_present
      assert 'foo'.present?
      refute ''.present?
    end
  end

  class TestObjectMethods < Minitest::Test
    def test_present
      assert 'foo'.present?
      refute ''.present?
      assert Object.new.present?
      assert 123.present?
      assert true.present?
      assert false.present?
      refute nil.present?
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
markdown_exec-1.6 lib/object_present.rb
markdown_exec-1.5 lib/object_present.rb
markdown_exec-1.4.1 lib/object_present.rb
markdown_exec-1.4 lib/object_present.rb
markdown_exec-1.3.9 lib/object_present.rb
markdown_exec-1.3.8 lib/object_present.rb
markdown_exec-1.3.7 lib/object_present.rb
markdown_exec-1.3.6 lib/object_present.rb