Translate to ObjectSpace? (Ruby/Smalltalk)

Here’s a cool Smalltalk code snippet:

(Smalltalk allClasses
select:[:each | each category beginsWith: ‘Todo-’])
inject: 0 into: [:sum :each | sum + each linesOfCode]

It comes from a blog:

http://blog.teksol.info/2007/10/15/todoapp-on-seaside-in-218-lines

What it does is grep the Smalltalk equivalent of ObjectSpace for code
in the author’s application. It’s pretty easy to do because Smalltalk
objects have categories, and the app uses a simple convention where
everything in it is in a Todo-Xyz category.

Anyway, having grabbed each object, it then sums all the lines of code.

Is this possible in Ruby? I think you’d have to graft something onto
Object:

class Object
def lines_of_code
File.open(“directory_where_all_my_ruby_stuff_will_be/#{self.name}”).lines
end
end

Obviously this is pseudocode. Obviously it also depends on a
“convention over configuration” situation, where you can predictably
locate your files. But is it possible? Any ideas for an elegant
implementation?


Giles B.

Blog: http://gilesbowkett.blogspot.com
Portfolio: http://www.gilesgoatboy.org
Tumblelog: http://giles.tumblr.com/