File: mysql_enc_to_ruby.rb

package info (click to toggle)
ruby-mysql2 0.3.15-1~bpo70%2B1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy-backports
  • size: 412 kB
  • sloc: ansic: 2,052; ruby: 1,762; sh: 25; makefile: 7
file content (82 lines) | stat: -rw-r--r-- 2,129 bytes parent folder | download | duplicates (2)
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
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
require 'mysql2'

user, pass, host, port = ENV.values_at('user', 'pass', 'host', 'port')

mysql_to_rb = {
  "big5"     => "Big5",
  "dec8"     => "NULL",
  "cp850"    => "CP850",
  "hp8"      => "NULL",
  "koi8r"    => "KOI8-R",
  "latin1"   => "ISO-8859-1",
  "latin2"   => "ISO-8859-2",
  "swe7"     => "NULL",
  "ascii"    => "US-ASCII",
  "ujis"     => "eucJP-ms",
  "sjis"     => "Shift_JIS",
  "hebrew"   => "ISO-8859-8",
  "tis620"   => "TIS-620",
  "euckr"    => "EUC-KR",
  "koi8u"    => "KOI8-R",
  "gb2312"   => "GB2312",
  "greek"    => "ISO-8859-7",
  "cp1250"   => "Windows-1250",
  "gbk"      => "GBK",
  "latin5"   => "ISO-8859-9",
  "armscii8" => "NULL",
  "utf8"     => "UTF-8",
  "ucs2"     => "UTF-16BE",
  "cp866"    => "IBM866",
  "keybcs2"  => "NULL",
  "macce"    => "macCentEuro",
  "macroman" => "macRoman",
  "cp852"    => "CP852",
  "latin7"   => "ISO-8859-13",
  "utf8mb4"  => "UTF-8",
  "cp1251"   => "Windows-1251",
  "utf16"    => "UTF-16",
  "cp1256"   => "Windows-1256",
  "cp1257"   => "Windows-1257",
  "utf32"    => "UTF-32",
  "binary"   => "ASCII-8BIT",
  "geostd8"  => "NULL",
  "cp932"    => "Windows-31J",
  "eucjpms"  => "eucJP-ms"
}

client     = Mysql2::Client.new(:username => user, :password => pass, :host => host, :port => port.to_i)
collations = client.query "SHOW COLLATION", :as => :array
encodings  = Array.new(collations.to_a.last[2].to_i)
encodings_with_nil = Array.new(encodings.size)

collations.each do |collation|
  mysql_col_idx = collation[2].to_i
  rb_enc = mysql_to_rb[collation[1]]
  encodings[mysql_col_idx-1] = [mysql_col_idx, rb_enc]
end

encodings.each_with_index do |encoding, idx|
  encodings_with_nil[idx] = (encoding || [idx, "NULL"])
end

encodings_with_nil.sort! do |a, b|
  a[0] <=> b[0]
end

encodings_with_nil = encodings_with_nil.map do |encoding|
  name = "NULL"

  if !encoding.nil? && encoding[1] != "NULL"
    name = "\"#{encoding[1]}\""
  end

  "  #{name}"
end

# start printing output

puts "const char *mysql2_mysql_enc_to_rb[] = {"
puts encodings_with_nil.join(",\n")
puts "};"
puts