Example #1
0
File: encoding.c Project: 217/ruby
/*
 * call-seq:
 *   enc.replicate(name) -> encoding
 *
 * Returns a replicated encoding of _enc_ whose name is _name_.
 * The new encoding should have the same byte structure of _enc_.
 * If _name_ is used by another encoding, raise ArgumentError.
 *
 */
static VALUE
enc_replicate(VALUE encoding, VALUE name)
{
    return rb_enc_from_encoding_index(
	rb_enc_replicate(StringValueCStr(name),
			 rb_to_encoding(encoding)));
}
Example #2
0
File: encoding.c Project: 217/ruby
int
rb_define_dummy_encoding(const char *name)
{
    int index = rb_enc_replicate(name, rb_ascii8bit_encoding());
    rb_encoding *enc = enc_table.list[index].enc;

    ENC_SET_DUMMY(enc);
    return index;
}
Example #3
0
rb_encoding* rb_nkf_enc_get(const char *name)
{
#if 0
    int idx = rb_enc_find_index(name);
    if (idx < 0) {
	nkf_encoding *nkf_enc = nkf_enc_find(name);
	idx = rb_enc_find_index(nkf_enc_name(nkf_enc_to_base_encoding(nkf_enc)));
	if (idx < 0) {
	    idx = rb_define_dummy_encoding(name);
	} else {
	    rb_encoding *rb_enc = rb_enc_from_index(idx);
	    idx = rb_enc_replicate(name, rb_enc);
	}
    }
    return rb_enc_from_index(idx);
#else
	struct nkf_osx_name_enc_table { 
	  const char*      name; 
	  CFStringEncoding enc;
	};

	static struct nkf_osx_name_enc_table table[] = {
	  { "BINARY",      kCFStringEncodingNonLossyASCII },
	  { "US-ASCII",    kCFStringEncodingASCII  	},
	  { "ISO-2022-JP", kCFStringEncodingISO_2022_JP  	},
	  { "ISO-2022-JP-1", kCFStringEncodingISO_2022_JP_1  	},
	  { "ISO-2022-JP-2", kCFStringEncodingISO_2022_JP_2  	},
	  { "ISO-2022-JP-3", kCFStringEncodingISO_2022_JP_3  	},
	  { "EUC-JP",      kCFStringEncodingEUC_JP },
	  { "Shift_JIS",   kCFStringEncodingShiftJIS 	},
	  { "UTF-8",       kCFStringEncodingUTF8   	},
	  { "UTF-16",      kCFStringEncodingUTF16   },
	  { "UTF-16BE",    kCFStringEncodingUTF16BE },
	  { "UTF-16LE",    kCFStringEncodingUTF16LE },
	  { "UTF-32",      kCFStringEncodingUTF32   },
	  { "UTF-32BE",    kCFStringEncodingUTF32BE },
	  { "UTF-32LE",    kCFStringEncodingUTF32LE },
	  { NULL,          kCFStringEncodingNonLossyASCII }
	};

	struct nkf_osx_name_enc_table* ptr = table;
	while (ptr->name) {
	  if (strcmp(name, ptr->name) == 0)
		return &(ptr->enc);
	  ptr++;
	}
	return &(ptr->enc);
#endif
}
Example #4
0
rb_encoding* rb_nkf_enc_get(const char *name)
{
    int idx = rb_enc_find_index(name);
    if (idx < 0) {
	nkf_encoding *nkf_enc = nkf_enc_find(name);
	idx = rb_enc_find_index(nkf_enc_name(nkf_enc_to_base_encoding(nkf_enc)));
	if (idx < 0) {
	    idx = rb_define_dummy_encoding(name);
	} else {
	    rb_encoding *rb_enc = rb_enc_from_index(idx);
	    idx = rb_enc_replicate(name, rb_enc);
	}
    }
    return rb_enc_from_index(idx);
}