mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* encoding.c (rb_primary_encoding): added Encoding.primary_encoding.
* parse.y (rb_parser_encoding): added. * ruby.c (proc_options): added -E and --encoding options. * ruby.c (process_options): set primary encoding from command line option if set, or source encoding. * include/ruby/encoding.h (rb_enc_from_encoding, rb_get_primary_encoding, rb_set_primary_encoding): prototypes. * include/ruby/node.h (rb_parser_encoding): prototype. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13729 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
b06a606278
commit
3cd040b6ef
6 changed files with 108 additions and 11 deletions
42
encoding.c
42
encoding.c
|
@ -43,8 +43,8 @@ enc_new(rb_encoding *encoding)
|
|||
return enc;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
enc_from_encoding(rb_encoding *enc)
|
||||
VALUE
|
||||
rb_enc_from_encoding(rb_encoding *enc)
|
||||
{
|
||||
return enc_initialized_p(enc) ? ENC_FROM_ENCODING(enc) : enc_new(enc);
|
||||
}
|
||||
|
@ -384,7 +384,7 @@ rb_obj_encoding(VALUE obj)
|
|||
if (!enc) {
|
||||
rb_raise(rb_eTypeError, "unknown encoding");
|
||||
}
|
||||
return enc_from_encoding(enc);
|
||||
return rb_enc_from_encoding(enc);
|
||||
}
|
||||
|
||||
|
||||
|
@ -482,7 +482,7 @@ enc_list(VALUE klass)
|
|||
for (i = 0; i < enc_table_size; ++i) {
|
||||
rb_encoding *enc = enc_table[i].enc;
|
||||
if (enc) {
|
||||
rb_ary_push(ary, enc_from_encoding(enc));
|
||||
rb_ary_push(ary, rb_enc_from_encoding(enc));
|
||||
}
|
||||
}
|
||||
return ary;
|
||||
|
@ -495,7 +495,7 @@ enc_find(VALUE klass, VALUE enc)
|
|||
if (idx < 0) {
|
||||
rb_raise(rb_eArgError, "unknown encoding name - %s", RSTRING_PTR(enc));
|
||||
}
|
||||
return enc_from_encoding(rb_enc_from_index(idx));
|
||||
return rb_enc_from_encoding(rb_enc_from_index(idx));
|
||||
}
|
||||
|
||||
/* :nodoc: */
|
||||
|
@ -513,6 +513,34 @@ enc_load(VALUE klass, VALUE str)
|
|||
return enc_find(klass, str);
|
||||
}
|
||||
|
||||
static VALUE rb_primary_encoding;
|
||||
|
||||
VALUE
|
||||
rb_get_primary_encoding(void)
|
||||
{
|
||||
return rb_primary_encoding;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
get_primary_encoding(VALUE klass)
|
||||
{
|
||||
return rb_get_primary_encoding();
|
||||
}
|
||||
|
||||
void
|
||||
rb_set_primary_encoding(VALUE encoding)
|
||||
{
|
||||
rb_to_encoding(encoding);
|
||||
rb_primary_encoding = encoding;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
set_primary_encoding(VALUE klass, VALUE enc)
|
||||
{
|
||||
rb_set_primary_encoding(enc);
|
||||
return rb_primary_encoding;
|
||||
}
|
||||
|
||||
void
|
||||
Init_Encoding(void)
|
||||
{
|
||||
|
@ -526,4 +554,8 @@ Init_Encoding(void)
|
|||
|
||||
rb_define_method(rb_cEncoding, "_dump", enc_dump, -1);
|
||||
rb_define_singleton_method(rb_cEncoding, "_load", enc_load, 1);
|
||||
|
||||
rb_primary_encoding = rb_enc_from_encoding(rb_enc_from_index(0));
|
||||
rb_define_singleton_method(rb_cEncoding, "primary_encoding", get_primary_encoding, 0);
|
||||
rb_define_singleton_method(rb_cEncoding, "primary_encoding=", set_primary_encoding, 1);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue