From: "Wesley J. Landaker" Date: 2003-09-05T04:41:13+09:00 Subject: Re: how to get the list of all classes? Apparently, Tobias Reif recently wrote: > Hi > > I'm writing a syntax highlighting program [code] for Ruby code listings > in XML (eg DocBook) documents. > > To get the global variables I do > puts Kernel.global_variables > and to get the names of some common methods I do > puts methods > and > puts Kernel.methods > . > > How to get the names of all classes? (all built-in classes or all > available) > I need to get "File", "Hash", etc. Here is one way: $ ruby -e 'x = []; ObjectSpace.each_object { |o| x << o if o.class == Class }; p x' [UnboundMethod, Method, Binding, Proc, SystemStackError, LocalJumpError, Struct::Tms, Process::Status, Time, Dir, File::Stat, File, IO, EOFError, IOError, Range, MatchData, Regexp, RegexpError, Struct, Hash, Array, Bignum, Float, Fixnum, Integer, Numeric, FloatDomainError, ZeroDivisionError, ThreadGroup, Continuation, Thread, ThreadError, Errno::EDQUOT, Errno::EREMOTEIO, Errno::EISNAM, Errno::ENAVAIL, Errno::ENOTNAM, Errno::EUCLEAN, Errno::ESTALE, Errno::EINPROGRESS, Errno::EALREADY, Errno::EHOSTUNREACH, Errno::EHOSTDOWN, Errno::ECONNREFUSED, Errno::ETIMEDOUT, Errno::ETOOMANYREFS, Errno::ESHUTDOWN, Errno::ENOTCONN, Errno::EISCONN, Errno::ENOBUFS, Errno::ECONNRESET, Errno::ECONNABORTED, Errno::ENETRESET, Errno::ENETUNREACH, Errno::ENETDOWN, Errno::EADDRNOTAVAIL, Errno::EADDRINUSE, Errno::EAFNOSUPPORT, Errno::EPFNOSUPPORT, Errno::EOPNOTSUPP, Errno::ESOCKTNOSUPPORT, Errno::EPROTONOSUPPORT, Errno::ENOPROTOOPT, Errno::EPROTOTYPE, Errno::EMSGSIZE, Errno::EDESTADDRREQ, Errno::ENOTSOCK, Errno::EUSERS, Errno::ESTRPIPE, Errno::ERESTART, Errno::EILSEQ, Errno::ELIBEXEC, Errno::ELIBMAX, Errno::ELIBSCN, Errno::ELIBBAD, Errno::ELIBACC, Errno::EREMCHG, Errno::EBADFD, Errno::ENOTUNIQ, Errno::EOVERFLOW, Errno::EBADMSG, Errno::EDOTDOT, Errno::EMULTIHOP, Errno::EPROTO, Errno::ECOMM, Errno::ESRMNT, Errno::EADV, Errno::ENOLINK, Errno::EREMOTE, Errno::ENOPKG, Errno::ENONET, Errno::ENOSR, Errno::ETIME, Errno::ENODATA, Errno::ENOSTR, Errno::EBFONT, Errno::EBADSLT, Errno::EBADRQC, Errno::ENOANO, Errno::EXFULL, Errno::EBADR, Errno::EBADE, Errno::EL2HLT, Errno::ENOCSI, Errno::EUNATCH, Errno::ELNRNG, Errno::EL3RST, Errno::EL3HLT, Errno::EL2NSYNC, Errno::ECHRNG, Errno::EIDRM, Errno::ENOMSG, Errno::ELOOP, Errno::ENOTEMPTY, Errno::ENOSYS, Errno::ENOLCK, Errno::ENAMETOOLONG, Errno::EDEADLK, Errno::ERANGE, Errno::EDOM, Errno::EPIPE, Errno::EMLINK, Errno::EROFS, Errno::ESPIPE, Errno::ENOSPC, Errno::EFBIG, Errno::ETXTBSY, Errno::ENOTTY, Errno::EMFILE, Errno::ENFILE, Errno::EINVAL, Errno::EISDIR, Errno::ENOTDIR, Errno::ENODEV, Errno::EXDEV, Errno::EEXIST, Errno::EBUSY, Errno::ENOTBLK, Errno::EFAULT, Errno::EACCES, Errno::ENOMEM, Errno::EAGAIN, Errno::ECHILD, Errno::EBADF, Errno::ENOEXEC, Errno::E2BIG, Errno::ENXIO, Errno::EIO, Errno::EINTR, Errno::ESRCH, Errno::ENOENT, Errno::EPERM, SystemCallError, NoMemoryError, SecurityError, RuntimeError, NotImplementedError, LoadError, SyntaxError, ScriptError, NoMethodError, NameError, RangeError, IndexError, ArgumentError, TypeError, StandardError, Interrupt, SignalException, fatal, SystemExit, Exception, String, FalseClass, TrueClass, Data, Symbol, NilClass, Class, Module, Object]