Class: String

Inherits:
Object show all
Defined in:
lib/errgonomic/core_ext/blank.rb

Constant Summary collapse

BLANK_RE =
/\A[[:space:]]*\z/
ENCODED_BLANKS =
Concurrent::Map.new do |h, enc|
  h[enc] = Regexp.new(BLANK_RE.source.encode(enc), BLANK_RE.options | Regexp::FIXEDENCODING)
end

Instance Method Summary collapse

Instance Method Details

#blank?true, false

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

Returns:

  • (true, false)


153
154
155
156
157
158
159
160
161
162
163
# File 'lib/errgonomic/core_ext/blank.rb', line 153

def blank?
  # The regexp that matches blank strings is expensive. For the case of empty
  # strings we can speed up this method (~3.5x) with an empty? call. The
  # penalty for the rest of strings is marginal.
  empty? ||
    begin
      BLANK_RE.match?(self)
    rescue Encoding::CompatibilityError
      ENCODED_BLANKS[encoding].match?(self)
    end
end

#present?Boolean

:nodoc:

Returns:

  • (Boolean)


165
166
167
# File 'lib/errgonomic/core_ext/blank.rb', line 165

def present? # :nodoc:
  !blank?
end