Module: NKF

Defined in:
ext/nkf/nkf.c

Constant Summary collapse

AUTO =
Qnil
NOCONV =
Qnil
UNKNOWN =
Qnil
BINARY =
rb_enc_from_encoding(rb_nkf_enc_get("BINARY"))
ASCII =
rb_enc_from_encoding(rb_nkf_enc_get("US-ASCII"))
JIS =
rb_enc_from_encoding(rb_nkf_enc_get("ISO-2022-JP"))
EUC =
rb_enc_from_encoding(rb_nkf_enc_get("EUC-JP"))
SJIS =
rb_enc_from_encoding(rb_nkf_enc_get("Shift_JIS"))
UTF8 =
rb_enc_from_encoding(rb_utf8_encoding())
UTF16 =
rb_enc_from_encoding(rb_nkf_enc_get("UTF-16BE"))
UTF32 =
rb_enc_from_encoding(rb_nkf_enc_get("UTF-32BE"))
VERSION =

Full version string of nkf

rb_str_new2(RUBY_NKF_VERSION)
NKF_VERSION =

Version of nkf

rb_str_new2(NKF_VERSION)
NKF_RELEASE_DATE =

Release date of nkf

rb_str_new2(NKF_RELEASE_DATE)
GEM_VERSION =

Version of nkf library

rb_str_new_cstr(NKF_GEM_VERSION)

Class Method Summary collapse

Class Method Details

.guess(str) ⇒ Encoding

Returns guessed encoding of str by nkf routine.

Returns:

  • (Encoding)


228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
# File 'ext/nkf/nkf.c', line 228

static VALUE
rb_nkf_guess(VALUE obj, VALUE src)
{
    nkf_state_t nkf_state_object = {0};
    nkf_state_t *nkf_state = &nkf_state_object;
    rb_nkf_callback_state_t callback_state = {0};
    VALUE guessed;
    nkf_state_init(nkf_state);

    callback_state.input_ctr = 0;
    callback_state.input = (unsigned char *)StringValuePtr(src);
    callback_state.i_len = RSTRING_LENINT(src);

    guess_f = TRUE;
    nkf_state->callback_arg = &callback_state;
    kanji_convert(nkf_state, NULL);

    guessed = rb_enc_from_encoding(rb_nkf_enc_get(get_guessed_code(nkf_state)));
    nkf_state_dispose(nkf_state);
    return guessed;
}

.nkf(opt, str) ⇒ String

Convert str and return converted result. Conversion details are specified by opt as String.

require 'nkf'
output = NKF.nkf("-s", input)

Returns:



166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
# File 'ext/nkf/nkf.c', line 166

static VALUE
rb_nkf_convert(VALUE obj, VALUE opt, VALUE src)
{
    nkf_state_t nkf_state_object = {0};
    nkf_state_t *nkf_state = &nkf_state_object;
    rb_nkf_callback_state_t callback_state;
    VALUE tmp;
    nkf_state_init(nkf_state);
    nkf_split_options(nkf_state, StringValueCStr(opt));
    if (!output_encoding) {
        nkf_state_dispose(nkf_state);
        rb_raise(rb_eArgError, "no output encoding given");
    }

    switch (nkf_enc_to_index(output_encoding)) {
    case UTF_8_BOM:    output_encoding = nkf_enc_from_index(UTF_8); break;
    case UTF_16BE_BOM: output_encoding = nkf_enc_from_index(UTF_16BE); break;
    case UTF_16LE_BOM: output_encoding = nkf_enc_from_index(UTF_16LE); break;
    case UTF_32BE_BOM: output_encoding = nkf_enc_from_index(UTF_32BE); break;
    case UTF_32LE_BOM: output_encoding = nkf_enc_from_index(UTF_32LE); break;
    }
    output_bom_f = FALSE;

    callback_state.incsize = INCSIZE;

    callback_state.input_ctr = 0;
    callback_state.input = (unsigned char *)StringValuePtr(src);
    callback_state.i_len = RSTRING_LENINT(src);
    tmp = rb_str_new(0, callback_state.i_len*3 + 10);

    callback_state.output_ctr = 0;
    callback_state.output     = (unsigned char *)RSTRING_PTR(tmp);
    callback_state.o_len      = RSTRING_LENINT(tmp);
    callback_state.result     = tmp;
    *callback_state.output    = '\0';

    /* use _result_ begin*/
    nkf_state->callback_arg = &callback_state;
    kanji_convert(nkf_state, NULL);
    nkf_state->callback_arg = NULL;
    /* use _result_ end */

    rb_str_set_len(tmp, callback_state.output_ctr);

    if (mimeout_f)
        rb_enc_associate(tmp, rb_usascii_encoding());
    else
        rb_enc_associate(tmp, rb_nkf_enc_get(nkf_enc_name(output_encoding)));

    nkf_state_dispose(nkf_state);
    return tmp;
}