Sha256: 52a317baf8016a540729bef89b3a99506cfde1028849a35d0bc89d29d685e123

Contents?: true

Size: 972 Bytes

Versions: 54

Compression:

Stored size: 972 Bytes

Contents

# encoding: utf-8
#
# THINK Does it also remove diacritics, like べ to へ?
#
module Picky

  module CharacterSubstituters

    # Substitutes Umlauts like
    # ä, ö, ü => ae, oe, ue.
    # (and more, see specs)
    #
    class WestEuropean < Base

      # Substitutes occurrences of certain characters
      # (like Umlauts) with ASCII representations of them.
      #
      # Examples:
      #   ä -> ae
      #   Ö -> Oe
      #   ß -> ss
      #   ç -> c
      #
      # (See the associated spec for all examples)
      #
      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 etc.
        #
        trans.unpack('U*').select { |cp|
          cp < 0x0300 || cp > 0x035F
        }.pack 'U*'
      end

    end

  end

end

Version data entries

54 entries across 54 versions & 1 rubygems

Version Path
picky-4.31.3 lib/picky/character_substituters/west_european.rb
picky-4.31.2 lib/picky/character_substituters/west_european.rb
picky-4.31.1 lib/picky/character_substituters/west_european.rb
picky-4.31.0 lib/picky/character_substituters/west_european.rb
picky-4.30.0 lib/picky/character_substituters/west_european.rb
picky-4.29.0 lib/picky/character_substituters/west_european.rb
picky-4.28.1 lib/picky/character_substituters/west_european.rb
picky-4.27.1 lib/picky/character_substituters/west_european.rb
picky-4.27.0 lib/picky/character_substituters/west_european.rb
picky-4.26.2 lib/picky/character_substituters/west_european.rb
picky-4.26.1 lib/picky/character_substituters/west_european.rb
picky-4.26.0 lib/picky/character_substituters/west_european.rb
picky-4.25.3 lib/picky/character_substituters/west_european.rb
picky-4.25.2 lib/picky/character_substituters/west_european.rb
picky-4.25.1 lib/picky/character_substituters/west_european.rb
picky-4.25.0 lib/picky/character_substituters/west_european.rb
picky-4.24.0 lib/picky/character_substituters/west_european.rb
picky-4.23.2 lib/picky/character_substituters/west_european.rb
picky-4.23.1 lib/picky/character_substituters/west_european.rb
picky-4.23.0 lib/picky/character_substituters/west_european.rb