Module: Kana::Translator::Engine::Nkf

Included in:
Kana::Translator
Defined in:
lib/kana/translator/engine/nkf.rb

Constant Summary collapse

SYM_ENC =
{
  :sjis  => NKF::SJIS,
  :eucjp => NKF::EUC,
  :utf8  => NKF::UTF8,
  :utf16 => NKF::UTF16,
  :jis   => NKF::JIS,
}.freeze
ENC_OPT =
{
  NKF::SJIS  => '-S',
  NKF::EUC   => '-E',
  NKF::UTF8  => '-W',
  NKF::UTF16 => '-W16',
  NKF::JIS   => '-J',
}.freeze
DEC_OPT =
{
    NKF::SJIS  => '-s',
    NKF::EUC   => '-e',
    NKF::UTF16 => '-w16',
    NKF::JIS   => '-j',
}.freeze

Instance Method Summary collapse

Instance Method Details

#support?(str, enc) ⇒ Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/kana/translator/engine/nkf.rb', line 43

def support?(str, enc)
  (SYM_ENC[enc] || ([NKF::BINARY, NKF::UNKNOWN].include?(NKF.guess(str)) == false))
end

#to_encode(str, original_encoding) ⇒ Object



36
37
38
39
40
41
# File 'lib/kana/translator/engine/nkf.rb', line 36

def to_encode(str, original_encoding)
  return str if original_encoding == NKF::UTF8 || original_encoding == NKF::ASCII
  enc = DEC_OPT[original_encoding]
  opt = ['-m0', '-x', '-W', enc]
  NKF.nkf(opt.join(' '), str)
end

#to_utf8(str, original_encoding = nil) ⇒ Object



26
27
28
29
30
31
32
33
34
# File 'lib/kana/translator/engine/nkf.rb', line 26

def to_utf8(str, original_encoding=nil)
  original_encoding = SYM_ENC[original_encoding] || original_encoding || NKF.guess(str)
  if original_encoding != NKF::UTF8 && original_encoding != NKF::ASCII
    opt = ['-m0', '-x', '-w']
    opt << ENC_OPT[original_encoding]
    str = NKF.nkf(opt.join(' '), str)
  end
  [str, original_encoding]
end