[#33161] Call/CC and Ruby iterators. — olczyk@... (Thaddeus L Olczyk)

Reading about call/cc in Scheme I get the impression that it is very

11 messages 2002/02/05

[#33242] favicon.ico — Dave Thomas <Dave@...>

19 messages 2002/02/06
[#33256] Re: favicon.ico — Leon Torres <leon@...> 2002/02/06

[#33435] Reg: tiny contest: who's faster? (add_a_gram) — grady@... (Steven Grady)

> My current solution works correctly with various inputs.

17 messages 2002/02/08

[#33500] Ruby Embedded Documentation — William Djaja Tjokroaminata <billtj@...>

Hi,

24 messages 2002/02/10
[#33502] Re: Ruby Embedded Documentation — "Lyle Johnson" <ljohnson@...> 2002/02/10

> Now, I am using Ruby on Linux, and I have downloaded Ruby version

[#33615] Name resolution in Ruby — stern@... (Alan Stern)

I've been struggling to understand how name resolution is supposed to

16 messages 2002/02/11

[#33617] choice of HTML templating system — Paul Brannan <paul@...>

I am not a web developer, nor do I pretend to be one.

23 messages 2002/02/11

[#33619] make first letter lowercase — sebi@... (sebi)

hello,

20 messages 2002/02/11
[#33620] Re: [newbie] make first letter lowercase — Tobias Reif <tobiasreif@...> 2002/02/11

sebi wrote:

[#33624] Re: [newbie] make first letter lowercase — "Jeff 'japhy' Pinyan" <jeffp@...> 2002/02/11

On Feb 11, Tobias Reif said:

[#33632] Re: [newbie] make first letter lowercase — Mathieu Bouchard <matju@...> 2002/02/12

[#33731] simple XML parsing (greedy / non-greedy — Ron Jeffries <ronjeffries@...>

Suppose I had this text

14 messages 2002/02/13

[#33743] qualms about respond_to? idiom — David Alan Black <dblack@...>

Hi --

28 messages 2002/02/13
[#33751] Re: qualms about respond_to? idiom — Dave Thomas <Dave@...> 2002/02/13

David Alan Black <dblack@candle.superlink.net> writes:

[#33754] Re: qualms about respond_to? idiom — David Alan Black <dblack@...> 2002/02/13

Hi --

[#33848] "Powered by Ruby" banner — Yuri Leikind <YuriLeikind@...>

Hello Ruby folks,

78 messages 2002/02/14
[#33909] Re: "Powered by Ruby" banner — Leon Torres <leon@...> 2002/02/14

On Thu, 14 Feb 2002, Yuri Leikind wrote:

[#33916] RE: "Powered by Ruby" banner — "Jack Dempsey" <dempsejn@...> 2002/02/15

A modest submission:

[#33929] Re: "Powered by Ruby" banner — yet another bill smith <bigbill.smith@...> 2002/02/15

Kent Dahl wrote:

[#33932] OT Netscape 4.x? was Re: "Powered by Ruby" banner — Chris Gehlker <gehlker@...> 2002/02/15

On 2/15/02 5:54 AM, "yet another bill smith" <bigbill.smith@verizon.net>

[#33933] RE: OT Netscape 4.x? was Re: "Powered by Ruby" banner — "Jack Dempsey" <dempsejn@...> 2002/02/15

i just don't understand why it didn't show up! dhtml/javascript, ok, but a

[#33937] Re: OT Netscape 4.x? was Re: "Powered by Ruby" banner — Chris Gehlker <gehlker@...> 2002/02/15

On 2/15/02 7:16 AM, "Jack Dempsey" <dempsejn@georgetown.edu> wrote:

[#33989] Re: OT OmniWeb [was: Netscape 4.x?] — Sean Russell <ser@...> 2002/02/16

Chris Gehlker wrote:

[#33991] Re: OT OmniWeb [was: Netscape 4.x?] — Rob Partington <rjp@...> 2002/02/16

In message <3c6e5e01_1@spamkiller.newsgroups.com>,

[#33993] Re: OT OmniWeb [was: Netscape 4.x?] — Thomas Hurst <tom.hurst@...> 2002/02/16

* Rob Partington (rjp@browser.org) wrote:

[#33925] Re: "Powered by Ruby" banner — Martin Maciaszek <mmaciaszek@...> 2002/02/15

In article <3C6CFCCA.5AD5CA67@scnsoft.com>, Yuri Leikind wrote:

[#33956] Re: "Powered by Ruby" banner — Leon Torres <leon@...> 2002/02/15

On Fri, 15 Feb 2002, Martin Maciaszek wrote:

[#33851] Ruby and .NET — Patrik Sundberg <ps@...>

I have been reading a bit about .NET for the last couple of days and must say

53 messages 2002/02/14

[#34024] Compiled companion language for Ruby? — Erik Terpstra <erik@...>

Hmmm, seems that my previous post was in a different thread, I'll try

12 messages 2002/02/16

[#34036] The GUI Returns — "Horacio Lopez" <vruz@...>

Hello all,

33 messages 2002/02/17

[#34162] Epic4/Ruby — Thomas Hurst <tom.hurst@...>

Rejoice, for you no longer have to put up with that evil excuse for a

34 messages 2002/02/18

[#34185] Operator overloading and multiple arguments — ptkwt@...1.aracnet.com (Phil Tomson)

I'm trying to overload the '<=' operator in a class in order to use it for

10 messages 2002/02/18

[#34217] Ruby for web development — beripome@... (Billy)

Hi all,

21 messages 2002/02/19

[#34350] FAQ for comp.lang.ruby — "Hal E. Fulton" <hal9000@...>

RUBY NEWSGROUP FAQ -- Welcome to comp.lang.ruby! (Revised 2001-2-18)

15 messages 2002/02/20

[#34375] Setting the Ruby continued — <jostein.berntsen@...>

Hi,

24 messages 2002/02/20
[#34384] Re: Setting the Ruby continued — Paulo Schreiner <paulo@...> 2002/02/20

Also VERY important:

[#34467] recursive require — Ron Jeffries <ronjeffries@...>

I'm having a really odd thing happen with two files that mutually

18 messages 2002/02/21

[#34503] special characters — Tobias Reif <tobiasreif@...>

Hi all,

13 messages 2002/02/22

[#34517] Windows Installer Ruby 166-0 available — Andrew Hunt <andy@...>

16 messages 2002/02/22

[#34597] rdoc/xml questions — Dave Thomas <Dave@...>

24 messages 2002/02/23

[#34631] Object/Memory Management — "Sean O'Dell" <sean@...>

I'm new to Ruby and the community here (I've been learning Ruby for a grand

44 messages 2002/02/23

[#34682] duplicate method name — Ron Jeffries <ronjeffries@...>

I just found a case in a test file where i had two tests of the same

16 messages 2002/02/24
[#34687] Re: duplicate method name — s@... (Stefan Schmiedl) 2002/02/24

Hi Ron.

[#34791] Style Question — Ron Jeffries <ronjeffries@...>

So I'm building this set theory library. The "only" object is supposed

13 messages 2002/02/25

[#34912] RCR?: parallel to until: as_soon_as — Tobias Reif <tobiasreif@...>

Hi,

18 messages 2002/02/26

[#34972] OT A Question on work styles — Chris Gehlker <gehlker@...>

As a Mac baby I just had to step through ruby in GDB *from the command line*

20 messages 2002/02/28

[#35015] Time Comparison — "Sean O'Dell" <sean@...>

I am using the time object to compare times between two files and I'm

21 messages 2002/02/28

Re: [newbie] make first letter lowercase

From: Gunnar Andersson <dff180@...>
Date: 2002-02-12 23:40:04 UTC
List: ruby-talk #33714
Hi everyone!

Cool ideas with the parts/expose...

Some discussion points:

I think Matju's original Part, or Slice or Fragment
are reasonable names and maybe it's good to clarify 
that it doesn't return a String but something different.  
I used expose() below but the names part(), slice() 
or fragment() tell you what you actually get back.

Because if you consider that side of it, you would
be inclined to actually handle the return value of 
expose/part/fragment.  

But I'm not sure it's a good thing after all. 
(Arguing with myself for a while...) because
a ref to this thing is powerful but a little
scary.  It's like having a pointer into the middle of 
a C-string that you use later on - I mean I would
find such code harder to understand and debug, you
see what I mean?

The other way, the name expose() doesn't really
tell you what you get back and instead suggests the user 
to use it in that manner: 
expose().something! 
which might be a good thing if it can avoid proliferation 
of these "dangerous" Fragment objects which effectively alias 
(part of) the original object.

I guess what I'm saying is that such simple things like
the actual names of things can affect people's use of 
these features and, basically, their coding style.
You give people powerful tools and they get crazy
ideas! ;-)  But I'm not your mommy so why should I 
care?

To conclude, I see advantages and disadvantages with both 
types of names.  What do you think?


OK, so just for fun, here's a first attempt at a Ruby hack to 
do it.  I love it when Ruby just makes it possible.  
While it isn't always the nicest solutions, at least
everyone can play around with it to get the feel for it without
any hacking/recompile of the interp.  It's based on 
a method_missing hack like so many other such tricks.
(What did I say about providing powerful stuff in the 
language? :-)

Lots to improve I'm sure...
It now returns the result of the operation, not self so you 
can't chain operations. Actually if method_missing returned 
self instead it should work, but there are some other problems 
I see.  I think it'll bug out if the first op returns a longer 
string than the original fragment (the range is not reset to
the longer length), and so on.
Should be possible to fix something though...

Later...

/Gunnar

----

class String
   def expose(range)
      @range = range
      Fragment.new(self, range)
   end
   def expose_result(s)
      self[@range] = s
   end
end

class Fragment 
   def initialize(string, range)
     @string = string 
     @range = range
   end

   def method_missing(m, *args)
      s = @string[@range]
      retval = s.send(m, *args)
      @string.expose_result(s)
      retval
   end
   def inspect; "\"#{@string[@range]}\""; end
end

# Try it out:

s2 = "The quick brown fox"
fragment = s2.expose(4..8)  # >> "quick"
p fragment         
p fragment.upcase  # >> "QUICK"
p s2               # >> "The quick brown fox"
fragment.upcase!   # >> "QUICK", also affects s2
p s2               # >> "The QUICK brown fox"

# Substitute within fragment only 
s1 = "The quick quick quick brown fox"
s1.expose(10..20).gsub!(/quick/, "slow") # >> "The quick slow slow..."
p s1

s = "No    squeezing   here. But here: -X  X    X   X      X  X-"
p s
s.expose(34..-1).squeeze!(" ")
p s



__________________________________________________
Do You Yahoo!?
Send FREE Valentine eCards with Yahoo! Greetings!
http://greetings.yahoo.com

In This Thread

Prev Next