[#140667] Thinking of creating a small mini-language-interpreter using Ruby — Glenn Smith <glenn.ruby@...>

Always something I've wanted to write - an interpreter of my own. Now

12 messages 2005/05/01

[#140714] Ruby, Rails and now og — "Andrew Ballantine" <andrew.ballantine@...>

Hi,

16 messages 2005/05/02

[#140808] Re: "Bounty" approach for small pieces of code? — Hal Fulton <hal9000@...>

Molitor, Stephen L wrote:

12 messages 2005/05/03
[#140810] Re: "Bounty" approach for small pieces of code? — Richard Lyman <lymans@...> 2005/05/03

On 5/2/05, Hal Fulton <hal9000@hypermetrics.com> wrote:

[#140856] Bug Tracker — Andy Stone <xsltguru@...>

Hello all,

28 messages 2005/05/03

[#140910] Typo-checking instead of static typing — Ben Giddings <bg-rubytalk@...>

Once again, static typing reared its head on the mailing list, and once

31 messages 2005/05/03

[#140928] Re: [ANN] traits-0.0.0 — "Berger, Daniel" <Daniel.Berger@...>

> -----Original Message-----

16 messages 2005/05/03

[#141015] writing to a file with gsub! — Ralf Mler <r_mueller@...>

Hi,

12 messages 2005/05/04

[#141023] Object#inside_metaclass? — "Ara.T.Howard" <Ara.T.Howard@...>

56 messages 2005/05/04
[#141045] Re: [RCR] Object#inside_metaclass? — "David A. Black" <dblack@...> 2005/05/04

On Wed, 4 May 2005, Ara.T.Howard wrote:

[#141050] Re: [RCR] Object#inside_metaclass? — Ilias Lazaridis <ilias@...> 2005/05/04

David A. Black wrote:

[#141522] Re: [RCR] Object#inside_metaclass? — Yukihiro Matsumoto <matz@...> 2005/05/07

Hi,

[#141533] Re: [RCR] Object#inside_metaclass? — Ilias Lazaridis <ilias@...> 2005/05/07

Yukihiro Matsumoto wrote:

[#141548] Re: [RCR] Object#inside_metaclass? — Yukihiro Matsumoto <matz@...> 2005/05/07

In message "Re: [RCR] Object#inside_metaclass?"

[#141550] Re: [RCR] Object#inside_metaclass? — Ilias Lazaridis <ilias@...> 2005/05/07

Yukihiro Matsumoto wrote:

[#141575] Re: [RCR] Object#inside_metaclass? — Yukihiro Matsumoto <matz@...> 2005/05/07

[#141057] Fixnum's binary representation — camsight@...

Hi, people!

13 messages 2005/05/04

[#141143] Re: object reference handle (like perl's reference to scalar) — Eric Mahurin <eric_mahurin@...>

> > In ruby, is there a way to get a handle of an object

17 messages 2005/05/04

[#141165] Ruby Editor Plugin for jEdit 0.6 - method completion release — "Rob ." <rob.02004@...>

Version 0.6 of jEdit's Ruby Editor Plugin has been released and is

21 messages 2005/05/05
[#141176] Re: [ANN] Ruby Editor Plugin for jEdit 0.6 - method completion release — Alexandru Popescu <the_mindstorm@...> 2005/05/05

-----BEGIN PGP SIGNED MESSAGE-----

[#141186] Re: [ANN] Ruby Editor Plugin for jEdit 0.6 - method completion release — "Rob ." <rob.02004@...> 2005/05/05

Alexandru Popescu wrote:> Rob . said:> > Version 0.6 of jEdit's Ruby Editor Plugin has been released and is> > available for download!> >> > http://www.jedit.org/ruby/> > Great job Rob!Mulmesc!

[#141205] Re: [ANN] Ruby Editor Plugin for jEdit 0.6 - method completion release — Tom Copeland <tom@...> 2005/05/05

On Thu, 2005-05-05 at 18:38 +0900, Rob . wrote:

[#141219] Re: [ANN] Ruby Editor Plugin for jEdit 0.6 - method completion release — Alexandru Popescu <the_mindstorm@...> 2005/05/05

-----BEGIN PGP SIGNED MESSAGE-----

[#141225] Re: [ANN] Ruby Editor Plugin for jEdit 0.6 - method completion release — "Rob ." <rob.02004@...> 2005/05/05

Alex, I don't get an exception in this case, but I see what you mean.

[#141196] Whats so different about a Hash? — Andrew Walrond <andrew@...>

Consider:

15 messages 2005/05/05
[#141197] Re: Whats so different about a Hash? — Brian Schrer <ruby.brian@...> 2005/05/05

On 05/05/05, Andrew Walrond <andrew@walrond.org> wrote:

[#141199] Re: Whats so different about a Hash? — Andrew Walrond <andrew@...> 2005/05/05

Hi Brian,

[#141299] another Tk question — Joe Van Dyk <joevandyk@...>

In Tk, what's the best way to show a large table of data that gets

15 messages 2005/05/05
[#141326] Re: another Tk question — Hidetoshi NAGAI <nagai@...> 2005/05/06

From: Joe Van Dyk <joevandyk@gmail.com>

[#141307] String Manipulation Nuby Question — Chris Roos <chris@...>

I have a Person with title, forename and surname (all of which are

13 messages 2005/05/05

[#141311] Ruby Editor Plugin for jEdit 0.6.1 - method completion release II — "Rob ." <rob.02004@...>

Version 0.6.1 of jEdit's Ruby Editor Plugin has been released and is

12 messages 2005/05/05

[#141334] RCR 303: nil should accept missing methods and return nil — John Carter <john.carter@...>

A very simple and generic way of improving the reliability of Ruby

66 messages 2005/05/06
[#141338] Re: RCR 303: nil should accept missing methods and return nil — Luke Graham <spoooq@...> 2005/05/06

On 5/6/05, John Carter <john.carter@tait.co.nz> wrote:

[#141339] Re: RCR 303: nil should accept missing methods and return nil — Hal Fulton <hal9000@...> 2005/05/06

Luke Graham wrote:

[#141345] Re: RCR 303: nil should accept missing methods and return nil — John Carter <john.carter@...> 2005/05/06

On Fri, 6 May 2005, Hal Fulton wrote:

[#141340] Prove me Wrong! Re: RCR 303: nil should accept missing methods — John Carter <john.carter@...> 2005/05/06

On Fri, 6 May 2005, Alexey Verkhovsky wrote:

[#141349] What sound does no duck make? — John Carter <john.carter@...>

Imagine a flock of ducks in the sky. Listen.

13 messages 2005/05/06

[#141368] Re: compiler error: argument of type "VALUE *" is incompatible with parameter of type "VALUE" — me2faster@...

On May 5, 2005, at 2:44 PM, me2faster@excite.com wrote:

10 messages 2005/05/06

[#141529] [NITRO] - Mr. George Moschovitis applies Censorship on Public Project Forum — Ilias Lazaridis <ilias@...>

To understand further the _real_ difference between Nitro/Og and

25 messages 2005/05/07

[#141530] [NITRO] - Mr. Moschovitis Revolutionary Redefinition of an Open Source Project — Ilias Lazaridis <ilias@...>

George Moschovitis wrote

15 messages 2005/05/07

[#141576] HighLine 0.4.0 — James Edward Gray II <james@...>

HighLine 0.4.0 Released

29 messages 2005/05/07
[#141616] Re: HighLine 0.4.0 — "Vincent Foley" <vfoley@...> 2005/05/07

Hello James,

[#141618] Re: HighLine 0.4.0 — James Edward Gray II <james@...> 2005/05/07

On May 7, 2005, at 4:19 PM, Vincent Foley wrote:

[#141598] Vacation - email me when Ilias is gone or people FINALLY stop responding to him — Ryan Davis <ryand-ruby@...>

The signal:noise ratio on this list is terrible. I'm taking a

12 messages 2005/05/07
[#141647] Re: Vacation - email me when I. is gone or people FINALLY stop responding to him — Bertram Scharpf <lists@...> 2005/05/08

Hi,

[#141615] - Sterile Classes / Sterile Meta Classes — Ilias Lazaridis <ilias@...>

Another suggestion for the "Ruby Singleton Classes" or "Exclusive Classes":

72 messages 2005/05/07
[#141681] Re: [ETYMOLOGY] - Sterile Classes / Sterile Meta Classes — Yukihiro Matsumoto <matz@...> 2005/05/08

In message "Re: [ETYMOLOGY] - Sterile Classes / Sterile Meta Classes"

[#141709] Re: [ETYMOLOGY] - Sterile Classes / Sterile Meta Classes — Carlos <angus@...> 2005/05/08

[Yukihiro Matsumoto <matz@ruby-lang.org>, 2005-05-08 17.13 CEST]

[#141710] Re: [ETYMOLOGY] - Sterile Classes / Sterile Meta Classes — Hal Fulton <hal9000@...> 2005/05/08

Carlos wrote:

[#141715] Re: [ETYMOLOGY] - Sterile Classes / Sterile Meta Classes — Yukihiro Matsumoto <matz@...> 2005/05/08

Hi,

[#141719] Re: [ETYMOLOGY] - Sterile Classes / Sterile Meta Classes — "David A. Black" <dblack@...> 2005/05/08

Hi --

[#141748] Re: [ETYMOLOGY] - Sterile Classes / Sterile Meta Classes — Yukihiro Matsumoto <matz@...> 2005/05/08

Hi,

[#141810] Re: [ETYMOLOGY] - Sterile Classes / Sterile Meta Classes — Yukihiro Matsumoto <matz@...> 2005/05/09

Hi,

[#141655] No Thing Here vs Uninitialized and RCR 303 — Cyent <cyent@...>

I'm observing a general trend in the responses to RCR 303.

26 messages 2005/05/08
[#141745] Re: No Thing Here vs Uninitialized and RCR 303 — Lionel Thiry <lthiryidontwantspam@...> 2005/05/08

Cyent a 馗rit :

[#141746] Re: No Thing Here vs Uninitialized and RCR 303 — Bill Atkins <batkins57@...> 2005/05/08

This isn't about changing programming habits. Having nil return nil

[#141707] Singleton class terminology — Hal Fulton <hal9000@...>

Just expressing my opinion here.

16 messages 2005/05/08

[#141776] Stats comp.lang.ruby (last 7 days) — Balwinder Singh Dheeman <bsd.SANSPAM@...>

Stats comp.lang.ruby (last 7 days)

15 messages 2005/05/09

[#141875] How to extract texts from html source? — "Sam Kong" <sam.s.kong@...>

Hi, all!

14 messages 2005/05/09

[#141900] Still umlauts — Bertram Scharpf <lists@...>

Hi,

8 messages 2005/05/09
[#142448] Re: Still umlauts — "Josef 'Jupp' SCHUGT" <jupp@...> 2005/05/12

Hi!

[#142507] Re: Still umlauts — Bertram Scharpf <lists@...> 2005/05/13

Hi,

[#142514] Re: Still umlauts — Jonas Hartmann <Mail@...> 2005/05/13

Bertram Scharpf wrote:

[#142527] Re: Still umlauts — =?WINDOWS-1252?Q?Brian_Schr=F6der?= <ruby.brian@...> 2005/05/13

On 13/05/05, Jonas Hartmann <Mail@jonas-hartmann.com> wrote:> Bertram Scharpf wrote:> > Hi,> >> > Am Freitag, 13. Mai 2005, 04:34:00 +0900 schrieb Josef 'Jupp' SCHUGT:> >> >>At Tue, 10 May 2005 06:58:30 +0900, Bertram Scharpf wrote:> >>> >>>does this no longer work?> >>> >>You forgot to define the meaning of 'no longer works':> >>> >> - What precisely do you mean by 'it works'?> >> >> > Sorry, that was not actually elaborate. Now I think it> > never worked at all.> >> >> >>>--------------------> >>>#!/usr/bin/env ruby> >>># -*- coding: UTF-8 -*-> >>>> >>>puts $KCODE> >>>puts "蔕ヨワ゜"> >>>--------------------> >>>> >>>I tried it with Ruby 1.8.2 and 1.9, Debian Linux.> >>>What do I miss?> >> >> > In the meantime I received an answer in ruby-core and it> > seems Matz just _planned_ to implement it but didn't have> > the time yet.> >> > The problem arises when my program is run on SuSE Linux> > where the default encoding is UTF-8.> >> > A better way to test in which encoding you reside is:> >> > "テ =~ /./> > puts $&.length> >> > This gives 1 in `None' and 2 in `UTF-8'.> >> >> >>When in doubt *set* $KCODE explicitly.> >> >> > This has no influence on how the source code is read. The> > string " produces an error when `ruby -Ku' is called.> >> > Of course I should have written "\xc3\xa4" and "\xc3".> > Is this the only way to handle strings UTF-8 in ruby?> > >> > Sorry again for the noise.> >> > Bertram> >> >> > regards> jonas> >

[#141958] Redesign 2005, Round Two — why the lucky stiff <ruby-talk@...>

I'm happy to say that our little redesign team has come to accord on a

80 messages 2005/05/10
[#142020] Re: [ANN] Redesign 2005, Round Two — gabriele renzi <surrender_it@...> 2005/05/10

why the lucky stiff ha scritto:

[#142033] Re: [ANN] Redesign 2005, Round Two — Ilias Lazaridis <ilias@...> 2005/05/10

why the lucky stiff wrote:

[#142041] Re: [ANN] Redesign 2005, Round Two — Mark Hubbart <discordantus@...> 2005/05/10

On 5/10/05, Ilias Lazaridis <ilias@lazaridis.com> wrote:

[#142057] Re: [ANN] Redesign 2005, Round Two — Nikolai Weibull <mailing-lists.ruby-talk@...> 2005/05/10

Mark Hubbart, May 11:

[#142196] Re: Redesign 2005, Round Two — "Karl von Laudermann" <doodpants@...> 2005/05/11

[#142219] Re: Redesign 2005, Round Two — "David A. Black" <dblack@...> 2005/05/11

Hi --

[#142221] Re: Redesign 2005, Round Two — James Britt <james_b@...> 2005/05/11

David A. Black wrote:

[#142237] Re: Redesign 2005, Round Two — "Ryan Leavengood" <mrcode@...> 2005/05/11

James Britt wrote:

[#142252] Re: Redesign 2005, Round Two — "David A. Black" <dblack@...> 2005/05/11

Hi --

[#142267] Re: Redesign 2005, Round Two — James Britt <james_b@...> 2005/05/11

David A. Black wrote:

[#142274] Re: Redesign 2005, Round Two — "John W. Long" <ng@...> 2005/05/11

James Britt wrote:

[#142302] Re: Redesign 2005, Round Two — Yukihiro Matsumoto <matz@...> 2005/05/12

[#142054] String Hashing Algorithms — "Phrogz" <gavin@...>

Summary

16 messages 2005/05/10

[#142129] options parsing: required and conflict — Kirill Shutemov <k.shutemov@...>

Can I define options dependencies using OptionParser?

13 messages 2005/05/11
[#142130] Re: options parsing: required and conflict — "Robert Klemme" <bob.news@...> 2005/05/11

Kirill Shutemov wrote:

[#142133] ruby vs. java? — "Franz Hartmann" <porschefranz@...>

Hello all,

61 messages 2005/05/11
[#142136] Re: ruby vs. java? — Michael Ulm <michael.ulm@...> 2005/05/11

Franz Hartmann wrote:

[#142141] Re: ruby vs. java? — "Franz Hartmann" <porschefranz@...> 2005/05/11

Hello Michael and all of you,

[#142149] Re: ruby vs. java? — Logan Capaldo <logancapaldo@...> 2005/05/11

On 5/11/05, Franz Hartmann <porschefranz@hotmail.com> wrote:

[#142155] Re: ruby vs. java? — "Franz Hartmann" <porschefranz@...> 2005/05/11

Hello Logan,

[#142166] Re: ruby vs. java? — Ralf Mler <r_mueller@...> 2005/05/11

[#142171] Re: ruby vs. java? — "Franz Hartmann" <porschefranz@...> 2005/05/11

Ralf,

[#142176] Re: ruby vs. java? — Ralf Mler <r_mueller@...> 2005/05/11

> (physician = Arzt, physicist = Physiker) :-)))

[#142224] alternatives to ? : contruct — "John-Mason P. Shackelford" <jpshack@...>

As an alternative to:

21 messages 2005/05/11

[#142260] Re: object loops and what they return — Eric Mahurin <eric_mahurin@...>

That sure looks ugly. I don't see any advantage of this over:

33 messages 2005/05/11
[#142359] Re: {} vs begin/end [was Re: object loops and what they return] — "Robert Klemme" <bob.news@...> 2005/05/12

Brian Schrer wrote:

[#142379] Re: {} vs begin/end [was Re: object loops and what they return] — "Jim Weirich" <jim@...> 2005/05/12

[#142268] Request for advice on applying a license — Nikolai Weibull <mailing-lists.ruby-talk@...>

Hi!

14 messages 2005/05/11
[#142276] Re: [OT] Request for advice on applying a license — Ben Giddings <bg-rubytalk@...> 2005/05/11

On Wednesday 11 May 2005 18:59, Nikolai Weibull wrote:

[#142370] Re: [OT] Request for advice on applying a license — Christian Neukirchen <chneukirchen@...> 2005/05/12

Ben Giddings <bg-rubytalk@infofiend.com> writes:

[#142342] Go through directories recursively — Jens Riedel <JensRie@...>

Hello,

17 messages 2005/05/12

[#142378] Amazing Mazes (#31) — Ruby Quiz <james@...>

Wow, these solutions are great fun to play with. I think next week's quiz needs

16 messages 2005/05/12

[#142404] We need a comprehensive test suite — Daniel Berger <djberge@...>

All,

12 messages 2005/05/12

[#142462] Get back data from a child (with exec) — Lawrence Oluyede <raims@...>

13 messages 2005/05/12

[#142620] ruby in WinXP as an automation tool — "kevin.gc@..." <kevin.gc@...>

Can anyone tell me if it can be done?

19 messages 2005/05/14

[#142671] infinite number of singleton_classes — Lionel Thiry <lthiryidontwantspam@...>

Hello!

37 messages 2005/05/15
[#142710] Re: infinite number of singleton_classes — Ara.T.Howard@... 2005/05/15

On Sun, 15 May 2005, Lionel Thiry wrote:

[#142745] Re: infinite number of singleton_classes — Lionel Thiry <lthiryidontwantspam@...> 2005/05/15

Ara.T.Howard@noaa.gov a 馗rit :

[#142746] Re: infinite number of singleton_classes — Hal Fulton <hal9000@...> 2005/05/15

Lionel Thiry wrote:

[#142711] Re: infinite number of singleton_classes — "David A. Black" <dblack@...> 2005/05/15

Hi --

[#142806] IRB, Mac OS X, command-line require via "-r" and Bus Errors — "James Adam" <james.adam@...>

Hey All,

22 messages 2005/05/16

[#142808] Ruby Weekly News 2nd - 15th May 2005 — timsuth@... (Tim Sutherland)

http://www.rubyweeklynews.org/20050515.html

15 messages 2005/05/16
[#143444] Array.=== Bug, Rails Bug, or brain failure? — Markus <markus@...> 2005/05/23

I've got some rails code that is failing in a very strange way. It is

[#143447] Re: Array.=== Bug, Rails Bug, or brain failure? — Jamis Buck <jamis@37signals.com> 2005/05/23

Markus,

[#143449] Re: Array.=== Bug, Rails Bug, or brain failure? — Markus <markus@...> 2005/05/23

[#142894] Google API, Soap and windows XP — ruby talk <rubytalk@...>

Hello,I am playing with the google api and soap. I have the newest versionof soap and i think ruby 1.8. I created my code on a laptop withmandrake 10.2 with the same version of ruby and soap. On my laptop itworks fine. On my windows computer it give me an error."F:\Documents and Settings\iv\Desktop\googlerip>ruby googled.rbmonkey filetype:pdfLoading compatibility library...c:/ruby/lib/ruby/1.8/xsd/datatypes.rb:172:in `_set': {http://www.w3.org/2001/XMLSchema}string: cannot accept '<b>...</b> Tibetan year of the <b>monkey</b>. These instructions are traditionally given <b>...</b><br> thus will give the rare ΓÇÖ<b>Monkey</b>-Year-TeachingsΓÇÖ after the inauguration in <b>...</b>'. (XSD::ValueSpaceError) from c:/ruby/lib/ruby/1.8/xsd/datatypes.rb:114:in `set' from c:/ruby/lib/ruby/1.8/soap/encodingstyle/soapHandler.rb:453:in `decode_textbuf' from c:/ruby/lib/ruby/1.8/soap/encodingstyle/soapHandler.rb:214:in `decode_tag_end' from c:/ruby/lib/ruby/1.8/soap/parser.rb:185:in `decode_tag_end' from c:/ruby/lib/ruby/1.8/soap/parser.rb:146:in `end_element' from c:/ruby/lib/ruby/1.8/xsd/xmlparser/parser.rb:75:in `end_element' from c:/ruby/lib/ruby/1.8/xsd/xmlparser/xmlparser.rb:36:in `do_parse' from c:/ruby/lib/ruby/1.8/xsd/xmlparser/xmlparser.rb:31:in `parse' ... 7 levels... from (eval):2:in `doGoogleSearch' from googled.rb:16 from googled.rb:15:in `each' from googled.rb:15"

2 messages 2005/05/17

[#142901] Help regarding def wrapper — Nikolai Weibull <mailing-lists.ruby-talk@...>

I窶囘 like to have a def that I can scope in one go, i.e.,

17 messages 2005/05/17

[#143041] Compiling MySQL-Ruby on Tiger — "pat allan" <pat.allan@...>

Hi all

21 messages 2005/05/18

[#143087] (newbie Q) opposite of inspect for strings — "Basile Starynkevitch [news]" <basile-news@...>

14 messages 2005/05/18

[#143225] Re: Multiple return and parallel assignement — Eric Mahurin <eric_mahurin@...>

25 messages 2005/05/20

[#143229] Web services and Ruby — Luke Kanies <luke@...>

Hi all,

17 messages 2005/05/20

[#143252] HighLine 0.6.0 -- Now with menus! — James Edward Gray II <james@...>

HighLine 0.6.0 Released

18 messages 2005/05/20

[#143305] join not in Enumerable — Logan Capaldo <logancapaldo@...>

Just a few minutes ago I was playing with irb as I am wont to do, and

14 messages 2005/05/21

[#143328] Vim's Ruby indenting — "Vincent Foley" <vfoley@...>

Hi to all the vim users,

17 messages 2005/05/22

[#143337] Uniform vector class, inheriting from Array: How to make sure that methods return a Vector and not an Array? — Thomas <sanobast-2005a@...>

Hi folks,

8 messages 2005/05/22
[#143342] Re: Uniform vector class, inheriting from Array: How to make sure that methods return a Vector and not an Array? — Brian Schrer <ruby.brian@...> 2005/05/22

On 22/05/05, Thomas <sanobast-2005a@yahoo.de> wrote:

[#143366] Stats comp.lang.ruby (last 7 days) — Balwinder Singh Dheeman <bsd.SANSPAM@...>

Stats comp.lang.ruby (last 7 days)

11 messages 2005/05/23

[#143375] sciTe editor IRB window getting double characters — "soxinbox" <faker@...>

Has any one had a problem with the latest release of Ruby and the included

10 messages 2005/05/23

[#143515] if __FILE_ == $0 executed twice — Han Holl <han.holl@...>

Hello,

21 messages 2005/05/24

[#143550] new article — pat eyler <pat.eyler@...>

Sorry for posting about my own article, but I'm interested in feedback,

24 messages 2005/05/24

[#143655] A different perspective on Ruby. — ES <ruby-ml@...>

47 messages 2005/05/26
[#143681] Re: A different perspective on Ruby. — "gsinclair@..." <gsinclair@...> 2005/05/26

ES wrote:

[#143683] Re: A different perspective on Ruby. — Brian Schrer <ruby.brian@...> 2005/05/26

On 26/05/05, gsinclair@gmail.com <gsinclair@gmail.com> wrote:

[#143705] Intellisense and the psychology of typing — andrew.queisser@...

Yesterday I typed in some C++ code that called a function with two

50 messages 2005/05/26
[#143710] Re: Intellisense and the psychology of typing — Thomas Adam <thomas@...> 2005/05/26

On Fri, May 27, 2005 at 01:35:19AM +0900, andrew.queisser@hp.com wrote:

[#143716] Re: Intellisense and the psychology of typing — Lothar Scholz <mailinglists@...> 2005/05/26

Hello Thomas,

[#144032] Re: Intellisense and the psychology of typing — Richard Cole <rcole@...> 2005/05/30

Lothar Scholz wrote:

[#144040] Re: Intellisense and the psychology of typing — Austin Ziegler <halostatue@...> 2005/05/30

On 5/30/05, Richard Cole <rcole@itee.uq.edu.au> wrote:

[#144080] Re: Intellisense and the psychology of typing — Lothar Scholz <mailinglists@...> 2005/05/31

Hello Austin,

[#144088] Re: Intellisense and the psychology of typing — Austin Ziegler <halostatue@...> 2005/05/31

On 5/31/05, Lothar Scholz <mailinglists@scriptolutions.com> wrote:

[#144109] Re: Intellisense and the psychology of typing — Caleb Clausen <vikkous@...> 2005/05/31

Austin Ziegler wrote:

[#144114] Re: Intellisense and the psychology of typing — Austin Ziegler <halostatue@...> 2005/05/31

On 5/31/05, Caleb Clausen <vikkous@gmail.com> wrote:

[#144124] Re: Intellisense and the psychology of typing — Eric Mahurin <eric_mahurin@...> 2005/05/31

--- Austin Ziegler <halostatue@gmail.com> wrote:

[#143799] Plz comment — Dr Balwinder S Dheeman <bsd.SANSPAM@...>

Dear Rubiest!

22 messages 2005/05/27

[#143812] Ruby on Rails interest in comp.lang.python — Stephen Kellett <snail@...>

A heads up to the Rails folks.

14 messages 2005/05/27

[#143825] How to build an index of phrases in a phrase/sentence? — Dan Fitzpatrick <dan@...>

I am trying to build an indexing structure on some phrases. Most phrases

11 messages 2005/05/27

[#143884] preventing Object#send from dispatching to a global method? — Francis Hwang <sera@...>

Is there a way to prevent Object#send from dispatching to a global

17 messages 2005/05/28
[#143908] Re: preventing Object#send from dispatching to a global method? — Jim Weirich <jim@...> 2005/05/29

[#143975] Ruby-VTK-0.2.0 was released — Seiya Nishizawa <seiya@...>

Hi everyone,

11 messages 2005/05/30

[#143976] Stats comp.lang.ruby (last 7 days) — Balwinder Singh Dheeman <bsd.SANSPAM@...>

Stats comp.lang.ruby (last 7 days)

26 messages 2005/05/30
[#144084] Re: Stats comp.lang.ruby (last 7 days) — "David A. Black" <dblack@...> 2005/05/31

On Mon, 30 May 2005, Balwinder Singh Dheeman wrote:

[#144107] Re: Stats comp.lang.ruby (last 7 days) — pat eyler <pat.eyler@...> 2005/05/31

On 5/31/05, David A. Black <dblack@wobblini.net> wrote:

[#144113] Re: Stats comp.lang.ruby (last 7 days) — James Britt <james_b@...> 2005/05/31

pat eyler wrote:

[#144144] Re: Stats comp.lang.ruby (last 7 days) — Dr Balwinder S Dheeman <bsd.SANSPAM@...> 2005/05/31

On 05/31/2005 11:44 PM, James Britt wrote:

[#144145] Re: Stats comp.lang.ruby (last 7 days) — James Edward Gray II <james@...> 2005/05/31

On May 31, 2005, at 6:15 PM, Dr Balwinder S Dheeman wrote:

[#144004] creating variable with eval — "Geert Fannes" <Geert.Fannes@...>

Hello, what is the scope of a variable created inside an eval()

14 messages 2005/05/30

[#144096] parseargs-0.0.0 — "Ara.T.Howard" <Ara.T.Howard@...>

23 messages 2005/05/31
[#144170] binding, ObjectSpace._id2ref [WAS] Re: [ANN] parseargs-0.0.0 — "Zev Blut" <rubyzbibd@...> 2005/06/01

Hello,

[#144254] Re: binding, ObjectSpace._id2ref [WAS] Re: [ANN] parseargs-0.0.0 — "Ara.T.Howard" <Ara.T.Howard@...> 2005/06/01

On Wed, 1 Jun 2005, Zev Blut wrote:

[#144306] Re: binding, ObjectSpace._id2ref [WAS] Re: [ANN] parseargs-0.0.0 — "Zev Blut" <rubyzbibd@...> 2005/06/02

Hello,

[SUMMARY] Cows and Bulls (#32)

From: Ruby Quiz <james@...>
Date: 2005-05-19 14:16:10 UTC
List: ruby-talk #143168
This game isn't much of a challenge to implement, but it's plenty hard enough to
actually play.  I don't even want to tell you how many guesses it took me to
figure out the simple word "yes", while testing my solution.  Worse, it had me
so shaken by that point all it had to say was, "I'm thinking of an 11 letter
word." to send me straight to Control-C!  I don't think so.

The solutions are interesting as usual.  Brian Schroeder was the only one who
tried an AI player and it's a pretty basic implementation.  It just randomly
guesses groups of letters, ruling out letters it knows don't work (0 cows and 0
bulls), until it gets pretty lucky and nails the word.  Brian also used the
readline library for his client, which is a very nice feature.  Take a look if
you haven't seen that used before.  (I hadn't.)  You can find both of the above
highlights in Brian's cows-and-bulls-client.rb file.

Ilmari Heikkinen's code was simple and easy to follow.  Might want to glance in
there if need to see an example of basic socket usage.  (Both Ilmari and Brian
rolled their own client and server code.)

I'll look into my code below this time.  I was pretty lazy and cheated
everywhere I could, so that should make it easy to summarize.  (Further
reinforcing that I really am lazy!)

Let's start with my cowsnbulls library:

	#!/usr/local/bin/ruby -w

	class WordGame
		DICTIONARY = %w{cow moon}
		
		def self.load_dictionary( file_name )
			DICTIONARY.clear
			
			File.foreach(file_name) do |line|
				line.downcase!
				line.gsub!(/[^a-z]/, "")
				
				next if line.empty?
				
				DICTIONARY << line
			end
			DICTIONARY.uniq!
		end
		
		# ...

The first thing any good word game needs is a dictionary and you can see my
version here.  Initially, I just assigned "cow" and "moon" for testing purposes
(unit tests not shown).  Then I added the class method load_dictionary() for
providing a real dictionary.  Technically, this method reassigns a constant,
which may feel wrong to some of you, but it's really just intended for the
initial load.  You can see that it's a line-by-line read and I downcase() and
remove any non-letter characters.  Because that process could create duplicates,
I end with a call to uniq!().

		# ...
		
		def initialize( size = nil )
			@word = nil

			if size
				count = 0
				DICTIONARY.each do |word|
					if word.size == size
						count += 1
						@word = word if rand(count) == 0
					end
				end
			end
		
			@word = DICTIONARY[rand(DICTIONARY.size)] if @word.nil?
		end

		attr_accessor :word
		
		# ...

The only goal of initialize() is to pick the word for the game.  The only time
that's at all tricky, is when we are given a size preference.  I could have made
that section shorter with a call to find_all() and a random pick from the
resulting set, but I decided to be clever and do all the work with a single walk
of the dictionary.  To do that, I adapted the popular "read a random line from a
file" algorithm.  I just count the correct sized words passed and replace my
word choice whenever rand(count) == 0.  That assures that the first correctly
sized word is replaced 100% of the time, the second 50%, the third 33.33%, etc. 
That gives us a fair random pick, only walking the list once.  The final line of
the method is our fall back plan (random pick), if a size was not given or
found.

I didn't originally have the accessor for word and it's not used in any code
I'll show today.  Unfortunately, it was a necessary evil for my Web interface
(not shown).

Let's get to the actual game code:

		# ...
		
		def guess( word )
			answer = @word.dup
			word   = word.downcase.gsub(/[^a-z]/, "")
			
			return true if word == answer

			bulls = 0
			word.scan(/[a-z]/).each_with_index do |char, index|
				break if index == answer.size
				if char == answer[index, 1]
					word[index, 1] = answer[index, 1] = "."
					bulls += 1
				end
			end
			
			cows = 0
			word.scan(/[a-z]/).each do |char|
				if index = answer.index(char)
					answer[index, 1] = "."
					cows += 1
				end
			end
			
			return cows, bulls
		end
		
		def word_length(  )
			@word.length
		end
	end

The guess() methods is really the entire game.  It starts by making a duplicate
of the answer word, so it's free to damage it, and normalizing the provided
guess word, same as I did with the dictionary words.  If they're the same at
that point, we return true to indicate a win.  Otherwise, we return a two
element Array containing a count of "cows" and "bulls".

Bulls are counted simply by looking for like characters at each index.  When
found, we set that index to a nonsense character (".") in both guess and answer,
to keep them from affecting our count of cows.  That count again scan()s the
guess word letter-by-letter, but this time index() is used to find a match in
the answer, allowing it to occur anywhere.  Again, the answer location is set to
a nonsense character, in case the same letter occurs more than once.

The word_length() method just returns the length of the selected word, as
expected.

We'll skip the rest of the code in that file.  All it does it to create a
command-line interface, when the library is executed.  That doesn't have
anything to do with the quiz solution and it's not as cool as Brian's readline
enhanced version, so look there instead.

Here is my actual solution, the server:

	#!/usr/local/bin/ruby -w

	require "gserver"
	require "cowsnbulls"
	require "optparse"

	class TelnetServer < GServer
		def self.handle_telnet( line, io )          # minimal Telnet
			line.gsub!(/([^\015])\012/, "\\1")      # ignore bare LFs
			line.gsub!(/\015\0/, "")                # ignore bare CRs
			line.gsub!(/\0/, "")                    # ignore bare NULs

			while line.index("\377")                # parse Telnet codes
				if line.sub!(/(^|[^\377])\377[\375\376](.)/, "\\1")
					# answer DOs and DON'Ts with WON'Ts
					io.print "\377\374#{$2}"
				elsif line.sub!(/(^|[^\377])\377[\373\374](.)/, "\\1")
					# answer WILLs and WON'Ts with DON'Ts
					io.print "\377\376#{$2}"
				elsif line.sub!(/(^|[^\377])\377\366/, "\\1")
					# answer "Are You There" codes
					io.puts "Still here, yes."
				elsif line.sub!(/(^|[^\377])\377\364/, "\\1")
					# do nothing - ignore IP Telnet codes
				elsif line.sub!(/(^|[^\377])\377[^\377]/, "\\1")
					# do nothing - ignore other Telnet codes
				elsif line.sub!(/\377\377/, "\377")
					# do nothing - handle escapes
				end
			end
			
			line
		end
		
		# ...

You can see that I require Ruby's standard gserver in this code and that my
TelnetServer inherits from GServer.  More on that in a bit.

The rest of that chunk code is just an ugly method filled with a bunch of calls
to gsub!().  I'm not much of a fan of using custom protocols when it can be
avoided, so my server is meant to talk to simple Telnet clients.  (You can
usually get away with using Telnet without any fancy coding, but this is a
minimal handler for Telnet codes.)  The method just cleanses the passed line of
Telnet codes, responding to them as needed.  It tells the Telnet client that we
aren't capable of any special features and ignores everything else.  That's as
basic as Telnet can be.

		# ...
		
		def initialize( port = 61676, *args )
			super(port, *args)
		end
		
		def serve( io )
			game = WordGame.new
			io.puts "I'm thinking of a #{game.word_length} word."
			loop do
				io.print "Your guess?  "
				try = self.class.handle_telnet(io.gets, io)
				
				results = game.guess(try)
				if results == true
					io.puts "That's right!"
					
					io.print "Play again?  "
					if self.class.handle_telnet(io.gets[0], io) == ?y
						game = WordGame.new
						io.puts "I'm thinking of a " +
						        "#{game.word_length} letter word."
					else
						break
					end
				else
					cows = if results.first == 1
						"1 Cow"
					else
						"#{results.first} Cows"
					end
					bulls = if results.last == 1
						"1 Bull"
					else
						"#{results.last} Bulls"
					end
					io.puts "#{cows} and #{bulls}"
				end
			end
		end
	end
	
	# ...

Back to GServer.  Using it is a simple two-step process.  First, you need to
initialize() the server and you can see that I do that here, just by setting a
port to listen on.  The only other step is to override serve(), to handle
individual connections.

As you can see, serve() gets passed an io object, that can be read from and
written to as needed.  My implementation is basically just a command-line
program using io instead of STDIN and STDOUT.  I do filter all input through
handle_telnet() to catch the codes, of course.  I tell the player the size of
the word, loop over their answers until they get it right, offer them a new
game, and end when they've had enough.  Notice that I don't need to worry about
threading in here.  GServer takes care of that for me.  When serve() returns,
the connection will be terminated.

GServer is great for these simple networking tasks.  It's not up to the
challenges of bigger server projects, but it's nice when the job is easy.

Here's the final bit of code:

	# ...
	
	listen_port = 61676
	ARGV.options do |opts|
		opts.banner = "Usage:  #{File.basename($0)}  [OPTIONS]"
		
		opts.separator ""
		opts.separator "Specific Options:"
		
		opts.on( "-d", "--dictionary DICT_FILE",
		         "The dictionary file to pull words from." ) do |dict|
			WordGame.load_dictionary(dict)
		end
		opts.on( "-p", "--port PORT", Integer,
		         "The port to listen for connections on." ) do |port|
			listen_port = port
		end

		opts.separator "Common Options:"

		opts.on( "-h", "--help",
		         "Show this message." ) do
			puts opts
			exit
		end
	end.parse!

	server = TelnetServer.new(listen_port)
	server.start
	server.join

Most of that code is just option parsing with optparse.  I'm allowing a port and
dictionary to be specified when the server is launched.

The final three lines kick off GServer.  I build an instance, passing the port;
start() the server process; and join() the server, so my code won't exit until
all the server Threads do.  That's all it takes to run GServer.

My thanks to Brian and Ilmari for the solutions and Pat for the quiz.  Good
stuff all around.

Tomorrow the I've got another submitted quiz for you, this time a tiling
problem...

In This Thread

Prev Next