utf8proc

annotate ruby/utf8proc.rb @ 0:a0368662434c

Version 0.1
author jbe
date Fri Jun 02 12:00:00 2006 +0200 (2006-06-02)
parents
children 61a89ecc2fb9
rev   line source
jbe@0 1 ##
jbe@0 2 # Copyright (c) 2006, FlexiGuided GmbH, Berlin, Germany
jbe@0 3 # Author: Jan Behrens <jan.behrens@flexiguided.de>
jbe@0 4 # All rights reserved.
jbe@0 5 #
jbe@0 6 # Redistribution and use in source and binary forms, with or without
jbe@0 7 # modification, are permitted provided that the following conditions are
jbe@0 8 # met:
jbe@0 9 #
jbe@0 10 # 1. Redistributions of source code must retain the above copyright
jbe@0 11 # notice, this list of conditions and the following disclaimer.
jbe@0 12 # 2. Redistributions in binary form must reproduce the above copyright
jbe@0 13 # notice, this list of conditions and the following disclaimer in the
jbe@0 14 # documentation and/or other materials provided with the distribution.
jbe@0 15 # 3. Neither the name of the FlexiGuided GmbH nor the names of its
jbe@0 16 # contributors may be used to endorse or promote products derived from
jbe@0 17 # this software without specific prior written permission.
jbe@0 18 #
jbe@0 19 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
jbe@0 20 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
jbe@0 21 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
jbe@0 22 # PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
jbe@0 23 # OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
jbe@0 24 # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
jbe@0 25 # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
jbe@0 26 # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
jbe@0 27 # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
jbe@0 28 # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
jbe@0 29 # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
jbe@0 30 #
jbe@0 31 ##
jbe@0 32
jbe@0 33
jbe@0 34 ##
jbe@0 35 # File name: ruby/utf8proc.rb
jbe@0 36 # Version: 0.1
jbe@0 37 # Last changed: 2006-05-31
jbe@0 38 #
jbe@0 39 # Description:
jbe@0 40 # Part of the ruby wrapper for libutf8proc, which is written in ruby.
jbe@0 41 ##
jbe@0 42
jbe@0 43
jbe@0 44 require 'utf8proc_native'
jbe@0 45
jbe@0 46 module Utf8Proc
jbe@0 47 SpecialChars = {
jbe@0 48 :HT => "\x09",
jbe@0 49 :LF => "\x0A",
jbe@0 50 :VT => "\x0B",
jbe@0 51 :FF => "\x0C",
jbe@0 52 :CR => "\x0D",
jbe@0 53 :FS => "\x1C",
jbe@0 54 :GS => "\x1D",
jbe@0 55 :RS => "\x1E",
jbe@0 56 :US => "\x1F",
jbe@0 57 :LS => "\xE2\x80\xA8",
jbe@0 58 :PS => "\xE2\x80\xA9",
jbe@0 59 }
jbe@0 60 end
jbe@0 61
jbe@0 62 class String
jbe@0 63 def utf8map(*option_array)
jbe@0 64 options = 0
jbe@0 65 option_array.each do |option|
jbe@0 66 flag = Utf8Proc::Options[option]
jbe@0 67 raise ArgumentError, "Unknown argument given to String#utf8map." unless
jbe@0 68 flag
jbe@0 69 options |= flag
jbe@0 70 end
jbe@0 71 return Utf8Proc::utf8map(self, options)
jbe@0 72 end
jbe@0 73 def utf8map!(*option_array)
jbe@0 74 self.replace(self.utf8map(*option_array))
jbe@0 75 end
jbe@0 76 def utf8nfd; utf8map( :stable); end
jbe@0 77 def utf8nfd!; utf8map!(:stable); end
jbe@0 78 def utf8nfc; utf8map( :stable, :compose); end
jbe@0 79 def utf8nfc!; utf8map!(:stable, :compose); end
jbe@0 80 def utf8nfkd; utf8map( :stable, :compat); end
jbe@0 81 def utf8nfkd!; utf8map!(:stable, :compat); end
jbe@0 82 def utf8nfkc; utf8map( :stable, :compose, :compat); end
jbe@0 83 def utf8nfkc!; utf8map!(:stable, :compose, :compat); end
jbe@0 84 end
jbe@0 85
jbe@0 86 class Integer
jbe@0 87 def utf8
jbe@0 88 return Utf8Proc::utf8char(self)
jbe@0 89 end
jbe@0 90 end
jbe@0 91
jbe@0 92

Impressum / About Us