[#32926] Re: smallest non-zero number (and other limits) — Bil Kleb <W.L.Kleb@...>
It looks like it has been a year since I first posed
[#32935] RDoc error(?) with template file — moontoeki@... (Sung Moon)
RDoc error(?) with template file
moontoeki@aol.com (Sung Moon) writes:
[#32948] Ruby + XML Proposal — Bryan Murphy <bryan@...>
The following is a sample application that will be included with the next revision
[#32950] for the FAQ maybe — "Aidan Mark" <ahumphr@...>
I didn't see this in the FAQ but its a frequently asked newbie question.
[#32995] RDoc parsing error — TAKAHASHI Masayoshi <maki@...>
Hello,
[#33003] Variable types — David Corbin <dcorbin@...>
I know I'm new to ruby, but I feel obligated to share my dislike for
[#33034] bash-like command splitting (for regexp wizards) — Massimiliano Mirra <info@...>
I am trying to split a command line containing several commands that
On Feb 3, Massimiliano Mirra said:
[#33039] range and modification — moontoeki@... (Sung Moon)
Two things to think about.
[#33048] Terminology (was: Soap4r/Webrick question) — " JamesBritt" <james@...>
[#33065] http://www.loveruby.net/ with Netscape 4.79 — Stephan K舂per <Stephan.Kaemper@...>
Hi all,
[#33076] Mixins and accessing earlier definitions. — Hugh Sasse Staff Elec Eng <hgs@...>
Having read in the archives that super can be used to go back in the
>>>>> "H" == Hugh Sasse Staff Elec Eng <hgs@dmu.ac.uk> writes:
On Tue, 5 Feb 2002, ts wrote:
>>>>> "H" == Hugh Sasse Staff Elec Eng <hgs@dmu.ac.uk> writes:
[#33093] CVS commit emails — Martin Man <Martin.Man@...>
hi all,
Hi,
On Tue, Feb 05, 2002 at 05:00:43PM +0900, Yukihiro Matsumoto wrote:
[#33094] Ruby bug? IO.close doesn't check for error — Matt Armstrong <matt@...>
It is possible for fclose() to fail (for example, when fclose() needs
[#33096] newbie: Array element conversion — Mark Probert <probertm@...>
On Tue, 5 Feb 2002, Mark Probert wrote:
[#33128] Progress with Ruby/Tk — Peter Hickman <peter@...>
Thanks for all the help and pointers that people have given me, as you
[#33129] Ruby and Swig?? — Markus Jais <mjais@...>
hello
[#33135] some dbi questions (probably postres specific) — fastjack@... (Martin Maciaszek)
I'm playing around with dbi and postgres. After a while two problems remained
[#33174] generating Ruby libs from XML Schemas — Tobias Reif <tobiasreif@...>
Hi,
[#33200] Regexp::Parser ported to Ruby...? — "Jeff 'japhy' Pinyan" <jeffp@...>
I'm writing a Perl module for the parsing and handling of regexes. It's
This would be very interesting and a way to play with RegExp's in Ruby in
[#33238] mkmf, extconf.rb — Hugh Sasse Staff Elec Eng <hgs@...>
Further to my suggestions in Ruby-Talk:31391, about adding methods to
Hi,
On Thu, 7 Feb 2002 nobu.nokada@softhome.net wrote:
[#33242] favicon.ico — Dave Thomas <Dave@...>
On Thu, 7 Feb 2002, I wrote:
Thomas Hurst wrote:
[#33281] MYSql on Windows - help! — Dave Thomas <Dave@...>
[#33286] returning multiple values from a method — ptkwt@...1.aracnet.com (Phil Tomson)
irb(main):001:0> def foo; return 1,2,3; end
[#33292] shuffle (all possible sequences) — Tobias Reif <tobiasreif@...>
Hi,
[#33309] XML::SAX2 critique — msergeant@... (Matt Sergeant)
This isn't exactly a critique of XML::SAX2 per-se, but more of the
[#33321] ruby and vim — fastjack@... (Martin Maciaszek)
To edit my ruby code I rediscovered the good old vim. vim6 even has
[#33324] Class variable bug — "Chr. Rippel" <chr_news@...>
It seems that the following class variable bug feel through the
Hi,
[#33344] Adding rockit power to Rdoc? — Bil Kleb <W.L.Kleb@...>
While researching the feasibility of teaching Rdoc to
[#33356] SMTP and attachments — Steve Tuckner <STUCKNER@...>
Does anyone know how to send an e-mail with attachments using net/smtp?
[#33381] Latest CVS/Win32 build error — "Bob Calco" <robert.calco@...>
Anyone:
[#33382] FXRuby: how to create a static status line? — Jos Backus <josb@...>
I'm trying to create a status line at the bottom of the application window
[#33396] Setting the Ruby — "Aidan Mark" <ahumphr@...>
Around 1994 I was writing a book on Perl. I mentioned this to an old timer.
[#33419] Re: NT Service — "Marty Alchin" <gulopine@...>
>I used FireDaemon some years back and it worked so well that if you
[#33421] iowa segfault — Paul Brannan <paul@...>
I know there used to be a mailing list for iowa, but listbot seems to be
[#33423] Need help with ruby-gimp please — Jim Freeze <jfreeze@...>
Hi:
[#33435] Reg: tiny contest: who's faster? (add_a_gram) — grady@... (Steven Grady)
> My current solution works correctly with various inputs.
grady@xcf.berkeley.edu (Steven Grady) writes:
[#33462] Google programming contest.... — "Mikkel Bruun" <lists@...>
Im a little amazed that this hasn't been brought up yet...
[#33470] 'is a quine' is a quine — Thomas Hurst <tom.hurst@...>
In case anyone's bored, how about another of those nice challanges?
[#33499] SourceForge Foundry for Ruby ? — Richard Harlos <quadzero@...>
Hi, folks. I'm interested to know if any of you would support the
[#33500] Ruby Embedded Documentation — William Djaja Tjokroaminata <billtj@...>
Hi,
> Now, I am using Ruby on Linux, and I have downloaded Ruby version
>>>>> "L" == Lyle Johnson <ljohnson@resgen.com> writes:
In message "Re: Ruby Embedded Documentation"
[#33518] Ruby interpreter's stability (hosting companies etc.) — Tobias Reif <tobiasreif@...>
Hi,
[#33535] Class variable madness — stern@... (Alan Stern)
Can someone tell me what's going on here? Or has this already been fixed?
[#33556] ByteCodeRuby 0.1.0 — "triptych" <triptych@...>
The latest version of ByteCodeRuby is now available from the RubyVM project
[#33560] syntax across languages — Pixel <pixel@...>
http://merd.net/pixel/language-study/syntax-across-languages.html
[#33570] array diff — Tobias Reif <tobiasreif@...>
Hi,
[#33607] Ruby browser similar to Smalltalk browsers? — John Clarke <clarkej@...>
Hi,
[#33615] Name resolution in Ruby — stern@... (Alan Stern)
I've been struggling to understand how name resolution is supposed to
[#33617] choice of HTML templating system — Paul Brannan <paul@...>
I am not a web developer, nor do I pretend to be one.
[#33619] make first letter lowercase — sebi@... (sebi)
hello,
sebi wrote:
On Feb 11, Tobias Reif said:
[#33630] Help with i18n and RDoc, please.... — Dave Thomas <Dave@...>
[#33672] rubycentral.com down? — J Anthony <jeremy@...>
pardon me if this is the wrong place to ask, but what's up with
[#33695] Ruby/Tk reference — Nemesis@... (Nemesis)
Hi everyone, I'm searching for a free ruby/tk reference (I've found one
[#33702] eruby + apache and charset — Yuri Leikind <YuriLeikind@...>
Hello all,
[#33711] Ruby Developer's Guide has arrived :-) — David Alan Black <dblack@...>
Hi --
[#33712] Ruby performance on the Language Shootout — ptkwt@...1.aracnet.com (Phil Tomson)
I haven't taken a look at the Great Computer Language Shootout page for
[#33715] Possible bug -- ruby cvs (1.7.2 2002-02-10) interpreter seg fault — Matt Armstrong <matt@...>
If I run this script
[#33731] simple XML parsing (greedy / non-greedy — Ron Jeffries <ronjeffries@...>
Suppose I had this text
[#33743] qualms about respond_to? idiom — David Alan Black <dblack@...>
Hi --
David Alan Black <dblack@candle.superlink.net> writes:
Hi --
David Alan Black <dblack@candle.superlink.net> writes:
Paul Brannan <paul@atdesk.com> writes:
[#33761] (CSV) text file processing... — bobx@... (Bob)
I am looking for an example of (csv)text file processing. What I am
[#33848] "Powered by Ruby" banner — Yuri Leikind <YuriLeikind@...>
Hello Ruby folks,
On Thu, 14 Feb 2002, Yuri Leikind wrote:
A modest submission:
Kent Dahl wrote:
On 2/15/02 5:54 AM, "yet another bill smith" <bigbill.smith@verizon.net>
i just don't understand why it didn't show up! dhtml/javascript, ok, but a
On 2/15/02 7:16 AM, "Jack Dempsey" <dempsejn@georgetown.edu> wrote:
Chris Gehlker wrote:
In message <3c6e5e01_1@spamkiller.newsgroups.com>,
* Rob Partington (rjp@browser.org) wrote:
Thomas Hurst wrote:
In message <20020216140007.GB75585@voi.aagh.net>,
* Rob Partington (rjp@browser.org) wrote:
Thomas Hurst wrote:
In article <3C6CFCCA.5AD5CA67@scnsoft.com>, Yuri Leikind wrote:
On Fri, 15 Feb 2002, Martin Maciaszek wrote:
On 2/15/02 10:59 AM, "Leon Torres" <leon@ugcs.caltech.edu> wrote:
hello ppl,
[#33851] Ruby and .NET — Patrik Sundberg <ps@...>
I have been reading a bit about .NET for the last couple of days and must say
Erik B虍fors wrote:
Hi,
On Thu, Feb 14, 2002 at 10:22:31PM +0900, Stephan J. Schmidt wrote:
On Thu, 2002-02-14 at 14:27, Patrik Sundberg wrote:
Javier Fontan wrote:
Sean Middleditch wrote:
[#33885] File.open weirdness — "Craig Files" <craig_files@...>
Hi,
[#33899] building ruby — Mark Probert <probertm@...>
[#33915] Keyword arguments (Was: File.open weirdness) — Martin Man <Martin.Man@...>
On Fri, Feb 15, 2002 at 04:59:23AM +0900, Craig Files wrote:
[#33923] SWIG/Ruby woes with g++ 3.0 — Luigi Ballabio <ballabio@...>
> I just found a problem with generated SWIG code and g++ 3.0.3 which
Lyle,
> I don't think that this is fixed yet. (I attempted to email
[#33943] CGI::Session problems — dmcnulty@... (Dan McNulty)
Argh!
[#34013] hash as key in hash — Albert Wagner <alwagner@...>
I don't understand why this doesn't work. Can anyone help?
[#34024] Compiled companion language for Ruby? — Erik Terpstra <erik@...>
Hmmm, seems that my previous post was in a different thread, I'll try
[#34030] LocalJumpError when defining each — Matt Kussow <junk@...>
The following script seems to work with ruby version 1.6.5, but not with 1.6.6.
Hello --
[#34036] The GUI Returns — "Horacio Lopez" <vruz@...>
Hello all,
[#34037] dump/load a class that has C and Ruby data — Joel VanderWerf <vjoel@...>
[#34048] Formatting — David Corbin <dcorbin@...>
In C, people use printf to format data nicely for display. In Java,
[#34053] OOP overhead (Was: tiny contest...) — Albert Wagner <alwagner@...>
I got stuck in a tar baby re: the tiny contest proposed by Tobias. I was
Richard Harlos wrote:
On 2/17/02 3:45 PM, "Sean Russell" <ser@germane-software.com> wrote:
[#34077] Problems with Ruby in C — Joakim Andersson <tyrak@...>
Hi,
[#34099] net/http or webfetcher with pasworded urls — Ron Jeffries <ronjeffries@...>
Hi, some help please ...
[#34107] x =~ /pat/, "return type?" — David Corbin <dcorbin@...>
When I say:
[#34131] alias danger — Joel VanderWerf <vjoel@...>
[#34162] Epic4/Ruby — Thomas Hurst <tom.hurst@...>
Rejoice, for you no longer have to put up with that evil excuse for a
On Tue, Feb 19, 2002 at 01:31:01AM +0900, Thomas Hurst wrote:
Hi,
In article <1014312459.984378.27488.nullmailer@ev.netlab.jp>,
[#34179] expect.rb vs Expect (Tcl)... — Hugh Sasse Staff Elec Eng <hgs@...>
I have had a look at the expect.rb in the 1.6 library.
[#34183] Rinn and Perl CORBA::ORBit — Selander@...
Good evening,
On Tue, Feb 19, 2002 at 04:57:43AM +0900, Selander@thomases.com wrote:
[#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
[#34189] FalseClass / TrueClass singleton methods? — Brad Hilton <bhilton@...>
Hello,
"Brad Hilton" <bhilton@vpop.net> wrote in
[#34217] Ruby for web development — beripome@... (Billy)
Hi all,
Hey!
[#34228] RE: Ruby, PickAxe, FreeRIDE mentioned on BYTE magazine — "Curt Hibbs" <curt@...>
Horacio Lopez wrote:
[#34284] advice on dispatch tables — Mark Probert <probertm@...>
[#34294] Java JNI and Ruby — "Rich Kilmer" <rich@...>
I know about the JRuby project, but has anyone looked in to just embedding
[#34304] strings embedded inside strings — Paul Brannan <paul@...>
I've seen this on the ML before, but searching the ruby-talk archives I
[#34315] eRuby and require — beripome@... (Billy)
Hi all,
[#34329] ruby booting? — Chris Moore <kurisu@...>
This is gonna sound crazy but how hard would it be to make ruby boot as
[#34335] patch to allow dump/load to work on DATA objects — Joel VanderWerf <vjoel@...>
[#34350] FAQ for comp.lang.ruby — "Hal E. Fulton" <hal9000@...>
RUBY NEWSGROUP FAQ -- Welcome to comp.lang.ruby! (Revised 2001-2-18)
> Ruby selectively integrates many good ideas taken from Perl,
Hi,
matz@ruby-lang.org (Yukihiro Matsumoto) writes:
[#34361] REBOL vs Ruby — beripome@... (Billy)
Hi all,
Hi,
[#34375] Setting the Ruby continued — <jostein.berntsen@...>
Hi,
Also VERY important:
Hello,
Ok, I can't take part in developing ruby not becouse of the language
-----BEGIN PGP SIGNED MESSAGE-----
[#34379] including files in eruby — Martin Maciaszek <mmaciaszek@...>
I'm using eruby on some of my web pages. Now they became big and
[#34405] Now I'm really confused! — Chris Gehlker <gehlker@...>
I'm still struggling with producing RubyStudio. The following example
[#34412] dang it, CGI::Session is broken again — dmcnulty@... (Dan McNulty)
What is wrong with this? I swear this was working yesterday, but now
[#34446] eRuby and erb — moontoeki@... (Sung Moon)
I would like to use either of eRuby or erb for my web design.
[#34457] Help with blocks? — "Pattern-chaser" <patternChaser@...>
I'm trying to learn Ruby; just started. I like what I've understood
[#34467] recursive require — Ron Jeffries <ronjeffries@...>
I'm having a really odd thing happen with two files that mutually
[#34489] IPSocket.getaddress and signals — Joseph McDonald <joe@...>
[#34503] special characters — Tobias Reif <tobiasreif@...>
Hi all,
Urban Hafner wrote:
[#34515] Rubicon Failure — Urban Hafner <ruby-lists@...>
Hey hey,
[#34517] Windows Installer Ruby 166-0 available — Andrew Hunt <andy@...>
[#34554] dispatching and class references — Mark Probert <probertm@...>
On Sat, Feb 23, 2002 at 04:19:19AM +0900, Mark Probert wrote:
[#34566] Ruby's Future — Paulo Schreiner <paulo@...>
Hello, folks, what are the plans for the future of ruby? What new
Speaking of which, I remember and argument I brought up (and some of
Hi,
[#34597] rdoc/xml questions — Dave Thomas <Dave@...>
> From: dave@thomases.com [mailto:dave@thomases.com]On Behalf Of Dave
james@rubyxml.com writes:
james@rubyxml.com wrote:
[#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
"Sean O'Dell" <sean@celsoft.com> writes:
On 2/23/02 5:15 PM, "Dave Thomas" <Dave@PragmaticProgrammer.com> wrote:
"Sean Middleditch" <elanthis@awesomeplay.com> wrote in message > On Sat,
On Sun, 2002-02-24 at 04:22, Sean O'Dell wrote:
[#34661] Re: Newbie question — "roktas" <roktas@...>
Hi,
Hello --
Hi!
[#34682] duplicate method name — Ron Jeffries <ronjeffries@...>
I just found a case in a test file where i had two tests of the same
Hi Ron.
[#34732] Hash.each block parameters — "Sean O'Dell" <sean@...>
I ran into a problem where I should have called .each_key for a hash, but I
[#34735] TestUnit 0.1.1 — <nathaniel@...>
From the README:
[#34748] Assignment Rules — "Sean O'Dell" <sean@...>
I'm trying to get in my head what the rules about assignment are. So far
[#34750] inconsistence in class complex — juergen.katins@... (Juergen Katins)
While translating the book "Programming Ruby" by Dave Thomas and
[#34753] 9 years with Ruby — matz@... (Yukihiro Matsumoto)
Hi,
[#34762] Directory copy recursively — kwatch@... (kwatch)
Hi,
[#34777] CONFIG['(site|ruby)libdir'] policies? — Massimiliano Mirra <list@...>
On my system (Debian Linux), Config::CONFIG['sitelibdir'] and
Massimiliano Mirra <list@chromatic-harp.com> writes:
[#34778] Re: Windows Installer Ruby 166-0 available — Andrew Hunt <andy@...>
Alexander writes:
[#34780] RCR 65: IO orthogonalization, improved reusability — "Thomas Sdergaard" <tsondergaard@...>
I hope I'm not violating the rubiqette by cross-posting this from
"Thomas Sdergaard" <tsondergaard@speakanet.com> writes:
[#34791] Style Question — Ron Jeffries <ronjeffries@...>
So I'm building this set theory library. The "only" object is supposed
[#34823] Can't get stderr to flush — Chris Gehlker <gehlker@...>
[#34835] Standard preambles and prompting on standard error? — Chris Gehlker <gehlker@...>
I've been testing RubyStudio against the sample programs that come with
[#34857] TestUnit 0.1.3 — <nathaniel@...>
From the README:
[#34896] New OS for Old Mac — Chris Gehlker <gehlker@...>
I have an old Mac 6400 that I want to use as a server. Ruby for the old Mac
[#34905] Rescue Clause — "Sean O'Dell" <sean@...>
Where all can you put rescue clauses? Are these correct:
[#34912] RCR?: parallel to until: as_soon_as — Tobias Reif <tobiasreif@...>
Hi,
Hi --
[#34920] RE: Kernel.system incongurity - Windows98 — "Morris, Chris" <chris.morris@...>
[#34941] rpkg 0.3 pre-release and beta testers — Massimiliano Mirra <list@...>
I've just uploaded rpkg 0.3 to www.allruby.com/rpkg/rpkg-0.3.tar.gz
[#34961] RE: RCR 65: IO orthogonalization, improved reusability — =?Windows-1252?Q?Thomas_S=F8ndergaard?= <tsondergaard@...>
"Thomas Sdergaard" <tsondergaard@speakanet.com> wrote in message
[#34971] RDoc and XML - opinions please — Dave Thomas <Dave@...>
[#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*
Hi,
On Thu, 28 Feb 2002 05:21:24 GMT, Chris Gehlker <gehlker@fastq.com> wrote:
[#34998] Matrix class in Ruby — jasa <jasa@...>
Hi,
[#35008] RDoc with XML — Dave Thomas <Dave@...>
[#35015] Time Comparison — "Sean O'Dell" <sean@...>
I am using the time object to compare times between two files and I'm
Hi
Re: Name resolution in Ruby
"Alan Stern" <stern@rowland.org> wrote in,
....
> This is currently under discussion in a separate thread. I think a
> consensus is growing that class variables really ought to behave more
> like instance variables of the class itself, with appropriate accessor
> methods.
I wrote something to this affect but this was not quite what I mend.
The current class variable behavior is really very usefull but it is
possible to simulate this behavior with instance and/or local variables
and accessor methods. This has the added advantage of a more fine
tuned control of visibility (and no interpretation headaches). Here is
an example of a public ``class attribute" with a protected writer attribute
that is invisible on the meta level
----
class A
var = "a"
define_method(:var) { var }
protected
define_method(:var=) {|x| var = x }
end
p A.new.var # => "a"
class B < A
def initialize(x)
self.var = x
end
end
B.new(3)
p A.new.var # => 3
class << A
var # raises a NameError exception
end
----
Since we already have an implementation of class variables there is
no point to get rid(t?)e of them (they are definitely faster;-).
However it is at least a theoretical possibility to for go their
implementation in a rewrite like Rite.
>
....
> > a class is just an object like any other objects.
>
> While largely true, that's not entirely correct. Ordinary objects and
> classes differ in the way their metaclasses are created. For
> instance, suppose that x is an ordinary object (not a class) and that
> C is a class. Then C always has a metaclass -- it is created at the
> same time as C (I think) -- but x only has a metaclass if you create
> one explicitly. Also, if C is a subclass of B, then Meta-C is a
> subclass of Meta-B. This means that, although Meta-x's superclass is
> x's original class, Meta-C's superclass is not C's original class but
> instead is C's superclass's metaclass.
This is true but this is not relevant for scoping rules, in fact it is possbile
to define constants on the meta class level or more generally singleton
classes. I appended a script illustrating the Meta-class system (note the use
of class variables;-)
....
> > A> The overall effect is that constants behave as though they really do
> > A> have a static scope.
> >
> > This is the intented use, I think.
Local scope is an illusion created by coding convention on top of Ruby's
static scope - but you can always should yourself in the foot;-)
----
A = Class.new
x = Class.new A
Sub = Class.new x
Sub.const_set :Super ,x
p Sub.ancestors # => [Sub, Sub::Super, A, Object, Kernel]
class Sub
class Super
p Module.nesting # => [Sub::Super, Sub]
end
end
Normal = x
class Normal
# prevent creation of Sub::Super::Sub
Sub = ::Sub
class Sub
p Module.nesting # => [Sub, Sub::Super]
end
end
class A
L = "A"
end
class Sub
L = "Sub"
class Super
K = 1
p L # => "Sub"
end
remove_const :L
p K # => 1
class Super
p L # => "B"
end
end
class Binding
def search_path
nest = eval("Module.nesting",self)
__self =eval("self",self)
if __self.is_a? Module
nest.concat __self.ancestors.select {|m| not nest.include? m}
else
nest.concat __self.type.ancestors.select {|m| not nest.include? m}
end
end
end
class Sub
class Super
p binding.search_path
# => [Sub::Super, Sub, A, Object, Kernel]
end
end
# Search path is not transitive!
class A;
F = "A"
end
class B < A; end
class C < B; end
class C
G = "visible in C::Z"
p Module.constants - Object.constants
# => ["F", "L"]
class X; end
class Y < X;end
class Z < Y
p Module.constants - Object.constants
# => ["G", "Z", "X", "Y"]
p binding.search_path
# => [C::Z, C, C::Y, C::X, Object, Kernel]
end
end
----
/Christoph
----
# A meta class illustrations script
class Class
@@to_s = nil
@@level = nil
attr_reader :inst
def superclasses
res = [self]
tmp = self
res.push tmp while tmp = tmp.superclass
return res
end
def each_superclass
klass = self
yield klass
yield klass while klass = klass.superclass
self
end
def level
@level || 0
end
def singleton?; true end
alias :old_to_s :to_s
private :old_to_s
def to_s
if singleton?
if level.zero?
(old_to_s.sub(/^(#<Class:)/){''})\
.sub(/(>)$/){"_Sing(#{inst})"}
else
@to_s
end
else
old_to_s
end
end
alias :inspect :to_s
protected
def __meta
super
@@to_s = to_s.concat '_Meta'
@@level = level + 1
@meta.instance_eval do
@to_s = @@to_s
@level = @@level
end
superclass.__meta if superclass
if level.nonzero?
def self.__meta; @meta end
end
return @meta
end
end
class Object
@@inst = nil
class << self
def singleton?; false end
undef :inst
end
def meta(level = 1)
return self if level.zero?
return __meta.meta(level-1)
end
def singleton_type
class << self; self end
end
protected
def __meta
@meta = singleton_type
@@inst = self
@meta.instance_eval do
@inst = @@inst
end
@meta
end
end
class A; end
class B < A; end
class C < B
def initialize num
@num = num
end
def inspect; @num.inspect end
alias :to_s :inspect
end
def class_chain klass
unless klass.level.zero? && klass.singleton?
puts klass.superclasses.join(" < ")
else
res = klass.superclasses
puts res.shift.to_s.concat(" << ").concat(res.join(" < "))
end
end
# Examples
class_chain C.meta
class_chain Class.meta
class_chain C.new({}).meta
class_chain Math::E.meta
puts "\n\"Higher\" order\n\n"
class_chain Object.meta(2)
class_chain C.meta(2)
class_chain Math::PI.meta(2)
class_chain Module.meta(3)
class_chain C.meta(3)
n = 0
ObjectSpace.each_object(Class) do |klass| klass
n+=1 if klass.singleton?
end
puts "\nNumber of Singletons controlled by GC == #{n}"
----
C_Meta < B_Meta < A_Meta < Object_Meta < Class < Module < Object
Class_Meta < Module_Meta < Object_Meta < Class < Module < Object
C_Sing({}) << C < B < A < Object
Float_Sing(2.718281828) << Float < Numeric < Object
"Higher" order
Object_Meta_Meta < Class < Module < Object
C_Meta_Meta < Class < Module < Object
Float_Sing(3.141592654)_Meta < Class < Module < Object
Module_Meta_Meta_Meta < Class < Module < Object
C_Meta_Meta_Meta < Class < Module < Object
Number of Singletons controlled by GC == 0
----