mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
2000-02-02
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@613 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
683839054f
commit
d7b8616260
9 changed files with 116 additions and 306 deletions
|
@ -1,7 +1,9 @@
|
|||
Mon Jan 31 15:24:58 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
|
||||
Wed Feb 2 02:06:07 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
|
||||
|
||||
* string.c (rb_str_sub): no bang method returns original string if
|
||||
no change is made.
|
||||
* string.c (str_gsub_bang): gsub! now leaves information about
|
||||
last successful pattern match in $&.
|
||||
|
||||
Mon Jan 31 15:24:58 2000 Yukihiro Matsumoto <matz@netlab.co.jp>
|
||||
|
||||
* string.c (str_sub_bang): bang method returns string always.
|
||||
experimental.
|
||||
|
|
1
ToDo
1
ToDo
|
@ -51,6 +51,7 @@ Standard Libraries
|
|||
- debugger for thread programming
|
||||
- SyntaxError, NameError, LoadError and NotImplementError are subclasses of
|
||||
ScriptError<Exception, not StandardError.
|
||||
- String's bang methods return string always
|
||||
* Struct::new([name,]member,...) ??
|
||||
* String#scanf(?)
|
||||
* Object#fmt(?)
|
||||
|
|
2
config.sub
vendored
2
config.sub
vendored
|
@ -178,7 +178,7 @@ case $basic_machine in
|
|||
| m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \
|
||||
| mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
|
||||
| power-* | none-* | 580-* | cray2-* | h8300-* | i960-* \
|
||||
| xmp-* | ymp-* | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* \
|
||||
| xmp-* | ymp-* | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0* | hppa2.0w-* \
|
||||
| alpha-* | alphaev5-* | alphaev56-* | we32k-* | cydra-* \
|
||||
| ns16k-* | pn-* | np1-* | xps100-* | clipper-* | orion-* \
|
||||
| sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
|
||||
|
|
|
@ -407,50 +407,50 @@ curses_cols()
|
|||
|
||||
/*-------------------------- class Window --------------------------*/
|
||||
|
||||
/* def new(lines, cols, top, left) */
|
||||
/* def new(h, w, top, left) */
|
||||
static VALUE
|
||||
window_s_new(class, lines, cols, top, left)
|
||||
window_s_new(class, h, w, top, left)
|
||||
VALUE class;
|
||||
VALUE lines;
|
||||
VALUE cols;
|
||||
VALUE h;
|
||||
VALUE w;
|
||||
VALUE top;
|
||||
VALUE left;
|
||||
{
|
||||
VALUE w;
|
||||
VALUE win;
|
||||
WINDOW *window;
|
||||
VALUE args[4];
|
||||
|
||||
window = newwin(NUM2INT(lines), NUM2INT(cols), NUM2INT(top), NUM2INT(left));
|
||||
window = newwin(NUM2INT(h), NUM2INT(w), NUM2INT(top), NUM2INT(left));
|
||||
wclear(window);
|
||||
w = prep_window(class, window);
|
||||
args[0] = lines; args[1] = cols; args[2] = top; args[3] = left;
|
||||
rb_obj_call_init(w, 4, args);
|
||||
win = prep_window(class, window);
|
||||
args[0] = h; args[1] = w; args[2] = top; args[3] = left;
|
||||
rb_obj_call_init(win, 4, args);
|
||||
|
||||
return w;
|
||||
return win;
|
||||
}
|
||||
|
||||
/* def subwin(lines, cols, top, left) */
|
||||
/* def subwin(h, w, top, left) */
|
||||
static VALUE
|
||||
window_subwin(obj, lines, cols, top, left)
|
||||
window_subwin(obj, h, w, top, left)
|
||||
VALUE obj;
|
||||
VALUE lines;
|
||||
VALUE cols;
|
||||
VALUE h;
|
||||
VALUE w;
|
||||
VALUE top;
|
||||
VALUE left;
|
||||
{
|
||||
struct windata *winp;
|
||||
WINDOW *window;
|
||||
VALUE w;
|
||||
VALUE win;
|
||||
VALUE args[4];
|
||||
|
||||
GetWINDOW(obj, winp);
|
||||
window = subwin(winp->window, NUM2INT(lines), NUM2INT(cols),
|
||||
window = subwin(winp->window, NUM2INT(h), NUM2INT(w),
|
||||
NUM2INT(top), NUM2INT(left));
|
||||
w = prep_window(cWindow, window);
|
||||
args[0] = lines; args[1] = cols; args[2] = top; args[3] = left;
|
||||
rb_obj_call_init(w, 4, args);
|
||||
win = prep_window(cWindow, window);
|
||||
args[0] = h; args[1] = w; args[2] = top; args[3] = left;
|
||||
rb_obj_call_init(win, 4, args);
|
||||
|
||||
return w;
|
||||
return win;
|
||||
}
|
||||
|
||||
/* def close */
|
||||
|
|
|
@ -130,6 +130,11 @@ static struct afd {
|
|||
#define PTON_MAX 4
|
||||
#endif
|
||||
|
||||
#ifndef INET6
|
||||
#ifndef NT
|
||||
extern int h_errno;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
static int get_name __P((const char *, struct afd *,
|
||||
struct addrinfo **, char *, struct addrinfo *,
|
||||
|
@ -575,11 +580,6 @@ get_addr(hostname, af, res, pai, port0)
|
|||
struct afd *afd;
|
||||
int i, error = 0, h_error;
|
||||
char *ap;
|
||||
#ifndef INET6
|
||||
#ifndef NT
|
||||
extern int h_errno;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
top = NULL;
|
||||
sentinel.ai_next = NULL;
|
||||
|
|
|
@ -64,6 +64,12 @@
|
|||
#include "addrinfo.h"
|
||||
#include "sockport.h"
|
||||
|
||||
#ifndef INET6
|
||||
#ifndef NT
|
||||
extern int h_errno;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define SUCCESS 0
|
||||
#define ANY 0
|
||||
#define YES 1
|
||||
|
@ -149,9 +155,6 @@ getnameinfo(sa, salen, host, hostlen, serv, servlen, flags)
|
|||
int h_error;
|
||||
char numserv[512];
|
||||
char numaddr[512];
|
||||
#ifndef NT
|
||||
extern int h_errno;
|
||||
#endif
|
||||
|
||||
if (sa == NULL)
|
||||
return ENI_NOSOCKET;
|
||||
|
|
|
@ -679,8 +679,6 @@ ok("a".upcase![0] == ?A)
|
|||
ok("A".downcase![0] == ?a)
|
||||
ok("abc".tr!("a-z", "A-Z") == "ABC")
|
||||
ok("aabbcccc".tr_s!("a-z", "A-Z") == "ABC")
|
||||
$x = "abc"
|
||||
ok($x.tr("0-9", "A-Z").equal?($x))
|
||||
ok("abcc".squeeze!("a-z") == "abc")
|
||||
ok("abcd".delete!("bc") == "ad")
|
||||
|
||||
|
|
346
string.c
346
string.c
|
@ -1008,7 +1008,7 @@ get_pat(pat)
|
|||
}
|
||||
|
||||
static VALUE
|
||||
str_sub_bang(argc, argv, str)
|
||||
rb_str_sub_bang(argc, argv, str)
|
||||
int argc;
|
||||
VALUE *argv;
|
||||
VALUE str;
|
||||
|
@ -1057,18 +1057,7 @@ str_sub_bang(argc, argv, str)
|
|||
RSTRING(repl)->ptr, RSTRING(repl)->len);
|
||||
RSTRING(str)->len += RSTRING(repl)->len - plen;
|
||||
RSTRING(str)->ptr[RSTRING(str)->len] = '\0';
|
||||
return str;
|
||||
}
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
rb_str_sub_bang(argc, argv, str)
|
||||
int argc;
|
||||
VALUE *argv;
|
||||
VALUE str;
|
||||
{
|
||||
str_sub_bang(argc, argv, str);
|
||||
return str;
|
||||
}
|
||||
|
||||
|
@ -1078,17 +1067,13 @@ rb_str_sub(argc, argv, str)
|
|||
VALUE *argv;
|
||||
VALUE str;
|
||||
{
|
||||
VALUE dup = rb_str_dup(str);
|
||||
|
||||
if (NIL_P(str_sub_bang(argc, argv, dup))) {
|
||||
rb_gc_force_recycle(dup);
|
||||
return str;
|
||||
}
|
||||
return dup;
|
||||
str = rb_str_dup(str);
|
||||
rb_str_sub_bang(argc, argv, str);
|
||||
return str;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
str_gsub_bang(argc, argv, str)
|
||||
rb_str_gsub_bang(argc, argv, str)
|
||||
int argc;
|
||||
VALUE *argv;
|
||||
VALUE str;
|
||||
|
@ -1115,7 +1100,7 @@ str_gsub_bang(argc, argv, str)
|
|||
pat = get_pat(argv[0]);
|
||||
offset=0; n=0;
|
||||
beg = rb_reg_search(pat, str, 0, 0);
|
||||
if (beg < 0) return Qnil; /* no match, no substitution */
|
||||
if (beg < 0) return str; /* no match, no substitution */
|
||||
|
||||
blen = RSTRING(str)->len + 30; /* len + margin */
|
||||
buf = ALLOC_N(char, blen);
|
||||
|
@ -1125,11 +1110,10 @@ str_gsub_bang(argc, argv, str)
|
|||
while (beg >= 0) {
|
||||
n++;
|
||||
match = rb_backref_get();
|
||||
rb_match_busy(match, Qtrue);
|
||||
regs = RMATCH(match)->regs;
|
||||
if (iter) {
|
||||
rb_match_busy(match, Qtrue);
|
||||
val = rb_obj_as_string(rb_yield(rb_reg_nth_match(0, match)));
|
||||
rb_match_busy(match, Qfalse);
|
||||
rb_backref_set(match);
|
||||
}
|
||||
else {
|
||||
|
@ -1176,6 +1160,8 @@ str_gsub_bang(argc, argv, str)
|
|||
memcpy(bp, cp, RSTRING(str)->len - offset);
|
||||
bp += RSTRING(str)->len - offset;
|
||||
}
|
||||
rb_match_busy(match, Qfalse);
|
||||
rb_backref_set(match);
|
||||
rb_str_modify(str);
|
||||
free(RSTRING(str)->ptr);
|
||||
RSTRING(str)->ptr = buf;
|
||||
|
@ -1186,29 +1172,15 @@ str_gsub_bang(argc, argv, str)
|
|||
return str;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
rb_str_gsub_bang(argc, argv, str)
|
||||
int argc;
|
||||
VALUE *argv;
|
||||
VALUE str;
|
||||
{
|
||||
str_gsub_bang(argc, argv, str);
|
||||
return str;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
rb_str_gsub(argc, argv, str)
|
||||
int argc;
|
||||
VALUE *argv;
|
||||
VALUE str;
|
||||
{
|
||||
VALUE dup = rb_str_dup(str);
|
||||
|
||||
if (NIL_P(str_gsub_bang(argc, argv, dup))) {
|
||||
rb_gc_force_recycle(dup);
|
||||
return str;
|
||||
}
|
||||
return dup;
|
||||
str = rb_str_dup(str);
|
||||
rb_str_gsub_bang(argc, argv, str);
|
||||
return str;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
|
@ -1250,15 +1222,11 @@ rb_f_sub(argc, argv)
|
|||
int argc;
|
||||
VALUE *argv;
|
||||
{
|
||||
VALUE line = uscore_get();
|
||||
VALUE dup = rb_str_dup(line);
|
||||
VALUE str = rb_str_dup(uscore_get());
|
||||
|
||||
if (NIL_P(str_sub_bang(argc, argv, dup))) {
|
||||
rb_gc_force_recycle(dup);
|
||||
return line;
|
||||
}
|
||||
rb_lastline_set(dup);
|
||||
return dup;
|
||||
rb_str_sub_bang(argc, argv, str);
|
||||
rb_lastline_set(str);
|
||||
return str;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
|
@ -1274,15 +1242,11 @@ rb_f_gsub(argc, argv)
|
|||
int argc;
|
||||
VALUE *argv;
|
||||
{
|
||||
VALUE line = uscore_get();
|
||||
VALUE dup = rb_str_dup(line);
|
||||
VALUE str = rb_str_dup(uscore_get());
|
||||
|
||||
if (NIL_P(str_gsub_bang(argc, argv, dup))) {
|
||||
rb_gc_force_recycle(dup);
|
||||
return line;
|
||||
}
|
||||
rb_lastline_set(dup);
|
||||
return dup;
|
||||
rb_str_gsub_bang(argc, argv, str);
|
||||
rb_lastline_set(str);
|
||||
return str;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
|
@ -1550,11 +1514,10 @@ rb_str_dump(str)
|
|||
}
|
||||
|
||||
static VALUE
|
||||
str_upcase_bang(str)
|
||||
rb_str_upcase_bang(str)
|
||||
VALUE str;
|
||||
{
|
||||
char *s, *send;
|
||||
int modify = 0;
|
||||
|
||||
rb_str_modify(str);
|
||||
s = RSTRING(str)->ptr; send = s + RSTRING(str)->len;
|
||||
|
@ -1564,20 +1527,9 @@ str_upcase_bang(str)
|
|||
}
|
||||
else if (islower(*s)) {
|
||||
*s = toupper(*s);
|
||||
modify = 1;
|
||||
}
|
||||
s++;
|
||||
}
|
||||
|
||||
if (modify) return str;
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
rb_str_upcase_bang(str)
|
||||
VALUE str;
|
||||
{
|
||||
str_upcase_bang(str);
|
||||
return str;
|
||||
}
|
||||
|
||||
|
@ -1585,21 +1537,16 @@ static VALUE
|
|||
rb_str_upcase(str)
|
||||
VALUE str;
|
||||
{
|
||||
VALUE dup = rb_str_dup(str);
|
||||
|
||||
if (NIL_P(str_upcase_bang(dup))) {
|
||||
rb_gc_force_recycle(dup);
|
||||
return str;
|
||||
}
|
||||
return dup;
|
||||
str = rb_str_dup(str);
|
||||
rb_str_upcase_bang(str);
|
||||
return str;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
str_downcase_bang(str)
|
||||
rb_str_downcase_bang(str)
|
||||
VALUE str;
|
||||
{
|
||||
char *s, *send;
|
||||
int modify = 0;
|
||||
|
||||
rb_str_modify(str);
|
||||
s = RSTRING(str)->ptr; send = s + RSTRING(str)->len;
|
||||
|
@ -1609,20 +1556,9 @@ str_downcase_bang(str)
|
|||
}
|
||||
else if (ISUPPER(*s)) {
|
||||
*s = tolower(*s);
|
||||
modify = 1;
|
||||
}
|
||||
s++;
|
||||
}
|
||||
|
||||
if (modify) return str;
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
rb_str_downcase_bang(str)
|
||||
VALUE str;
|
||||
{
|
||||
str_downcase_bang(str);
|
||||
return str;
|
||||
}
|
||||
|
||||
|
@ -1630,27 +1566,21 @@ static VALUE
|
|||
rb_str_downcase(str)
|
||||
VALUE str;
|
||||
{
|
||||
VALUE dup = rb_str_dup(str);
|
||||
|
||||
if (NIL_P(str_downcase_bang(dup))) {
|
||||
rb_gc_force_recycle(dup);
|
||||
return str;
|
||||
}
|
||||
return dup;
|
||||
str = rb_str_dup(str);
|
||||
rb_str_downcase_bang(str);
|
||||
return str;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
str_capitalize_bang(str)
|
||||
rb_str_capitalize_bang(str)
|
||||
VALUE str;
|
||||
{
|
||||
char *s, *send;
|
||||
int modify = 0;
|
||||
|
||||
rb_str_modify(str);
|
||||
s = RSTRING(str)->ptr; send = s + RSTRING(str)->len;
|
||||
if (ISLOWER(*s)) {
|
||||
*s = toupper(*s);
|
||||
modify = 1;
|
||||
}
|
||||
while (++s < send) {
|
||||
if (ismbchar(*s)) {
|
||||
|
@ -1658,18 +1588,8 @@ str_capitalize_bang(str)
|
|||
}
|
||||
else if (ISUPPER(*s)) {
|
||||
*s = tolower(*s);
|
||||
modify = 1;
|
||||
}
|
||||
}
|
||||
if (modify) return str;
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
rb_str_capitalize_bang(str)
|
||||
VALUE str;
|
||||
{
|
||||
str_capitalize_bang(str);
|
||||
return str;
|
||||
}
|
||||
|
||||
|
@ -1677,21 +1597,16 @@ static VALUE
|
|||
rb_str_capitalize(str)
|
||||
VALUE str;
|
||||
{
|
||||
VALUE dup = rb_str_dup(str);
|
||||
|
||||
if (NIL_P(str_capitalize_bang(dup))) {
|
||||
rb_gc_force_recycle(dup);
|
||||
return str;
|
||||
}
|
||||
return dup;
|
||||
str = rb_str_dup(str);
|
||||
rb_str_capitalize_bang(str);
|
||||
return str;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
str_swapcase_bang(str)
|
||||
rb_str_swapcase_bang(str)
|
||||
VALUE str;
|
||||
{
|
||||
char *s, *send;
|
||||
int modify = 0;
|
||||
|
||||
rb_str_modify(str);
|
||||
s = RSTRING(str)->ptr; send = s + RSTRING(str)->len;
|
||||
|
@ -1701,24 +1616,13 @@ str_swapcase_bang(str)
|
|||
}
|
||||
else if (ISUPPER(*s)) {
|
||||
*s = tolower(*s);
|
||||
modify = 1;
|
||||
}
|
||||
else if (ISLOWER(*s)) {
|
||||
*s = toupper(*s);
|
||||
modify = 1;
|
||||
}
|
||||
s++;
|
||||
}
|
||||
|
||||
if (modify) return str;
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
rb_str_swapcase_bang(str)
|
||||
VALUE str;
|
||||
{
|
||||
str_swapcase_bang(str);
|
||||
return str;
|
||||
}
|
||||
|
||||
|
@ -1726,13 +1630,9 @@ static VALUE
|
|||
rb_str_swapcase(str)
|
||||
VALUE str;
|
||||
{
|
||||
VALUE dup = rb_str_dup(str);
|
||||
|
||||
if (NIL_P(str_swapcase_bang(dup))) {
|
||||
rb_gc_force_recycle(dup);
|
||||
return str;
|
||||
}
|
||||
return dup;
|
||||
str = rb_str_dup(str);
|
||||
rb_str_swapcase_bang(str);
|
||||
return str;
|
||||
}
|
||||
|
||||
typedef unsigned char *USTR;
|
||||
|
@ -1775,7 +1675,7 @@ trnext(t)
|
|||
|
||||
static VALUE rb_str_delete_bang _((int,VALUE*,VALUE));
|
||||
|
||||
static VALUE
|
||||
static void
|
||||
tr_trans(str, src, repl, sflag)
|
||||
VALUE str, src, repl;
|
||||
int sflag;
|
||||
|
@ -1783,7 +1683,7 @@ tr_trans(str, src, repl, sflag)
|
|||
struct tr trsrc, trrepl;
|
||||
int cflag = 0;
|
||||
int trans[256];
|
||||
int i, c, modify = 0;
|
||||
int i, c;
|
||||
char *s, *send;
|
||||
|
||||
rb_str_modify(str);
|
||||
|
@ -1795,7 +1695,8 @@ tr_trans(str, src, repl, sflag)
|
|||
}
|
||||
if (TYPE(repl) != T_STRING) repl = rb_str_to_str(repl);
|
||||
if (RSTRING(repl)->len == 0) {
|
||||
return rb_str_delete_bang(1, &src, str);
|
||||
rb_str_delete_bang(1, &src, str);
|
||||
return;
|
||||
}
|
||||
trrepl.p = RSTRING(repl)->ptr;
|
||||
trrepl.pend = trrepl.p + RSTRING(repl)->len;
|
||||
|
@ -1842,7 +1743,6 @@ tr_trans(str, src, repl, sflag)
|
|||
if (last == c) continue;
|
||||
last = c;
|
||||
*t++ = c & 0xff;
|
||||
modify = 1;
|
||||
}
|
||||
else {
|
||||
last = -1;
|
||||
|
@ -1851,7 +1751,6 @@ tr_trans(str, src, repl, sflag)
|
|||
}
|
||||
if (RSTRING(str)->len > (t - RSTRING(str)->ptr)) {
|
||||
RSTRING(str)->len = (t - RSTRING(str)->ptr);
|
||||
modify = 1;
|
||||
*t = '\0';
|
||||
}
|
||||
}
|
||||
|
@ -1859,14 +1758,10 @@ tr_trans(str, src, repl, sflag)
|
|||
while (s < send) {
|
||||
if ((c = trans[*s & 0xff]) >= 0) {
|
||||
*s = c & 0xff;
|
||||
modify = 1;
|
||||
}
|
||||
s++;
|
||||
}
|
||||
}
|
||||
|
||||
if (modify) return str;
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
|
@ -1881,11 +1776,9 @@ static VALUE
|
|||
rb_str_tr(str, src, repl)
|
||||
VALUE str, src, repl;
|
||||
{
|
||||
VALUE dup = rb_str_dup(str);
|
||||
|
||||
if (NIL_P(tr_trans(str, src, repl, 0)))
|
||||
return str;
|
||||
return dup;
|
||||
str = rb_str_dup(str);
|
||||
tr_trans(str, src, repl, 0);
|
||||
return str;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1923,14 +1816,13 @@ tr_setup_table(str, table, init)
|
|||
}
|
||||
|
||||
static VALUE
|
||||
str_delete_bang(argc, argv, str)
|
||||
rb_str_delete_bang(argc, argv, str)
|
||||
int argc;
|
||||
VALUE *argv;
|
||||
VALUE str;
|
||||
{
|
||||
char *s, *send, *t;
|
||||
char squeez[256];
|
||||
int modify = 0;
|
||||
int init = 1;
|
||||
int i;
|
||||
|
||||
|
@ -1947,53 +1839,36 @@ str_delete_bang(argc, argv, str)
|
|||
s = t = RSTRING(str)->ptr;
|
||||
send = s + RSTRING(str)->len;
|
||||
while (s < send) {
|
||||
if (squeez[*s & 0xff])
|
||||
modify = 1;
|
||||
else
|
||||
if (!squeez[*s & 0xff])
|
||||
*t++ = *s;
|
||||
s++;
|
||||
}
|
||||
*t = '\0';
|
||||
RSTRING(str)->len = t - RSTRING(str)->ptr;
|
||||
|
||||
if (modify) return str;
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
rb_str_delete_bang(argc, argv, str)
|
||||
int argc;
|
||||
VALUE *argv;
|
||||
VALUE str;
|
||||
{
|
||||
str_delete_bang(argc, argv, str);
|
||||
return str;
|
||||
}
|
||||
|
||||
|
||||
static VALUE
|
||||
rb_str_delete(argc, argv, str)
|
||||
int argc;
|
||||
VALUE *argv;
|
||||
VALUE str;
|
||||
{
|
||||
VALUE dup = rb_str_dup(str);
|
||||
|
||||
if (NIL_P(str_delete_bang(argc, argv, dup))) {
|
||||
rb_gc_force_recycle(dup);
|
||||
return str;
|
||||
}
|
||||
return dup;
|
||||
str = rb_str_dup(str);
|
||||
rb_str_delete_bang(argc, argv, str);
|
||||
return str;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
str_squeeze_bang(argc, argv, str)
|
||||
rb_str_squeeze_bang(argc, argv, str)
|
||||
int argc;
|
||||
VALUE *argv;
|
||||
VALUE str;
|
||||
{
|
||||
char squeez[256];
|
||||
char *s, *send, *t;
|
||||
int c, save, modify = 0;
|
||||
int c, save;
|
||||
int init = 1;
|
||||
int i;
|
||||
|
||||
|
@ -2014,7 +1889,6 @@ str_squeeze_bang(argc, argv, str)
|
|||
}
|
||||
|
||||
rb_str_modify(str);
|
||||
|
||||
s = t = RSTRING(str)->ptr;
|
||||
send = s + RSTRING(str)->len;
|
||||
save = -1;
|
||||
|
@ -2027,20 +1901,8 @@ str_squeeze_bang(argc, argv, str)
|
|||
*t = '\0';
|
||||
if (t - RSTRING(str)->ptr != RSTRING(str)->len) {
|
||||
RSTRING(str)->len = t - RSTRING(str)->ptr;
|
||||
modify = 1;
|
||||
}
|
||||
|
||||
if (modify) return str;
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
rb_str_squeeze_bang(argc, argv, str)
|
||||
int argc;
|
||||
VALUE *argv;
|
||||
VALUE str;
|
||||
{
|
||||
str_squeeze_bang(argc, argv, str);
|
||||
return str;
|
||||
}
|
||||
|
||||
|
@ -2050,13 +1912,9 @@ rb_str_squeeze(argc, argv, str)
|
|||
VALUE *argv;
|
||||
VALUE str;
|
||||
{
|
||||
VALUE dup = rb_str_dup(str);
|
||||
|
||||
if (NIL_P(str_squeeze_bang(argc, argv, dup))) {
|
||||
rb_gc_force_recycle(dup);
|
||||
return str;
|
||||
}
|
||||
return dup;
|
||||
str = rb_str_dup(str);
|
||||
rb_str_squeeze_bang(argc, argv, str);
|
||||
return str;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
|
@ -2071,11 +1929,9 @@ static VALUE
|
|||
rb_str_tr_s(str, src, repl)
|
||||
VALUE str, src, repl;
|
||||
{
|
||||
VALUE dup = rb_str_dup(str);
|
||||
|
||||
if (NIL_P(tr_trans(str, src, repl, 1)))
|
||||
return str;
|
||||
return dup;
|
||||
str = rb_str_dup(str);
|
||||
tr_trans(str, src, repl, 1);
|
||||
return str;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
|
@ -2343,7 +2199,7 @@ rb_str_each_byte(str)
|
|||
}
|
||||
|
||||
static VALUE
|
||||
str_chop_bang(str)
|
||||
rb_str_chop_bang(str)
|
||||
VALUE str;
|
||||
{
|
||||
if (RSTRING(str)->len > 0) {
|
||||
|
@ -2356,16 +2212,7 @@ str_chop_bang(str)
|
|||
}
|
||||
}
|
||||
RSTRING(str)->ptr[RSTRING(str)->len] = '\0';
|
||||
return str;
|
||||
}
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
rb_str_chop_bang(str)
|
||||
VALUE str;
|
||||
{
|
||||
str_chop_bang(str);
|
||||
return str;
|
||||
}
|
||||
|
||||
|
@ -2373,13 +2220,9 @@ static VALUE
|
|||
rb_str_chop(str)
|
||||
VALUE str;
|
||||
{
|
||||
VALUE dup = rb_str_dup(str);
|
||||
|
||||
if (NIL_P(str_chop_bang(dup))) {
|
||||
rb_gc_force_recycle(dup);
|
||||
return str;
|
||||
}
|
||||
return dup;
|
||||
str = rb_str_dup(str);
|
||||
rb_str_chop_bang(str);
|
||||
return str;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
|
@ -2392,18 +2235,15 @@ rb_f_chop_bang(str)
|
|||
static VALUE
|
||||
rb_f_chop()
|
||||
{
|
||||
VALUE line = uscore_get();
|
||||
VALUE dup = rb_str_dup(line);
|
||||
VALUE str = rb_str_dup(uscore_get());
|
||||
|
||||
if (!NIL_P(str_chop_bang(dup))) {
|
||||
rb_lastline_set(dup);
|
||||
return dup;
|
||||
}
|
||||
return line;
|
||||
rb_str_chop_bang(str);
|
||||
rb_lastline_set(str);
|
||||
return str;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
str_chomp_bang(argc, argv, str)
|
||||
rb_str_chomp_bang(argc, argv, str)
|
||||
int argc;
|
||||
VALUE *argv;
|
||||
VALUE str;
|
||||
|
@ -2440,18 +2280,7 @@ str_chomp_bang(argc, argv, str)
|
|||
memcmp(RSTRING(rs)->ptr, p+len-rslen, rslen) == 0)) {
|
||||
RSTRING(str)->len -= rslen;
|
||||
RSTRING(str)->ptr[RSTRING(str)->len] = '\0';
|
||||
return str;
|
||||
}
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
rb_str_chomp_bang(argc, argv, str)
|
||||
int argc;
|
||||
VALUE *argv;
|
||||
VALUE str;
|
||||
{
|
||||
str_chomp_bang(argc, argv, str);
|
||||
return str;
|
||||
}
|
||||
|
||||
|
@ -2461,13 +2290,9 @@ rb_str_chomp(argc, argv, str)
|
|||
VALUE *argv;
|
||||
VALUE str;
|
||||
{
|
||||
VALUE dup = rb_str_dup(str);
|
||||
|
||||
if (NIL_P(str_chomp_bang(argc, argv, dup))) {
|
||||
rb_gc_force_recycle(dup);
|
||||
return str;
|
||||
}
|
||||
return dup;
|
||||
str = rb_str_dup(str);
|
||||
rb_str_chomp_bang(argc, argv, str);
|
||||
return str;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
|
@ -2483,18 +2308,15 @@ rb_f_chomp(argc, argv)
|
|||
int argc;
|
||||
VALUE *argv;
|
||||
{
|
||||
VALUE str = uscore_get();
|
||||
VALUE dup = rb_str_dup(str);
|
||||
VALUE str = rb_str_dup(uscore_get());;
|
||||
|
||||
if (!NIL_P(str_chomp_bang(argc, argv, dup))) {
|
||||
rb_lastline_set(dup);
|
||||
return dup;
|
||||
}
|
||||
rb_str_chomp_bang(argc, argv, str);
|
||||
rb_lastline_set(str);
|
||||
return str;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
str_strip_bang(str)
|
||||
rb_str_strip_bang(str)
|
||||
VALUE str;
|
||||
{
|
||||
char *s, *t, *e;
|
||||
|
@ -2522,18 +2344,6 @@ str_strip_bang(str)
|
|||
else if (t < e) {
|
||||
RSTRING(str)->ptr[RSTRING(str)->len] = '\0';
|
||||
}
|
||||
else {
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
rb_str_strip_bang(str)
|
||||
VALUE str;
|
||||
{
|
||||
str_strip_bang(str);
|
||||
return str;
|
||||
}
|
||||
|
||||
|
@ -2541,13 +2351,9 @@ static VALUE
|
|||
rb_str_strip(str)
|
||||
VALUE str;
|
||||
{
|
||||
VALUE dup = rb_str_dup(str);
|
||||
|
||||
if (NIL_P(str_strip_bang(dup))) {
|
||||
rb_gc_force_recycle(dup);
|
||||
return str;
|
||||
}
|
||||
return dup;
|
||||
str = rb_str_dup(str);
|
||||
rb_str_strip_bang(str);
|
||||
return str;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#define RUBY_VERSION "1.5.2"
|
||||
#define RUBY_RELEASE_DATE "2000-02-01"
|
||||
#define RUBY_RELEASE_DATE "2000-02-02"
|
||||
#define RUBY_VERSION_CODE 152
|
||||
#define RUBY_RELEASE_CODE 20000201
|
||||
#define RUBY_RELEASE_CODE 20000202
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue