aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/core_ext/string/filters.rb
blob: 3a69131ea0c78b201b5f44d801a1f7e586485a16 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
module ActiveSupport #:nodoc:
  module CoreExtensions #:nodoc:
    module String #:nodoc:
      module Filters
        # Returns the string, first removing all whitespace on both ends of
        # the string, and then changing remaining consecutive whitespace
        # groups into one space each.
        #
        # Examples:
        #   %{ Multi-line
        #      string }.squish                   # => "Multi-line string"
        #   " foo   bar    \n   \t   boo".squish # => "foo bar boo"
        def squish
          strip.gsub(/\s+/, ' ')
        end

        # Performs a destructive squish. See String#squish.
        def squish!
          replace(squish)
        end
      end
    end
  end
end