Module: Kconv

Defined in:
lib/kconv.rb

Overview

Kanji Converter for Ruby.

Constant Summary collapse

AUTO =

Auto-Detect

NKF::AUTO
JIS =

ISO-2022-JP

NKF::JIS
EUC =

EUC-JP

NKF::EUC
SJIS =

Shift_JIS

NKF::SJIS
BINARY =

BINARY

NKF::BINARY
NOCONV =

NOCONV

NKF::NOCONV
ASCII =

ASCII

NKF::ASCII
UTF8 =

UTF-8

NKF::UTF8
UTF16 =

UTF-16

NKF::UTF16
UTF32 =

UTF-32

NKF::UTF32
UNKNOWN =

UNKNOWN

NKF::UNKNOWN

Class Method Summary collapse

Class Method Details

.guess(str) ⇒ Object

call-seq:

Kconv.guess(str)   => encoding

Guess input encoding by NKF.guess



141
142
143
# File 'lib/kconv.rb', line 141

def guess(str)
  ::NKF::guess(str)
end

.iseuc(str) ⇒ Object

call-seq:

Kconv.iseuc(str)   => true or false

Returns whether input encoding is EUC-JP or not.

Note don’t expect this return value is MatchData.



156
157
158
# File 'lib/kconv.rb', line 156

def iseuc(str)
  str.dup.force_encoding(EUC).valid_encoding?
end

.isjis(str) ⇒ Object

call-seq:

Kconv.isjis(str)   => true or false

Returns whether input encoding is ISO-2022-JP or not.



174
175
176
177
178
179
180
181
182
183
184
185
186
# File 'lib/kconv.rb', line 174

def isjis(str)
  /\A [\t\n\r\x20-\x7E]*
    (?:
      (?:\x1b \x28 I      [\x21-\x7E]*
        |\x1b \x28 J      [\x21-\x7E]*
        |\x1b \x24 @      (?:[\x21-\x7E]{2})*
        |\x1b \x24 B      (?:[\x21-\x7E]{2})*
        |\x1b \x24 \x28 D (?:[\x21-\x7E]{2})*
      )*
      \x1b \x28 B [\t\n\r\x20-\x7E]*
    )*
   \z/nox =~ str.dup.force_encoding('BINARY') ? true : false
end

.issjis(str) ⇒ Object

call-seq:

Kconv.issjis(str)   => true or false

Returns whether input encoding is Shift_JIS or not.



165
166
167
# File 'lib/kconv.rb', line 165

def issjis(str)
  str.dup.force_encoding(SJIS).valid_encoding?
end

.isutf8(str) ⇒ Object

call-seq:

Kconv.isutf8(str)   => true or false

Returns whether input encoding is UTF-8 or not.



193
194
195
# File 'lib/kconv.rb', line 193

def isutf8(str)
  str.dup.force_encoding(UTF8).valid_encoding?
end

.kconv(str, to_enc, from_enc = nil) ⇒ Object

call-seq:

Kconv.kconv(str, to_enc, from_enc=nil)

Convert str to to_enc. to_enc and from_enc are given as constants of Kconv or Encoding objects.



57
58
59
60
61
62
63
# File 'lib/kconv.rb', line 57

def kconv(str, to_enc, from_enc=nil)
  opt = ''
  opt += ' --ic=' + from_enc.to_s if from_enc
  opt += ' --oc=' + to_enc.to_s if to_enc

  ::NKF::nkf(opt, str)
end

.toeuc(str) ⇒ Object

call-seq:

Kconv.toeuc(str)   => string

Convert str to EUC-JP



83
84
85
# File 'lib/kconv.rb', line 83

def toeuc(str)
  kconv(str, EUC)
end

.tojis(str) ⇒ Object

call-seq:

Kconv.tojis(str)   => string

Convert str to ISO-2022-JP



74
75
76
# File 'lib/kconv.rb', line 74

def tojis(str)
  kconv(str, JIS)
end

.tolocale(str) ⇒ Object

call-seq:

Kconv.tolocale   => string

Convert self to locale encoding



128
129
130
# File 'lib/kconv.rb', line 128

def tolocale(str)
  kconv(str, Encoding.locale_charmap)
end

.tosjis(str) ⇒ Object

call-seq:

Kconv.tosjis(str)   => string

Convert str to Shift_JIS



92
93
94
# File 'lib/kconv.rb', line 92

def tosjis(str)
  kconv(str, SJIS)
end

.toutf16(str) ⇒ Object

call-seq:

Kconv.toutf16(str)   => string

Convert str to UTF-16



110
111
112
# File 'lib/kconv.rb', line 110

def toutf16(str)
  kconv(str, UTF16)
end

.toutf32(str) ⇒ Object

call-seq:

Kconv.toutf32(str)   => string

Convert str to UTF-32



119
120
121
# File 'lib/kconv.rb', line 119

def toutf32(str)
  kconv(str, UTF32)
end

.toutf8(str) ⇒ Object

call-seq:

Kconv.toutf8(str)   => string

Convert str to UTF-8



101
102
103
# File 'lib/kconv.rb', line 101

def toutf8(str)
  kconv(str, UTF8)
end