Class RSS::Converter
In: lib/rss/converter.rb
Parent: Object

Methods

Included Modules

Utils

Public Class methods

[Source]

    # File lib/rss/converter.rb, line 9
 9:     def initialize(to_enc, from_enc=nil)
10:       normalized_to_enc = to_enc.downcase.gsub(/-/, '_')
11:       from_enc ||= 'utf-8'
12:       normalized_from_enc = from_enc.downcase.gsub(/-/, '_')
13:       if normalized_to_enc == normalized_from_enc
14:         def_same_enc()
15:       else
16:         def_diff_enc = "def_to_#{normalized_to_enc}_from_#{normalized_from_enc}"
17:         if respond_to?(def_diff_enc)
18:           __send__(def_diff_enc)
19:         else
20:           def_else_enc(to_enc, from_enc)
21:         end
22:       end
23:     end

Public Instance methods

[Source]

    # File lib/rss/converter.rb, line 25
25:     def convert(value)
26:       value
27:     end

[Source]

    # File lib/rss/converter.rb, line 29
29:     def def_convert(depth=0)
30:       instance_eval("def convert(value)\nif value.kind_of?(String)\n\#{yield('value')}\nelse\nvalue\nend\nend\n", *get_file_and_line_from_caller(depth))
31:     end

[Source]

    # File lib/rss/converter.rb, line 61
61:     def def_else_enc(to_enc, from_enc)
62:       def_iconv_convert(to_enc, from_enc, 0)
63:     end

[Source]

    # File lib/rss/converter.rb, line 42
42:     def def_iconv_convert(to_enc, from_enc, depth=0)
43:       begin
44:         require "iconv"
45:         @iconv = Iconv.new(to_enc, from_enc)
46:         def_convert(depth+1) do |value|
47:           "begin\n@iconv.iconv(\#{value})\nrescue Iconv::Failure\nraise ConversionError.new(\#{value}, \"\#{to_enc}\", \"\#{from_enc}\")\nend\n"
48:         end
49:       rescue LoadError, ArgumentError, SystemCallError
50:         raise UnknownConversionMethodError.new(to_enc, from_enc)
51:       end
52:     end

[Source]

    # File lib/rss/converter.rb, line 65
65:     def def_same_enc()
66:       def_convert do |value|
67:         value
68:       end
69:     end

[Source]

     # File lib/rss/converter.rb, line 126
126:     def def_to_euc_jp_from_iso_2022_jp
127:       require "nkf"
128:       def_convert do |value|
129:         "NKF.nkf('-Je', #{value})"
130:       end
131:     end

[Source]

     # File lib/rss/converter.rb, line 112
112:     def def_to_euc_jp_from_shift_jis
113:       require "nkf"
114:       def_convert do |value|
115:         "NKF.nkf('-Se', #{value})"
116:       end
117:     end

[Source]

    # File lib/rss/converter.rb, line 96
96:     def def_to_euc_jp_from_utf_8
97:       def_uconv_convert_if_can('u8toeuc', 'EUC-JP', 'UTF-8', '-We')
98:     end

[Source]

     # File lib/rss/converter.rb, line 133
133:     def def_to_iso_2022_jp_from_euc_jp
134:       require "nkf"
135:       def_convert do |value|
136:         "NKF.nkf('-Ej', #{value})"
137:       end
138:     end

[Source]

     # File lib/rss/converter.rb, line 146
146:     def def_to_iso_8859_1_from_utf_8
147:       def_convert do |value|
148:         "array_utf8 = \#{value}.unpack('U*')\narray_enc = []\narray_utf8.each do |num|\nif num <= 0xFF\narray_enc << num\nelse\narray_enc.concat \"&\\#\\\#{num};\".unpack('C*')\nend\nend\narray_enc.pack('C*')\n"
149:       end
150:     end

[Source]

     # File lib/rss/converter.rb, line 119
119:     def def_to_shift_jis_from_euc_jp
120:       require "nkf"
121:       def_convert do |value|
122:         "NKF.nkf('-Es', #{value})"
123:       end
124:     end

[Source]

     # File lib/rss/converter.rb, line 104
104:     def def_to_shift_jis_from_utf_8
105:       def_uconv_convert_if_can('u8tosjis', 'Shift_JIS', 'UTF-8', '-Ws')
106:     end

[Source]

     # File lib/rss/converter.rb, line 100
100:     def def_to_utf_8_from_euc_jp
101:       def_uconv_convert_if_can('euctou8', 'UTF-8', 'EUC-JP', '-Ew')
102:     end

[Source]

     # File lib/rss/converter.rb, line 140
140:     def def_to_utf_8_from_iso_8859_1
141:       def_convert do |value|
142:         "#{value}.unpack('C*').pack('U*')"
143:       end
144:     end

[Source]

     # File lib/rss/converter.rb, line 108
108:     def def_to_utf_8_from_shift_jis
109:       def_uconv_convert_if_can('sjistou8', 'UTF-8', 'Shift_JIS', '-Sw')
110:     end

[Source]

    # File lib/rss/converter.rb, line 71
71:     def def_uconv_convert_if_can(meth, to_enc, from_enc, nkf_arg)
72:       begin
73:         require "uconv"
74:         def_convert(1) do |value|
75:           "begin\nUconv.\#{meth}(\#{value})\nrescue Uconv::Error\nraise ConversionError.new(\#{value}, \"\#{to_enc}\", \"\#{from_enc}\")\nend\n"
76:         end
77:       rescue LoadError
78:         require 'nkf'
79:         if NKF.const_defined?(:UTF8)
80:           def_convert(1) do |value|
81:             "NKF.nkf(#{nkf_arg.dump}, #{value})"
82:           end
83:         else
84:           def_iconv_convert(to_enc, from_enc, 1)
85:         end
86:       end
87:     end

[Validate]