redox / rbdb

A DB interface written in Rails

This URL has Read+Write access

Ivan Schneider - ivan (author)
Fri Jan 23 07:22:10 -0800 2009
rbdb / lib / collation.rb
100644 210 lines (209 sloc) 12.897 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
require 'ostruct'
 
module Collation
  COLLATIONS = [
    {:label => 'armscii8', :title => 'ARMSCII-8 Armenian', :values => [
      {:title => 'Armenian, Binary', :value => 'armscii8_bin'},
      {:title => 'Armenian, case-insensitive', :value => 'armscii8_general_ci'}
    ]},
    {:label => "ascii", :title => "US ASCII", :values => [
      {:title => "West European (multilingual), Binary", :value => "ascii_bin"},
      {:title => "West European (multilingual), case-insensitive", :value => "ascii_general_ci"},
    ]},
    {:label => "big5", :title => "Big5 Traditional Chinese", :values => [
      {:title => "Traditional Chinese, Binary", :value => "big5_bin"},
      {:title => "Traditional Chinese, case-insensitive", :value => "big5_chinese_ci"},
    ]},
    {:label => "binary", :title => "Binary pseudo charset", :values => [
      {:title => "Binary", :value => "binary"},
    ]},
    {:label => "cp1250", :title => "Windows Central European", :values => [
      {:title => "Central European (multilingual), Binary", :value => "cp1250_bin"},
      {:title => "Croatian, case-insensitive", :value => "cp1250_croatian_ci"},
      {:title => "Czech, case-sensitive", :value => "cp1250_czech_cs"},
      {:title => "Central European (multilingual), case-insensitive", :value => "cp1250_general_ci"},
    ]},
    {:label => "cp1251", :title => "Windows Cyrillic", :values => [
      {:title => "Cyrillic (multilingual), Binary", :value => "cp1251_bin"},
      {:title => "Bulgarian, case-insensitive", :value => "cp1251_bulgarian_ci"},
      {:title => "Cyrillic (multilingual), case-insensitive", :value => "cp1251_general_ci"},
      {:title => "Cyrillic (multilingual), case-sensitive", :value => "cp1251_general_cs"},
      {:title => "Ukrainian, case-insensitive", :value => "cp1251_ukrainian_ci"},
    ]},
    {:label => "cp1256", :title => "Windows Arabic", :values => [
      {:title => "Arabic, Binary", :value => "cp1256_bin"},
      {:title => "Arabic, case-insensitive", :value => "cp1256_general_ci"},
    ]},
    {:label => "cp1257", :title => "Windows Baltic", :values => [
      {:title => "Baltic (multilingual), Binary", :value => "cp1257_bin"},
      {:title => "Baltic (multilingual), case-insensitive", :value => "cp1257_general_ci"},
      {:title => "Lithuanian, case-insensitive", :value => "cp1257_lithuanian_ci"},
    ]},
    {:label => "cp850", :title => "DOS West European", :values => [
      {:title => "West European (multilingual), Binary", :value => "cp850_bin"},
      {:title => "West European (multilingual), case-insensitive", :value => "cp850_general_ci"},
    ]},
    {:label => "cp852", :title => "DOS Central European", :values => [
      {:title => "Central European (multilingual), Binary", :value => "cp852_bin"},
      {:title => "Central European (multilingual), case-insensitive", :value => "cp852_general_ci"},
    ]},
    {:label => "cp866", :title => "DOS Russian", :values => [
      {:title => "Russian, Binary", :value => "cp866_bin"},
      {:title => "Russian, case-insensitive", :value => "cp866_general_ci"},
    ]},
    {:label => "cp932", :title => "SJIS for Windows Japanese", :values => [
      {:title => "Japanese, Binary", :value => "cp932_bin"},
      {:title => "Japanese, case-insensitive", :value => "cp932_japanese_ci"},
    ]},
    {:label => "dec8", :title => "DEC West European", :values => [
      {:title => "West European (multilingual), Binary", :value => "dec8_bin"},
      {:title => "Swedish, case-insensitive", :value => "dec8_swedish_ci"},
    ]},
    {:label => "eucjpms", :title => "UJIS for Windows Japanese", :values => [
      {:title => "Japanese, Binary", :value => "eucjpms_bin"},
      {:title => "Japanese, case-insensitive", :value => "eucjpms_japanese_ci"},
    ]},
    {:label => "euckr", :title => "EUC-KR Korean", :values => [
      {:title => "Korean, Binary", :value => "euckr_bin"},
      {:title => "Korean, case-insensitive", :value => "euckr_korean_ci"},
    ]},
    {:label => "gb2312", :title => "GB2312 Simplified Chinese", :values => [
      {:title => "Simplified Chinese, Binary", :value => "gb2312_bin"},
      {:title => "Simplified Chinese, case-insensitive", :value => "gb2312_chinese_ci"},
    ]},
    {:label => "gbk", :title => "GBK Simplified Chinese", :values => [
      {:title => "Simplified Chinese, Binary", :value => "gbk_bin"},
      {:title => "Simplified Chinese, case-insensitive", :value => "gbk_chinese_ci"},
    ]},
    {:label => "geostd8", :title => "GEOSTD8 Georgian", :values => [
      {:title => "Georgian, Binary", :value => "geostd8_bin"},
      {:title => "Georgian, case-insensitive", :value => "geostd8_general_ci"},
    ]},
    {:label => "greek", :title => "ISO 8859-7 Greek", :values => [
      {:title => "Greek, Binary", :value => "greek_bin"},
      {:title => "Greek, case-insensitive", :value => "greek_general_ci"},
    ]},
    {:label => "hebrew", :title => "ISO 8859-8 Hebrew", :values => [
      {:title => "Hebrew, Binary", :value => "hebrew_bin"},
      {:title => "Hebrew, case-insensitive", :value => "hebrew_general_ci"},
    ]},
    {:label => "hp8", :title => "HP West European", :values => [
      {:title => "West European (multilingual), Binary", :value => "hp8_bin"},
      {:title => "English, case-insensitive", :value => "hp8_english_ci"},
    ]},
    {:label => "keybcs2", :title => "DOS Kamenicky Czech-Slovak", :values => [
      {:title => "Czech-Slovak, Binary", :value => "keybcs2_bin"},
      {:title => "Czech-Slovak, case-insensitive", :value => "keybcs2_general_ci"},
    ]},
    {:label => "koi8r", :title => "KOI8-R Relcom Russian", :values => [
      {:title => "Russian, Binary", :value => "koi8r_bin"},
      {:title => "Russian, case-insensitive", :value => "koi8r_general_ci"},
    ]},
    {:label => "koi8u", :title => "KOI8-U Ukrainian", :values => [
      {:title => "Ukrainian, Binary", :value => "koi8u_bin"},
      {:title => "Ukrainian, case-insensitive", :value => "koi8u_general_ci"},
    ]},
    {:label => "latin1", :title => "cp1252 West European", :values => [
      {:title => "West European (multilingual), Binary", :value => "latin1_bin"},
      {:title => "Danish, case-insensitive", :value => "latin1_danish_ci"},
      {:title => "West European (multilingual), case-insensitive", :value => "latin1_general_ci"},
      {:title => "West European (multilingual), case-sensitive", :value => "latin1_general_cs"},
      {:title => "German (dictionary), case-insensitive", :value => "latin1_german1_ci"},
      {:title => "German (phone book), case-insensitive", :value => "latin1_german2_ci"},
      {:title => "Spanish, case-insensitive", :value => "latin1_spanish_ci"},
      {:title => "Swedish, case-insensitive", :value => "latin1_swedish_ci"},
    ]},
    {:label => "latin2", :title => "ISO 8859-2 Central European", :values => [
      {:title => "Central European (multilingual), Binary", :value => "latin2_bin"},
      {:title => "Croatian, case-insensitive", :value => "latin2_croatian_ci"},
      {:title => "Czech, case-sensitive", :value => "latin2_czech_cs"},
      {:title => "Central European (multilingual), case-insensitive", :value => "latin2_general_ci"},
      {:title => "Hungarian, case-insensitive", :value => "latin2_hungarian_ci"},
    ]},
    {:label => "latin5", :title => "ISO 8859-9 Turkish", :values => [
      {:title => "Turkish, Binary", :value => "latin5_bin"},
      {:title => "Turkish, case-insensitive", :value => "latin5_turkish_ci"},
    ]},
    {:label => "latin7", :title => "ISO 8859-13 Baltic", :values => [
      {:title => "Baltic (multilingual), Binary", :value => "latin7_bin"},
      {:title => "Estonian, case-sensitive", :value => "latin7_estonian_cs"},
      {:title => "Baltic (multilingual), case-insensitive", :value => "latin7_general_ci"},
      {:title => "Baltic (multilingual), case-sensitive", :value => "latin7_general_cs"},
    ]},
    {:label => "macce", :title => "Mac Central European", :values => [
      {:title => "Central European (multilingual), Binary", :value => "macce_bin"},
      {:title => "Central European (multilingual), case-insensitive", :value => "macce_general_ci"},
    ]},
    {:label => "macroman", :title => "Mac West European", :values => [
      {:title => "West European (multilingual), Binary", :value => "macroman_bin"},
      {:title => "West European (multilingual), case-insensitive", :value => "macroman_general_ci"},
    ]},
    {:label => "sjis", :title => "Shift-JIS Japanese", :values => [
      {:title => "Japanese, Binary", :value => "sjis_bin"},
      {:title => "Japanese, case-insensitive", :value => "sjis_japanese_ci"},
    ]},
    {:label => "swe7", :title => "7bit Swedish", :values => [
      {:title => "Swedish, Binary", :value => "swe7_bin"},
      {:title => "Swedish, case-insensitive", :value => "swe7_swedish_ci"},
    ]},
    {:label => "tis620", :title => "TIS620 Thai", :values => [
      {:title => "Thai, Binary", :value => "tis620_bin"},
      {:title => "Thai, case-insensitive", :value => "tis620_thai_ci"},
    ]},
    {:label => "ucs2", :title => "UCS-2 Unicode", :values => [
      {:title => "Unicode (multilingual), Binary", :value => "ucs2_bin"},
      {:title => "Czech, case-insensitive", :value => "ucs2_czech_ci"},
      {:title => "Danish, case-insensitive", :value => "ucs2_danish_ci"},
      {:title => "Esperanto, case-insensitive", :value => "ucs2_esperanto_ci"},
      {:title => "Estonian, case-insensitive", :value => "ucs2_estonian_ci"},
      {:title => "Unicode (multilingual), case-insensitive", :value => "ucs2_general_ci"},
      {:title => "Hungarian, case-insensitive", :value => "ucs2_hungarian_ci"},
      {:title => "Icelandic, case-insensitive", :value => "ucs2_icelandic_ci"},
      {:title => "Latvian, case-insensitive", :value => "ucs2_latvian_ci"},
      {:title => "Lithuanian, case-insensitive", :value => "ucs2_lithuanian_ci"},
      {:title => "Persian, case-insensitive", :value => "ucs2_persian_ci"},
      {:title => "Polish, case-insensitive", :value => "ucs2_polish_ci"},
      {:title => "West European, case-insensitive", :value => "ucs2_roman_ci"},
      {:title => "Romanian, case-insensitive", :value => "ucs2_romanian_ci"},
      {:title => "Slovak, case-insensitive", :value => "ucs2_slovak_ci"},
      {:title => "Slovenian, case-insensitive", :value => "ucs2_slovenian_ci"},
      {:title => "Traditional Spanish, case-insensitive", :value => "ucs2_spanish2_ci"},
      {:title => "Spanish, case-insensitive", :value => "ucs2_spanish_ci"},
      {:title => "Swedish, case-insensitive", :value => "ucs2_swedish_ci"},
      {:title => "Turkish, case-insensitive", :value => "ucs2_turkish_ci"},
      {:title => "Unicode (multilingual), case-insensitive", :value => "ucs2_unicode_ci"},
    ]},
    {:label => "ujis", :title => "EUC-JP Japanese", :values => [
      {:title => "Japanese, Binary", :value => "ujis_bin"},
      {:title => "Japanese, case-insensitive", :value => "ujis_japanese_ci"},
    ]},
    {:label => "utf8", :title => "UTF-8 Unicode", :values => [
      {:title => "Unicode (multilingual), Binary", :value => "utf8_bin"},
      {:title => "Czech, case-insensitive", :value => "utf8_czech_ci"},
      {:title => "Danish, case-insensitive", :value => "utf8_danish_ci"},
      {:title => "Esperanto, case-insensitive", :value => "utf8_esperanto_ci"},
      {:title => "Estonian, case-insensitive", :value => "utf8_estonian_ci"},
      {:title => "Unicode (multilingual), case-insensitive", :value => "utf8_general_ci"},
      {:title => "Hungarian, case-insensitive", :value => "utf8_hungarian_ci"},
      {:title => "Icelandic, case-insensitive", :value => "utf8_icelandic_ci"},
      {:title => "Latvian, case-insensitive", :value => "utf8_latvian_ci"},
      {:title => "Lithuanian, case-insensitive", :value => "utf8_lithuanian_ci"},
      {:title => "Persian, case-insensitive", :value => "utf8_persian_ci"},
      {:title => "Polish, case-insensitive", :value => "utf8_polish_ci"},
      {:title => "West European, case-insensitive", :value => "utf8_roman_ci"},
      {:title => "Romanian, case-insensitive", :value => "utf8_romanian_ci"},
      {:title => "Slovak, case-insensitive", :value => "utf8_slovak_ci"},
      {:title => "Slovenian, case-insensitive", :value => "utf8_slovenian_ci"},
      {:title => "Traditional Spanish, case-insensitive", :value => "utf8_spanish2_ci"},
      {:title => "Spanish, case-insensitive", :value => "utf8_spanish_ci"},
      {:title => "Swedish, case-insensitive", :value => "utf8_swedish_ci"},
      {:title => "Turkish, case-insensitive", :value => "utf8_turkish_ci"},
      {:title => "Unicode (multilingual), case-insensitive", :value => "utf8_unicode_ci"},
    ]},
  ]
  Collations = COLLATIONS.map do |group|
    values = group.delete :values
    v = OpenStruct.new group
    v.values = values.map { |col| OpenStruct.new col }
    v
  end
end