Class: Findr::Encoder::String

Inherits:
Object
  • Object
show all
Defined in:
lib/findr/encoder/string.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(other_coding) ⇒ String

Returns a new instance of String.



4
5
6
# File 'lib/findr/encoder/string.rb', line 4

def initialize( other_coding )
  @other_coding = other_coding.split(',').map {|coding| Encoding.find(coding)}
end

Class Method Details

.listObject

Returns a list of valid encodings



30
31
32
# File 'lib/findr/encoder/string.rb', line 30

def self.list
  return Encoding.list.map(&:to_s)
end

Instance Method Details

#decode(string) ⇒ Object

Encodes given string from @other_coding to utf8.



9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/findr/encoder/string.rb', line 9

def decode( string )
  coding = nil
  have_valid_coding = @other_coding.any? do |c|
    string.force_encoding(c)
    coding = c
    string.valid_encoding?
  end
  fail Error.new("No valid coding given.") unless have_valid_coding
  return [string.encode('UTF-8'), coding.to_s]
rescue
  raise Error, "Error when decoding from '#{@other_coding}' into 'UTF-8': #{$!}"
end

#encode(string, coding) ⇒ Object

Encodes given utf8 string into coding.



23
24
25
26
27
# File 'lib/findr/encoder/string.rb', line 23

def encode( string, coding )
  return string.encode(coding)
rescue
  raise Error, "Error when encoding from 'UTF-8' into '#{coding}'."
end