aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/core_ext/string/iterators.rb
blob: 2f8aa840242cabcb0d3ea1270824299443131d0f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
unless '1.9'.respond_to?(:each_char)
  class String
    # Yields a single-character string for each character in the string.
    # When $KCODE = 'UTF8', multi-byte characters are yielded appropriately.
    def each_char
      require 'strscan' unless defined? ::StringScanner
      scanner, char = ::StringScanner.new(self), /./mu
      while c = scanner.scan(char)
        yield c
      end
    end
  end
end