[#70464] ljust, rjust... — "Chris Pine" <nemo@...>

Just thought I would run these ideas by everyone:

11 messages 2003/05/01

[#70502] temporary redirection of stdout — Andrew Walrond <andrew@...>

I'm new to ruby, so forgive any obvious stupididity, but can anyone

20 messages 2003/05/02

[#70535] SWIG on Solaris problem — Jim Freeze <jim@...>

Hi folks.

14 messages 2003/05/02

[#70594] Why is PHP so popular? What can we learn from the PHP camp? — ptkwt@...1.aracnet.com (Phil Tomson)

....and what can we learn from PHP's rapid rise to success?

99 messages 2003/05/05
[#70641] Re: Why is PHP so popular? What can we learn from the PHP camp? — Andreas Schwarz <usenet@...> 2003/05/05

Aredridel wrote:

[#70652] A wishlist for a "Ruby Standard Library" — Aredridel <aredridel@...> 2003/05/05

A wishlsit for a "Ruby Standard Library":

[#70655] Re: A wishlist for a "Ruby Standard Library" — Brian Candler <B.Candler@...> 2003/05/05

On Tue, May 06, 2003 at 07:39:54AM +0900, Aredridel wrote:

[#70673] Re: A wishlist for a "Ruby Standard Library" — Mark Wilson <mwilson13@...> 2003/05/06

[snipped many wonderful things.]

[#70759] Testing for a class existence — "Gennady" <gfb@...>

Does anybody know an easy way to test for a class/module existence in Ruby? What I do is adding a method to ObjectSpace for this, so that I can test it like:

15 messages 2003/05/06

[#70770] capture output — "Simon Strandgaard" <0bz63fz3m1qt3001@...>

I have seen much talking about this topic, but no working code!

68 messages 2003/05/06
[#70929] Re: IO.pipe + thread = hangs (was: Re: capture output) — "Robert Klemme" <bob.news@...> 2003/05/08

[#71741] Named Pipes — Mark Firestone <nedry@...> 2003/05/19

What is the recommended procedure for using named pipes in Ruby. Does one

[#71745] Re: Named Pipes — Brian Candler <B.Candler@...> 2003/05/19

On Mon, May 19, 2003 at 06:33:17PM +0900, Mark Firestone wrote:

[#70842] Symbiosis offer: trade Ruby for German :-) — Mauricio Fern疣dez <batsman.geo@...>

17 messages 2003/05/07

[#70865] access a variables name? — "meinrad.recheis" <my.name.here@...>

is it possible to access the variable-name of an object?

14 messages 2003/05/07

[#70891] Syck 0.25 + YAML.rb -- Objects in plain-text — why the lucky stiff <ruby-talk@...>

..my faithful friends..

20 messages 2003/05/07

[#70919] petition for raa-install to be included in 1.8 — ptkwt@...1.aracnet.com (Phil Tomson)

Similar to the YamlInRuby petition which has now closed.

14 messages 2003/05/08
[#70920] Re: petition for raa-install to be included in 1.8 — Sam Roberts <sroberts@...> 2003/05/08

I just looked again, and remember why I don't know anything about

[#70921] Re: petition for raa-install to be included in 1.8 — why the lucky stiff <ruby-talk@...> 2003/05/08

You can find a tutorial on using raa-install (as well as its API) at:

[#70985] Can a global be a constant? — Jim Freeze <jim@...>

Hi

36 messages 2003/05/08
[#71001] Re: Can a global be a constant? — "Hal E. Fulton" <hal9000@...> 2003/05/08

----- Original Message -----

[#71003] Re: Can a global be a constant? — Jim Freeze <jim@...> 2003/05/08

On Friday, 9 May 2003 at 8:23:52 +0900, Hal E. Fulton wrote:

[#71007] Re: Can a global be a constant? — dblack@... 2003/05/08

Hi --

[#71036] Re: Regexp: why does (re)* return only last repetition? — "Robert Klemme" <bob.news@...>

21 messages 2003/05/09
[#71209] Re: Regexp: why does (re)* return only last repetition? — "Robert Klemme" <bob.news@...> 2003/05/12

[#71225] Re: Regexp: why does (re)* return only last repetition? — Austin Ziegler <austin@...> 2003/05/12

On Mon, 12 May 2003 17:39:19 +0900, Robert Klemme wrote:

[#71229] Re: Regexp: why does (re)* return only last repetition? — Brian Candler <B.Candler@...> 2003/05/12

On Mon, May 12, 2003 at 10:18:00PM +0900, Austin Ziegler wrote:

[#71266] Re: Regexp: why does (re)* return only last repetition? — Austin Ziegler <austin@...> 2003/05/12

On Mon, 12 May 2003 23:51:44 +0900, Brian Candler wrote:

[#71042] TCP Sockets — Dominik Werder <dwerder@...>

Hi there,

28 messages 2003/05/09
[#71089] Re: TCP Sockets — Tom Felker <tcfelker@...> 2003/05/09

On Fri, 2003-05-09 at 05:40, Dominik Werder wrote:

[#71543] Re: TCP Sockets — Dominik Werder <dwerder@...> 2003/05/16

>> How can I tell how many bytes can be read from an IO object without

[#71547] Re: TCP Sockets — Brian Candler <B.Candler@...> 2003/05/16

On Fri, May 16, 2003 at 05:14:17PM +0900, Dominik Werder wrote:

[#71550] Re: TCP Sockets — Dominik Werder <dwerder@...> 2003/05/16

my problem is not the http protocol itself (not at this time :) but the IO-

[#71551] Re: TCP Sockets — Brian Candler <B.Candler@...> 2003/05/16

On Fri, May 16, 2003 at 07:20:30PM +0900, Dominik Werder wrote:

[#71553] Re: TCP Sockets — Dominik Werder <dwerder@...> 2003/05/16

> Maybe, but threads are really the "ruby way" to solve this problem.

[#71557] Re: TCP Sockets — Brian Candler <B.Candler@...> 2003/05/16

On Fri, May 16, 2003 at 07:53:39PM +0900, Dominik Werder wrote:

[#71562] Re: TCP Sockets — Dominik Werder <dwerder@...> 2003/05/16

> That would mean mixing the binary streams in a non-deterministic way,

[#71107] RCR for child execution — Brian Candler <B.Candler@...>

Looking on RubyGarden it seems that the RCR process there is "resting", so

99 messages 2003/05/10
[#71122] Re: RCR for child execution — "Simon Strandgaard" <0bz63fz3m1qt3001@...> 2003/05/10

On Sun, 11 May 2003 01:50:49 +0900, Brian Candler wrote:

[#71126] Re: RCR for child execution — Brian Candler <B.Candler@...> 2003/05/10

On Sun, May 11, 2003 at 01:27:31AM +0900, Simon Strandgaard wrote:

[#71364] Re: RCR for child execution — "Simon Strandgaard" <0bz63fz3m1qt3001@...> 2003/05/13

On Tue, 13 May 2003 21:11:08 +0000, ahoward wrote:

[#71385] Re: RCR for child execution — matz@... (Yukihiro Matsumoto) 2003/05/14

Hi,

[#71152] Is Rubygarden's wiki restricted to English? — Mauricio Fern疣dez <batsman.geo@...>

20 messages 2003/05/11
[#71160] Re: Is Rubygarden's wiki restricted to English? — "Hal E. Fulton" <hal9000@...> 2003/05/11

----- Original Message -----

[#71165] Re: Is Rubygarden's wiki restricted to English? — Mauricio Fern疣dez <batsman.geo@...> 2003/05/11

On Mon, May 12, 2003 at 12:40:26AM +0900, Hal E. Fulton wrote:

[#71189] efficiency advice needed — "meinrad.recheis" <my.name.here@...>

hi,

12 messages 2003/05/11

[#71297] State Pattern Implementation — "Robert Klemme" <bob.news@...>

22 messages 2003/05/13

[#71361] Objects VS Datastructures — Simon Vandemoortele <deliriousREMOVEUPPERCASETEXTTOREPLY@...>

19 messages 2003/05/13

[#71447] Embedding/GC/heap corruption problem — "Jan Bernhardt" <j.bernhardt@...>

Hi,

22 messages 2003/05/14

[#71488] Test::Unit sequencing — Brian Candler <B.Candler@...>

A question for more experienced Test::Unit users.

23 messages 2003/05/15
[#71492] Re: Test::Unit sequencing — Anders Bengtsson <ndrsbngtssn@...> 2003/05/15

--- Brian Candler <B.Candler@pobox.com> wrote:

[#71508] Re: Test::Unit sequencing — ahoward <ahoward@...> 2003/05/15

On Thu, 15 May 2003, [iso-8859-1] Anders Bengtsson wrote:

[#71510] RCR: $INCLUDED global var — martindemello@... (Martin DeMello)

$INCLUDED = (__FILE__ != $0)

25 messages 2003/05/15
[#71515] Re: RCR: $INCLUDED global var — matz@... (Yukihiro Matsumoto) 2003/05/15

Hi,

[#71525] Re: RCR: $INCLUDED global var — ahoward <ahoward@...> 2003/05/15

On Fri, 16 May 2003, Yukihiro Matsumoto wrote:

[#71520] public/protected/private syntax — Guillaume Marcais <guslist@...>

I tend to find the public/protected/private keywords in Ruby a little odd.

27 messages 2003/05/15
[#71540] Re: public/protected/private syntax — "Robert Klemme" <bob.news@...> 2003/05/16

[#71573] Re: public/protected/private syntax — Guillaume Marcais <guillaume.marcais@...> 2003/05/16

On Friday 16 May 2003 03:38 am, you wrote:

[#71595] Re: public/protected/private syntax — Austin Ziegler <austin@...> 2003/05/16

On Fri, 16 May 2003 23:33:21 +0900, Guillaume Marcais wrote:

[#71560] gzip cgi compression — Dominik Werder <dwerder@...>

Is zlib compatible with HTTP-gzip-output-compression?

14 messages 2003/05/16

[#71636] select strange behavier — "Simon Strandgaard" <0bz63fz3m1qt3001@...>

'select' is suppose to watch some file-descriptors and when an event

22 messages 2003/05/17

[#71673] An Object Going Out Of Scope — "vinita Papur" <gkapur@...>

A quick question. How can one discern when an object goes out of scope?

46 messages 2003/05/18
[#71678] Re: An Object Going Out Of Scope — "MikkelFJ" <mikkelfj-anti-spam@...> 2003/05/18

[#71680] Re: An Object Going Out Of Scope — Mauricio Fern疣dez <batsman.geo@...> 2003/05/18

On Sun, May 18, 2003 at 06:08:43PM +0900, MikkelFJ wrote:

[#71681] ruby garbage collection — "Gaffer" <gaffer@...> 2003/05/18

i need this for a realtime game application which has embedded ruby -- after

[#71683] Re: ruby garbage collection — Mauricio Fern疣dez <batsman.geo@...> 2003/05/18

On Sun, May 18, 2003 at 08:35:11PM +0900, Gaffer wrote:

[#71685] Re: ruby garbage collection — "Gaffer" <gaffer@...> 2003/05/18

strange, i found the rb_gc call on my own and called that to good effect

[#71688] Re: ruby garbage collection — "Simon Strandgaard" <0bz63fz3m1qt3001@...> 2003/05/18

On Sun, 18 May 2003 22:10:18 +0900, Gaffer wrote:

[#71689] Re: ruby garbage collection — "Gaffer" <gaffer@...> 2003/05/18

i think its actually the GC cleaning up matrix and vector classes (my own

[#71691] Re: ruby garbage collection — "Simon Strandgaard" <0bz63fz3m1qt3001@...> 2003/05/18

On Sun, 18 May 2003 22:39:17 +0900, Gaffer wrote:

[#71692] Re: ruby garbage collection — "Gaffer" <gaffer@...> 2003/05/18

i'm pretty sure i've tracked down the cause, this is my first time embedding

[#71695] Re: ruby garbage collection — "Simon Strandgaard" <0bz63fz3m1qt3001@...> 2003/05/18

On Sun, 18 May 2003 23:48:28 +0900, Gaffer wrote:

[#71948] How I'd like method-wrapping to work... — "Hal E. Fulton" <hal9000@...>

OK, I read Matz's blog entries as well as I could.

16 messages 2003/05/21

[#72030] why is "does" missing from this sub!-stitution? — Dave Oshel <dcoshel@...>

[~/Desktop] dave$ cat foobar.rb ; foobar.rb

19 messages 2003/05/22
[#72037] Re: why is "does" missing from this sub!-stitution? — Dave Oshel <dcoshel@...> 2003/05/22

In article <20030522202818.GA24497@student.ei.uni-stuttgart.de>,

[#72056] Naive CGI question — "Hal E. Fulton" <hal9000@...>

I'm betting this is either impossible

15 messages 2003/05/23

[#72134] Problem compiling extension on Solaris — "Tim Hunter" <cyclists@...>

I have an user who is trying to build RMagick on Solaris with Ruby 1.6.8.

22 messages 2003/05/25
[#72262] Re: Problem compiling extension on Solaris — Daniel Berger <djberge@...> 2003/05/27

[#72150] Binary Tree vs. Hash — Xiangrong Fang <xrfang@...>

Hi ruby fans,

47 messages 2003/05/26

[#72184] Project Directory Structure — Jim Freeze <jim@...>

Hi:

47 messages 2003/05/26
[#72218] Re: Project Directory Structure — "MikkelFJ" <mikkelfj-anti-spam@...> 2003/05/26

[#72222] Re: Project Directory Structure — Jim Freeze <jim@...> 2003/05/26

Thanks everyone for your input so far.

[#72244] Re: Project Directory Structure — Robert Feldt <feldt@...> 2003/05/27

On Tue, 27 May 2003, Jim Freeze wrote:

[#72260] Re: Project Directory Structure — Jim Freeze <jim@...> 2003/05/27

On Tuesday, 27 May 2003 at 18:26:53 +0900, Robert Feldt wrote:

[#72265] Re: Project Directory Structure — Jim Freeze <jim@...> 2003/05/27

Thanks for all the input. A description of the Project

[#72269] Re: Project Directory Structure — Robert Feldt <feldt@...> 2003/05/27

On Wed, 28 May 2003, Jim Freeze wrote:

[#72274] RCR: unpack/pack Bignum — Robert Feldt <feldt@...>

I'm sure this has been discussed before and maybe there are good reasons

27 messages 2003/05/27
[#72375] Re: RCR: unpack/pack Bignum — Robert Feldt <feldt@...> 2003/05/28

No one seems to be interested in this issue so I'll have to reply to

[#72381] Re: RCR: unpack/pack Bignum — nobu.nokada@... 2003/05/28

Hi,

[#72394] Re: RCR: unpack/pack Bignum — Robert Feldt <feldt@...> 2003/05/29

On Thu, 29 May 2003 nobu.nokada@softhome.net wrote:

[#72403] Re: RCR: unpack/pack Bignum — nobu.nokada@... 2003/05/29

Hi,

[#72600] What is BER compression? (was RCR: unpack/pack Bignum) — Sam Roberts <sroberts@...> 2003/05/31

Is it documented anywhere, what this 'w' template is useful for?

[#72371] Windows Installer for Ruby 1.8.0 (CVS) — Andrew Hunt <andy@...>

Hi all,

16 messages 2003/05/28

[#72388] Array.extend versus instance.extend — "Simon Strandgaard" <0bz63fz3m1qt3001@...>

I want to install 'shift_until_kind_of' in the global Array class

18 messages 2003/05/29

[#72420] Metakit for Ruby - Would you want it? — bobx@... (Bob)

I have a gentleman in England who I have been talking with who is

23 messages 2003/05/29

[#72439] Iteration - last detection — "Orion Hunter" <orion2480@...>

Is there any built in functionality for iteration that will allow me to

41 messages 2003/05/29
[#72510] Re: Iteration - last detection — Carlos <angus@...> 2003/05/30

> Is there any built in functionality for iteration that will allow me to

[#72577] IF statement in ruby 1.8.0 (2003-05-26) [i386-mswin32] — "Shashank Date" <sdate@...>

Just when I thought that I had perfectly understood the IF statement in

14 messages 2003/05/31

[PATCH] ljust, rjust, and center with pad string (was ljust, rjust...)

From: "Warren Brown" <wkb@...>
Date: 2003-05-02 01:18:36 UTC
List: ruby-talk #70482
> How about allowing `ljust' and `rjust' take an
> additional parameter (which defaults to the string
> " ") which specifies what it justifies with?
>
>   15.to_s.rjust(5)         #  -->  "   15"
>   15.to_s.rjust(5,'0')     #  -->  "00015"
>   15.to_s.rjust(5,'blue')  #  -->  "blu15"
>
> What do you think?

    I agree wholeheartedly.  The problem is made even worse by the fact that
'%05s' does *not* pad with leading zeros.  I have had to get around this
shortfall by doing things like:

foo.to_s.rjust(10).sub(/^ {,10}/,'0')

    Not only is this not very readable, but it is also fairly inefficient.

    I also find the lack of a padding string parameter very surprising since
every other language I have run across that implements padding functions
allows (or even requires) you to specify the padding string.  If you don't
believe me, do a Google search on "lpad function" and just *try* to find one
that doesn't :o)

    All in all, this would seem to be a real benefit to the language, is
easy to implement, and should not break any existing code.

    To expedite things, I have attached a patch that unifies the three
functions (ljust, rjust, and center) and adds this functionality.  The patch
can be applied to last night's snapshot.  I have performed a moderate amount
of testing on this patch and it seems OK.

    One quirk: a zero-length second parameter like "'x'.ljust(10,nil)" or
"'x'.ljust(10,'')" behaves like "'x'.ljust(10)".

    A generalized "justify" function similar to the one implemented in this
patch might be a nice addition to the language too.

    - Warren Brown

Attachments (1)

string.c.diff (4.26 KB, text/x-diff)
--- string.c.orig	Sun Apr 27 09:13:25 2003
+++ string.c	Thu May  1 19:38:06 2003
@@ -3120,70 +3120,100 @@
     }
 }
 
+static VALUE
+rb_str_justify(argc, argv, str, jflag)
+    int argc;
+    VALUE *argv;
+    VALUE str;
+    char jflag;
+{
+    VALUE w;
+    long width, flen = 0;
+    VALUE res;
+    char *p, *pend, *f = " ";
+    long n;
+    VALUE pad;
+
+    if (rb_scan_args(argc, argv, "11", &w, &pad) == 2) {
+        if (!NIL_P(pad)) {
+            StringValue(pad);
+            if (RSTRING(pad)->len > 0) {
+                f = RSTRING(pad)->ptr;
+                flen = RSTRING(pad)->len;
+            }
+        }
+    }
+    width = NUM2LONG(w);
+    if (width < 0 || RSTRING(str)->len >= width) return rb_str_dup(str);
+    res = rb_str_new5(str, 0, width);
+    p = RSTRING(res)->ptr;
+    if (jflag != 'l') {
+        n = width - RSTRING(str)->len;
+        pend = p + ((jflag == 'r') ? n : n/2);
+        if (flen <= 1) {
+            while (p < pend) {
+                *p++ = *f;
+            }
+        }
+        else {
+            char *q = f;
+            while (p + flen <= pend) {
+                memcpy(p,f,flen);
+                p += flen;
+            }
+            while (p < pend) {
+                *p++ = *q++;
+            }
+        }
+    }
+    memcpy(p, RSTRING(str)->ptr, RSTRING(str)->len);
+    if (jflag != 'r') {
+        p += RSTRING(str)->len; pend = RSTRING(res)->ptr + width;
+        if (flen <= 1) {
+            while (p < pend) {
+                *p++ = *f;
+            }
+        }
+        else {
+            while (p + flen <= pend) {
+                memcpy(p,f,flen);
+                p += flen;
+            }
+            while (p < pend) {
+                *p++ = *f++;
+            }
+        }
+    }
+    OBJ_INFECT(res, str);
+    if (flen > 0) OBJ_INFECT(res, pad);
+    return res;
+}
+
 static VALUE
-rb_str_ljust(str, w)
+rb_str_ljust(argc, argv, str)
+    int argc;
+    VALUE *argv;
     VALUE str;
-    VALUE w;
 {
-    long width = NUM2LONG(w);
-    VALUE res;
-    char *p, *pend;
-
-    if (width < 0 || RSTRING(str)->len >= width) return rb_str_dup(str);
-    res = rb_str_new5(str, 0, width);
-    memcpy(RSTRING(res)->ptr, RSTRING(str)->ptr, RSTRING(str)->len);
-    p = RSTRING(res)->ptr + RSTRING(str)->len; pend = RSTRING(res)->ptr + width;
-    while (p < pend) {
-	*p++ = ' ';
-    }
-    OBJ_INFECT(res, str);
-    return res;
+    return rb_str_justify(argc, argv, str, 'l');
 }
 
 static VALUE
-rb_str_rjust(str, w)
+rb_str_rjust(argc, argv, str)
+    int argc;
+    VALUE *argv;
     VALUE str;
-    VALUE w;
 {
-    long width = NUM2LONG(w);
-    VALUE res;
-    char *p, *pend;
-
-    if (width < 0 || RSTRING(str)->len >= width) return rb_str_dup(str);
-    res = rb_str_new5(str, 0, width);
-    p = RSTRING(res)->ptr; pend = p + width - RSTRING(str)->len;
-    while (p < pend) {
-	*p++ = ' ';
-    }
-    memcpy(pend, RSTRING(str)->ptr, RSTRING(str)->len);
-    OBJ_INFECT(res, str);
-    return res;
+    return rb_str_justify(argc, argv, str, 'r');
 }
 
 static VALUE
-rb_str_center(str, w)
+rb_str_center(argc, argv, str)
+    int argc;
+    VALUE *argv;
     VALUE str;
-    VALUE w;
 {
-    long width = NUM2LONG(w);
-    VALUE res;
-    char *p, *pend;
-    long n;
-
-    if (width < 0 || RSTRING(str)->len >= width) return rb_str_dup(str);
-    res = rb_str_new5(str, 0, width);
-    n = (width - RSTRING(str)->len)/2;
-    p = RSTRING(res)->ptr; pend = p + n;
-    while (p < pend) {
-	*p++ = ' ';
-    }
-    memcpy(pend, RSTRING(str)->ptr, RSTRING(str)->len);
-    p = pend + RSTRING(str)->len; pend = RSTRING(res)->ptr + width;
-    while (p < pend) {
-	*p++ = ' ';
-    }
-    OBJ_INFECT(res, str);
-    return res;
+    return rb_str_justify(argc, argv, str, 'c');
 }
 
 void
@@ -3265,9 +3295,9 @@
 
     rb_define_method(rb_cString, "scan", rb_str_scan, 1);
 
-    rb_define_method(rb_cString, "ljust", rb_str_ljust, 1);
-    rb_define_method(rb_cString, "rjust", rb_str_rjust, 1);
-    rb_define_method(rb_cString, "center", rb_str_center, 1);
+    rb_define_method(rb_cString, "ljust", rb_str_ljust, -1);
+    rb_define_method(rb_cString, "rjust", rb_str_rjust, -1);
+    rb_define_method(rb_cString, "center", rb_str_center, -1);
 
     rb_define_method(rb_cString, "sub", rb_str_sub, -1);
     rb_define_method(rb_cString, "gsub", rb_str_gsub, -1);

In This Thread