Extended maintenance of Ruby 1.9.3 ended on February 23, 2015. Read more

In Files

  • rss/converter.rb

Class/Module Index [+]

Quicksearch

RSS::Converter

Public Class Methods

new(to_enc, from_enc=nil) click to toggle source
 
               # File rss/converter.rb, line 9
def initialize(to_enc, from_enc=nil)
  if "".respond_to?(:encode)
    @to_encoding = to_enc
    return
  end
  normalized_to_enc = to_enc.downcase.gsub(/-/, '_')
  from_enc ||= 'utf-8'
  normalized_from_enc = from_enc.downcase.gsub(/-/, '_')
  if normalized_to_enc == normalized_from_enc
    def_same_enc()
  else
    def_diff_enc = "def_to_#{normalized_to_enc}_from_#{normalized_from_enc}"
    if respond_to?(def_diff_enc)
      __send__(def_diff_enc)
    else
      def_else_enc(to_enc, from_enc)
    end
  end
end
            

Public Instance Methods

convert(value) click to toggle source
 
               # File rss/converter.rb, line 29
def convert(value)
  if value.is_a?(String) and value.respond_to?(:encode)
    value.encode(@to_encoding)
  else
    value
  end
end
            
def_convert(depth=0) click to toggle source
 
               # File rss/converter.rb, line 37
    def def_convert(depth=0)
      instance_eval("      def convert(value)
        if value.kind_of?(String)
          #{yield('value')}
        else
          value
        end
      end
", *get_file_and_line_from_caller(depth))
    end
            
def_else_enc(to_enc, from_enc) click to toggle source
 
               # File rss/converter.rb, line 67
def def_else_enc(to_enc, from_enc)
  def_iconv_convert(to_enc, from_enc, 0)
end
            
def_iconv_convert(to_enc, from_enc, depth=0) click to toggle source
 
               # File rss/converter.rb, line 49
def def_iconv_convert(to_enc, from_enc, depth=0)
  begin
    require "iconv"
    @iconv = Iconv.new(to_enc, from_enc)
    def_convert(depth+1) do |value|
      <<-EOC
      begin
        @iconv.iconv(#{value})
      rescue Iconv::Failure
        raise ConversionError.new(#{value}, "#{to_enc}", "#{from_enc}")
      end
      EOC
    end
  rescue LoadError, ArgumentError, SystemCallError
    raise UnknownConversionMethodError.new(to_enc, from_enc)
  end
end
            
def_same_enc() click to toggle source
 
               # File rss/converter.rb, line 71
def def_same_enc()
  def_convert do |value|
    value
  end
end
            
def_to_euc_jp_from_iso_2022_jp() click to toggle source
 
               # File rss/converter.rb, line 131
def def_to_euc_jp_from_iso_2022_jp
  require "nkf"
  def_convert do |value|
    "NKF.nkf('-Je', #{value})"
  end
end
            
def_to_euc_jp_from_shift_jis() click to toggle source
 
               # File rss/converter.rb, line 117
def def_to_euc_jp_from_shift_jis
  require "nkf"
  def_convert do |value|
    "NKF.nkf('-Se', #{value})"
  end
end
            
def_to_euc_jp_from_utf_8() click to toggle source
 
               # File rss/converter.rb, line 101
def def_to_euc_jp_from_utf_8
  def_uconv_convert_if_can('u8toeuc', 'EUC-JP', 'UTF-8', '-We')
end
            
def_to_iso_2022_jp_from_euc_jp() click to toggle source
 
               # File rss/converter.rb, line 138
def def_to_iso_2022_jp_from_euc_jp
  require "nkf"
  def_convert do |value|
    "NKF.nkf('-Ej', #{value})"
  end
end
            
def_to_iso_8859_1_from_utf_8() click to toggle source
 
               # File rss/converter.rb, line 151
def def_to_iso_8859_1_from_utf_8
  def_convert do |value|
    <<-EOC
    array_utf8 = #{value}.unpack('U*')
    array_enc = []
    array_utf8.each do |num|
      if num <= 0xFF
        array_enc << num
      else
        array_enc.concat "&\#\#{num};".unpack('C*')
      end
    end
    array_enc.pack('C*')
    EOC
  end
end
            
def_to_shift_jis_from_euc_jp() click to toggle source
 
               # File rss/converter.rb, line 124
def def_to_shift_jis_from_euc_jp
  require "nkf"
  def_convert do |value|
    "NKF.nkf('-Es', #{value})"
  end
end
            
def_to_shift_jis_from_utf_8() click to toggle source
 
               # File rss/converter.rb, line 109
def def_to_shift_jis_from_utf_8
  def_uconv_convert_if_can('u8tosjis', 'Shift_JIS', 'UTF-8', '-Ws')
end
            
def_to_utf_8_from_euc_jp() click to toggle source
 
               # File rss/converter.rb, line 105
def def_to_utf_8_from_euc_jp
  def_uconv_convert_if_can('euctou8', 'UTF-8', 'EUC-JP', '-Ew')
end
            
def_to_utf_8_from_iso_8859_1() click to toggle source
 
               # File rss/converter.rb, line 145
def def_to_utf_8_from_iso_8859_1
  def_convert do |value|
    "#{value}.unpack('C*').pack('U*')"
  end
end
            
def_to_utf_8_from_shift_jis() click to toggle source
 
               # File rss/converter.rb, line 113
def def_to_utf_8_from_shift_jis
  def_uconv_convert_if_can('sjistou8', 'UTF-8', 'Shift_JIS', '-Sw')
end
            
def_uconv_convert_if_can(meth, to_enc, from_enc, nkf_arg) click to toggle source
 
               # File rss/converter.rb, line 77
def def_uconv_convert_if_can(meth, to_enc, from_enc, nkf_arg)
  begin
    require "uconv"
    def_convert(1) do |value|
      <<-EOC
      begin
        Uconv.#{meth}(#{value})
      rescue Uconv::Error
        raise ConversionError.new(#{value}, "#{to_enc}", "#{from_enc}")
      end
      EOC
    end
  rescue LoadError
    require 'nkf'
    if NKF.const_defined?(:UTF8)
      def_convert(1) do |value|
        "NKF.nkf(#{nkf_arg.dump}, #{value})"
      end
    else
      def_iconv_convert(to_enc, from_enc, 1)
    end
  end
end
            

Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.

If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.

If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.

If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.