[#362083] Teaching Programming Languages (including Ruby) — Samuel Williams <space.ship.traveller@...>

Hello,

20 messages 2010/05/02

[#362098] Main working window for Ruby is DOS? — Kaye Ng <sbstn26@...>

I know nothing about programming and am not a techy person, so please

16 messages 2010/05/03

[#362116] School teacher still at it learning programming language — Hilary Bailey <my77elephants@...>

Now I while glimpsing at the beauty of Ruby, there is the software of

11 messages 2010/05/03

[#362166] Something I expected to work, but didn't! — Kurtis Rainbolt-greene <kurtisrainboltgreene@...>

irb(main):001:0> x = 2

11 messages 2010/05/04

[#362215] for-in vs. map closures — Mike Austin <mike_ekim@...>

I was experimenting with closures and JavaScript's and Ruby's

11 messages 2010/05/05

[#362286] ri on sqlite — Intransition <transfire@...>

What do others think of a creating a new ri tool which uses a SQLite

17 messages 2010/05/06

[#362341] ease of porting (translating) ruby to C (vs. python)? — bwv549 <jtprince@...>

In a very small bioinformatics group I know of, they are deciding

17 messages 2010/05/07

[#362375] Strings iteration — Viorel <viorelvladu@...>

I have some names like aaxxbbyy where xx is '01'..'10' and yy is also

14 messages 2010/05/08

[#362425] Any future for curses applications/toolkits like rbcurse ? — "R. Kumar" <sentinel.2001@...>

Have apps moved over to the web (or GUI) totally ? Will there be any

21 messages 2010/05/10
[#362441] Re: Any future for curses applications/toolkits like rbcurse ? — botp <botpena@...> 2010/05/10

On Mon, May 10, 2010 at 2:13 PM, R. Kumar <sentinel.2001@gmx.com> wrote:

[#362448] Re: Any future for curses applications/toolkits like rbcurse ? — "R. Kumar" <sentinel.2001@...> 2010/05/10

interface and/or the installation itself is terrible.

[#362458] Re: Any future for curses applications/toolkits like rbcurse ? — botp <botpena@...> 2010/05/10

On Mon, May 10, 2010 at 10:28 PM, R. Kumar <sentinel.2001@gmx.com> wrote:

[#362460] Re: Any future for curses applications/toolkits like rbcurse ? — "R. Kumar" <sentinel.2001@...> 2010/05/10

botp wrote:

[#362463] Re: Any future for curses applications/toolkits like rbcurse ? — "R. Kumar" <sentinel.2001@...> 2010/05/10

Strange. I cant push a gem even after yanking.

[#362452] Unit Test of method calling system() - how? — Martin Hansen <mail@...>

How can I unit test the two methods:

16 messages 2010/05/10

[#362498] In Ruby, can the coerce() method know what operator it is th — Jian Lin <blueskybreeze@...>

In Ruby, it seems that a lot of coerce() help can be done by

12 messages 2010/05/11
[#362546] Re: In Ruby, can the coerce() method know what operator it is th — Caleb Clausen <vikkous@...> 2010/05/11

On 5/10/10, Jian Lin <blueskybreeze@gmail.com> wrote:

[#362611] Re: In Ruby, can the coerce() method know what operator it is th — Colin Bartlett <colinb2r@...> 2010/05/12

On Tue, May 11, 2010 at 4:46 PM, Caleb Clausen <vikkous@gmail.com> wrote:

[#362657] Asynchronous HTTP request — Daniel DeLorme <dan-ml@...42.com>

Does anyone know how to do the following, but without threads, purely

28 messages 2010/05/13

[#362718] Range on strings. — Vikrant Chaudhary <nasa42@...>

Hi,

13 messages 2010/05/14

[#362787] class best way for getters ? — unbewusst.sein@... (Une B騅ue)

i have a class "HFSFile" initialized by a parsed string

12 messages 2010/05/15

[#362979] curl library? — Xeno Campanoli / Eskimo North and Gmail <xeno.campanoli@...>

Two questions:

14 messages 2010/05/18
[#362980] Re: curl library? — Xeno Campanoli / Eskimo North and Gmail <xeno.campanoli@...> 2010/05/18

On 10-05-18 02:35 PM, Xeno Campanoli / Eskimo North and Gmail wrote:

[#362982] Re: curl library? — Luis Parravicini <lparravi@...> 2010/05/18

On Tue, May 18, 2010 at 6:56 PM, Xeno Campanoli / Eskimo North and

[#362984] Re: curl library? — Xeno Campanoli / Eskimo North and Gmail <xeno.campanoli@...> 2010/05/18

Well, I got that -dev thing installed with apt-get, and then I tried again and

[#363027] Retrieve instance — Walle Wallen <walle.sthlm@...>

Quick question. Can I somehow retrieve the instance of the class Test in

11 messages 2010/05/19

[#363076] Scrape javascript content — Phil Mcdonnell <phil.a.mcdonnell@...>

I'm trying to scrape a page that hides some data behind a javascript

11 messages 2010/05/20

[#363115] OMG, why are there so many Strings in ObjectSpace! — timr <timrandg@...>

I was playing around looking at ObjectSpace in irb and was astounded

14 messages 2010/05/21

[#363225] Redefine a Class? — Mark T <paradisaeidae@...>

Currently this raises: superclass mismatch for class Soda (TypeError)

12 messages 2010/05/25

[#363240] Funny IO.select behaviour — Dennis Nedry <dennis@...>

I've been debugging my full screen console ruby editor.

13 messages 2010/05/25

[#363348] Ruby as Client Side Language in Web Browser (replacing JS) — "Simone R." <k5mmx@...>

Hi everybody,

17 messages 2010/05/27

[#363412] A better way to write this function? — Jason Lillywhite <jason.lillywhite@...>

Here is my attempt at Newton's second law in Ruby:

14 messages 2010/05/28

[#363417] Interrupting the evaluation of a ruby script — Emmanuel Emmanuel <emmanuel.bacry@...>

This is my problem :

12 messages 2010/05/28
[#363447] Re: Interrupting the evaluation of a ruby script — Branden Tanga <branden.tanga@...> 2010/05/28

Emmanuel Emmanuel wrote:

[#363483] Re: Interrupting the evaluation of a ruby script — Emmanuel Emmanuel <emmanuel.bacry@...> 2010/05/29

[#363426] A complete beginners question — Ant Walliams <anthonywainwright@...>

Hi there,

19 messages 2010/05/28

[#363432] Dynamic SVG with Ruby/Tk — Yotta Meter <spam@...>

The example I'm looking for in regards to ruby/SVG differs from the

14 messages 2010/05/28

[#363467] Date.today problem on linux with Ruby 1.8.6 — Jarmo Pertman <jarmo.p@...>

Hello.

10 messages 2010/05/29

[#363524] enumerator problem in 1.9.1 — Bug Free <amberarrow@...>

The following line:

19 messages 2010/05/31
[#363528] Re: enumerator problem in 1.9.1 — botp <botpena@...> 2010/05/31

On Mon, May 31, 2010 at 9:04 AM, Bug Free <amberarrow@yahoo.com> wrote:

[#363533] Re: enumerator problem in 1.9.1 — Robert Klemme <shortcutter@...> 2010/05/31

2010/5/31 botp <botpena@gmail.com>:

Re: iterating over sub arrays

From: James Harrison <oscartheduck@...>
Date: 2010-05-17 00:49:56 UTC
List: ruby-talk #362848
>>=20
>=20
> Minor nit: by convention, Ruby people tend to use CamelCase for =
constants=20
> only, and underscores for variables. Call it array_collection.

When I keep to that convention, I find my code's more readable. I can =
tell what something is by looking at it. Thanks for the reminder :)


>=20
> Anyway, seems like one obvious way would be recursion:
>=20
> def each_join array, context=3D[], &block
>  if array.length =3D=3D 0
>    yield context
>  else
>    first =3D array.first
>    rest =3D array[1...array.length]
>    first.each do |elem|
>      each_join rest, context+[elem], &block
>    end
>  end
> end
>=20
> Not pretty, and I'm sure someone could improve it, but it works.

That it does, that it does. Unfortunately, I don't understand it. If =
you've got a minute, would you give a hand?

It looks to me like:

each_join takes three arguments. The first is an array, the second is =
predefined to be an empty array, the third is a reference to a block.=20

First, I don't understand why you need to pass in a reference to a =
block, or why one would want to do that in general. Programming Ruby =
covers it by saying that this allows a block to be treated as a Proc =
object. I guess my misunderstanding, then, is what the hell a Proc =
object is really used for. I've been putting this off, and it meant that =
a simple solution escaped me, apparently. Onwards with understanding, =
then!

A Proc object lets you assign a block to a variable. My naive reading of =
http://ruby-doc.org/core/classes/Proc.html leads me to imagine that the =
first benefit of this is that you can assign what's essentially a method =
call to a variable, almost like you're making a new object out of the =
variable. What does the object do? Take some number of arguments to its =
call method, and do something with those arguments.

Why would you want to use this? I don't know. But it looks like that's =
all it does.

And what does this have to do with each_join?

Okay. The second argument, context. I'm not sure what it's doing. It's =
an empty array which is handed back to the block when the length of the =
original argument array is zero. I don't see how the argument array ever =
gets set to zero, though.

Okay, here goes my explanation:

Why is &block passed in? So that on successive calls to each_join, the =
block is correctly associated with the method.

At the if statement, array.length is non-zero. As such, we go to the =
else clause.
The first sub-array is assigned to the variable "first". The other =
subarrays are assigned to the variable "rest".
So in the case of an array of arrays:
[["bacon", "time", "ostrich"], ["jam", "bees", "please"], ["1", "2", =
"3"]]

After the first pass:

first =3D ["bacon", "time", "ostrich"]
rest =3D [["jam", "bees", "please"], ["1", "2", "3"]]

And then you start iterating over first.

first.each do |elem| #first time around, elem =3D=3D "bacon"
each_join rest, context+[elem], &block

So what happens now?

first =3D ["jam", "bees", "please"]
rest =3D ["1", "2", "3"]

elem is set to "jam" on the iteration over first, context becomes =
["bacon", "jam"] and we enter the whole thing again.


Okay, the above is a nice start for any other new folks looking to trace =
this, but I just finished up and my mind =3D=3D blown. It took me a =
while to realise that the control structure here is actually:

first.each do |elem|

and that's what's driving everything. For anyone else wanting to follow =
along, try this out:

arrayCollection =3D [["bacon", "1", "2", "4"], ["jam", "bees", =
"please"], ["6", "7", "8"]]

def each_join array, context=3D[], &block
 if array.length =3D=3D 0
   puts "now context is #{context}"
   yield context
 else
   first =3D array.first
   puts "context is #{context}"
   puts "first is #{first}"
   rest =3D array[1...array.length]
   puts "rest is #{rest}"
   first.each do |elem|
     puts "elem is #{elem}"
     puts ""
     each_join rest, context+[elem], &block=20
   end
 end
end


each_join(arrayCollection) do |b|
  puts "-------"
  puts "#{b}"
  puts "-------"
 =20
end







>=20
> It does seem pretty weird, though. Out of curiosity, what do you need =
this=20
> for?
>=20



Okay, you gave me quite an education today, so turn about is fair play.

I have a program which accepts input and outputs output.
It has both a gui and a scripting environment.

For the scripting environment, I documented every option that you can =
pass in. The options look like:

foo=3Dbar

or
foo=3D1

and several can be handed in at a time.

foo=3Dbar;jet=3Dbam;

and so on. Each option can only be specified once, but each option can =
have multiple valid values. In order to verify that every option that =
can be handed in actually works as expected, I want to generate a set of =
scripts from the documentation I wrote. The parser I have for the =
documentation finds a series of lines of type:

foo=3Dbar -- does something fooish
foo=3Dbam -- does something else fooish

jet=3Dbar -- does something jetish
jet=3Dbam -- does something else jetish

and so on. I'm popping each option string into an array:

[[foo=3Dbar, foo=3Dbam], [jet=3Dbar, jet=3Dbam]]

And from there, generate every possible combination of all options. I'd =
done everything else, but that last item on the list was killin' me.







In This Thread