Class: String

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

Overview

See Also:

Constant Summary collapse

BLANK_RE =

:nodoc:

/\A[[:space:]]*\z/.freeze
ENCODED_BLANKS =

:nodoc:

Concurrent::Map.new do |map, enc|
  map[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)


135
136
137
138
139
140
141
142
143
144
145
# File 'lib/stub_requests/core_ext/object/blank.rb', line 135

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