diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-12-01 16:56:19 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-12-01 16:56:19 +0000 |
commit | 7ff702406a324ed12c69bc23a7cfaf066e401547 (patch) | |
tree | af1c1a9ee2d96bcc009c639271ef5031fd6a05dd /pack.c | |
parent | d92b461dd9f5ff0eae7d15435aab1507dfb53496 (diff) | |
download | ruby-7ff702406a324ed12c69bc23a7cfaf066e401547.tar.gz |
* include/ruby/intern.h (rb_uv_to_utf8): declared.
* re.c (rb_reg_preprocess): new function for dynamic regexp with
\u{} such as Regexp.new("\\u{6666}").
(rb_reg_prepare_re): preprocess regexp for recompiling.
(read_escaped_byte): new function.
(unescape_escaped_nonascii): new function.
(append_utf8): new function.
(unescape_unicode_list): new function.
(unescape_unicode_bmp): new function.
(unescape_nonascii): new function.
(rb_reg_initialize): preprocess regexp.
* pack.c (rb_uv_to_utf8): renamed from uv_to_utf8.
* parse.y (STR_NEW3): take func instead of has8 and hasmb.
(parser_str_new): use default coderange mechanism except for regexp.
(parser_tokadd_utf8): copy regexp source as-is.
(parser_read_escape): UTF-8 stuff removed.
(parser_tokadd_escape): has8bit and hasmb removed.
(parser_tokadd_string): fix 8-bit single byte character with \u.
(parser_parse_string): has8bit and hasmb removed.
(parser_here_document): has8bit and hasmb removed.
(parser_yylex): call parser_tokadd_utf8 instead of read_escape for
UTF-8 character.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14072 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'pack.c')
-rw-r--r-- | pack.c | 7 |
1 files changed, 3 insertions, 4 deletions
@@ -365,7 +365,6 @@ static const char toofew[] = "too few arguments"; static void encodes(VALUE,const char*,long,int); static void qpencode(VALUE,VALUE,long); -static int uv_to_utf8(char*,unsigned long); static unsigned long utf8_to_uv(const char*,long*); /* @@ -872,7 +871,7 @@ pack_pack(VALUE ary, VALUE fmt) if (l < 0) { rb_raise(rb_eRangeError, "pack(U): value out of range"); } - le = uv_to_utf8(buf, l); + le = rb_uv_to_utf8(buf, l); rb_str_buf_cat(res, (char*)buf, le); } break; @@ -1991,8 +1990,8 @@ pack_unpack(VALUE str, VALUE fmt) #define BYTEWIDTH 8 -static int -uv_to_utf8(char *buf, unsigned long uv) +int +rb_uv_to_utf8(char buf[6], unsigned long uv) { if (uv <= 0x7f) { buf[0] = (char)uv; |