# Ruby Weekly News 19th - 25th March 2007

**URL:** <https://www.ruby-forum.com/t/ruby-weekly-news-19th-25th-march-2007/90279>\
**Category:** Ruby\
**Created:** [March 27, 2007, 10:40am UTC](https://www.ruby-forum.com/t/ruby-weekly-news-19th-25th-march-2007/90279 "2007-03-27T10:40:46Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![weliwarmer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/a587f6/32.png) [@weliwarmer](https://www.ruby-forum.com/u/weliwarmer)\
**Post date:** [March 27, 2007, 10:40am UTC](https://www.ruby-forum.com/t/ruby-weekly-news-19th-25th-march-2007/90279/1 "2007-03-27T10:40:46Z")

</div>

Links are at [http://www.rubyweeklynews.org/20070325.html](http://www.rubyweeklynews.org/20070325.html)

# Ruby Weekly News 19th - 25th March 2007

Ruby Weekly News takes a look at the week’s discussions on the  
ruby-talk  
mailing list (and its equivalents, the comp.lang.ruby newsgroup and  
Ruby  
forum).

This edition is brought to you by Tim S. and MenTaLguY.

# Articles and Announcements

```
 * Ruby Hoedown 2007 - the Ruby conference down south
 ----------------------------------------------------

   Jeremy McAnally proudly announces Ruby Hoedown 2007, the first
   regional Ruby conference in the Southern United States.

   "Ruby Hoedown, a joint effort between Raleigh.rb, Atlanta.rb, and
   myself, is going to be held at the Red Hat HQ in Raleigh, NC on 

```

August  
10-11, 2007."

```
 * Pledgie drive for Rubinius
 ----------------------------

   Sam S. ("not a committer to the project, just really excited 

```

about  
it") noticed the Rubinius developers are trying to raise some  
money  
through a “Pledgie drive”.

```
   > Rubinius is a next-generation virtual machine and compiler for 

```

Ruby.  
\> Based loosely on the Smalltalk-80 `Blue Book’ design, Rubinius  
will  
\> provide a rich, high-performance environment for running Ruby  
code.

```
   As this edition of the Ruby Weekly News was going out, they were 

```

over  
halfway to the target of raising US$1000, with 11 days left for  
pledges.

# User Group News

```
 * Israel.rb is brought into existence!
 --------------------------------------

   Adam F.: "I am pleased to announce that the Israeli Ruby 

```

Brigade has  
been unleashed upon an unsuspecting world." The first meeting is  
on  
April 6th.

```
 * Mountain West Ruby Conference slides, keynote?
 ------------------------------------------------

   Videos and presentation slides from the Mountain West Ruby 

```

Conference  
2007 are being assembled. DVDs will be free for those who  
attended the  
conference, available for purchase by others, and the videos will  
also  
be uploaded to Google Video.

# Threads

## Generating OOo-Calc charts with Ruby

apanloco is thinking of using Ruby to generate [OpenOffice.org](http://OpenOffice.org) Calc  
charts.  
He’s used the win32ole with Excel to do the same; can something  
similar be  
done with OpenOffice?

Avdi G.: “Since the OO document format is an XML dialect, it  
should be  
possible to generate the files directly with e.g. REXML.”

## Pulling text from elements with REXML

Paul W. writes:

require ‘rexml/document’  
include REXML  
file = File.new(“Main\_News.xml”)  
doc = Document.new(file)  
root = doc.root  
puts root.elements[“NewsItem/NewsComponent/NewsComponent[1]/…/hl1”]

This gives “Blueprint to cut emissions unveiled”, but how  
do  
you get just the text inside the node?

Peter S. says the #text method does the trick; try

root.elements[…your stuff\_here…].to\_a.each {|e| puts e.text}

A different approach is suggested by Phrogz: use REXML’s XPath  
support.

include REXML  
doc = Document.new(“helloworld”)  
p XPath.match( doc, ‘/root/kid/text()’ )  
#=\> [“hello”, “world”]

## Are comments objects?

Stephen B. IV is interested in adding a #help method to his  
objects  
for the sake of interactive use, and asks whether the comments for a  
Ruby  
class are available via reflection.

The answer, of course, is no-Ruby comments are discarded by the  
parser.  
However, Jonas P. points out that Mauricio F.'s fastri  
may  
be the next best thing to reflection, and also that irb already  
provides a  
builtin help primitive which displays the rdoc for an object or  
method.

## irb(main):001:0\> help ‘Object#object\_id’

## Object#object\_id obj. **id** =\> fixnum obj.object\_id =\> fixnum

```
  Returns an integer identifier for _obj_. The same number will be
  returned on all calls to +id+ for a given object, and no two 

```

active  
objects will share an id. +Object#object\_id+ is a different  
concept  
from the +:name+ notation, which returns the symbol id of +name+.  
Replaces the deprecated +Object#id+.

=\> nil

# Regexp and Prime numbers

ruby -wle “puts ‘Prime’ unless (‘1’ \* ARGV[0].to\_i) =~  
/^1$|^(11+?)\1+$/” 1234

The above is a Ruby translation of a wonderful trick from the Perl  
community. Credits to Neil Kandalgaonkar and Abigail for the  
originals.

Substitute 1234 with any number, and this command will tell you if  
it’s  
prime - using the regular expression engine!

(This is also a great illustration of how “regular expressions” in  
Perl,  
Ruby and others are more powerful than regular expressions in  
computational theory: Primes is a non-regular language.)

# New Releases

## oniguruma for ruby initial release

Dizan V. announces the first release of oniguruma bindings for  
Ruby  
1.8. Oniguruma, developed primarily by K.Kosako, is the regular  
expression  
engine used in Ruby 1.9.

With these new bindings, developers can “use the powerful features of  
Oniguruma (named groups, look-behinds, etc.) without the need to  
upgrado  
to Ruby 1.9 or to patch and recompile the stable version.”

## Rassmalog 3.2.0

Suraj K. made several improvements to Rassmalog, “a static blog  
engine based on RSS 2.0, YAML, and Textile”.

> It features an extensible blog formatting mechanism, easy  
> configuration,  
> and automatic tagging, archiving, syntax coloring, and table of  
> contents.

## Getopt::Declare 1.23

gga announces version 1.23 of Getopt::Declare, a library for  
commandline  
option parsing where valid options are specified in the form of  
annotated  
help texts. For example:

require “Getopt/Declare”  
args = Getopt::Declare.new(\<\<‘EOF’)

-q, --quiet quiet  
-f, --files files:if… input files  
-n, --number num:n a float number  
-i, --integer num:i an integer number

EOF

p args[‘-q’]  
p args[‘-f’]  
p args.unused

1.23 is primarily a bugfix release.

## main-0.0.1 - command line apps for the truly lazy

Ara T. Howard announces the release of main, another in his line of  
codeforpeople libraries.

main is “a class factory and dsl for generation main programs real  
quick”,  
providing a unified framework for argument processing, environment  
handling, help text, and many of the other grotty little bits you  
need to  
deal with in order to write a classy commandline utility in Ruby.

## fastthread 1.0

MenTaLguY announced fastthread 1.0, a C extension which provides  
optimized  
versions of the synchronization primitives in Ruby stdlib’s  
thread.rb,  
replacing the existing Mutex, ConditionVariable, Queue, and  
SizedQueue  
classes with its own implementation.

While the Ruby stdlib thread library was redone in 1.8.6 based on an  
earlier version of fastthread, a couple critical bugs snuck in at  
that  
time. Consequently, for those using Ruby 1.8.6, the newer version of  
the  
fastthread gem is recommended as a hotfix.

Best practice when requiring fastthread from a library is as follows:

require ‘thread’  
begin  
require ‘fastthread’  
rescue LoadError  
end

This will allow your code to work on Ruby versions where fastthread  
is  
unavailable or is simply unnecessary (e.g. under YARV or JRuby).

## daapclient 0.2.3

Aaron P. announces version 0.2.3 of daapclient, a Ruby client  
for  
the iTunes DAAP protocol. It contains log optimizations, a couple bug  
fixes, and switches the build system to hoe.

# end

We hoped you enjoyed this edition of the Ruby Weekly News.

Anyone can contribute to the next newsletter - simply visit  
[http://www.rubyweeklynews.org/newsletters/contribute/next](http://www.rubyweeklynews.org/newsletters/contribute/next) to summarise  
one or more threads from the list. Thanks!
