Sha256: 3e033e8210f8d7ce108e5a90d19cb85b78a16eb7fac7bb0cf1efe058945b84b7

Contents?: true

Size: 702 Bytes

Versions: 21

Compression:

Stored size: 702 Bytes

Contents

# encoding: utf-8
#
module CharacterSubstituters # :nodoc:all
  # Substitutes Umlauts like
  # ä, ö, ü => ae, oe, ue.
  # (and more, see specs)
  #
  class WestEuropean

    def initialize
      @chars = ActiveSupport::Multibyte.proxy_class
    end

    def to_s
      self.class.name
    end

    def substitute text
      trans = @chars.new(text).normalize(:kd)

      # substitute special cases
      #
      trans.gsub!('ß', 'ss')

      # substitute umlauts (of A,O,U,a,o,u)
      #
      trans.gsub!(/([AOUaou])\314\210/u, '\1e')

      # get rid of ecutes, graves and …
      #
      trans.unpack('U*').select { |cp|
        cp < 0x0300 || cp > 0x035F
      }.pack('U*')
    end

  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
picky-1.5.3 lib/picky/character_substituters/west_european.rb