Class: String

Inherits:
Object show all
Defined in:
lib/camper/core_extensions/object.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)


122
123
124
125
126
127
128
129
130
131
132
# File 'lib/camper/core_extensions/object.rb', line 122

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[self.encoding].match?(self)
    end
end