Show docs of constants under Ruby

This commit is contained in:
Nobuyoshi Nakada 2024-12-13 10:47:22 +09:00 committed by Nobuyoshi Nakada
parent b923a59b8e
commit 8f11d6cbe2
Notes: git 2024-12-25 10:12:52 +00:00

View File

@ -88,17 +88,18 @@ const char ruby_engine[] = "ruby";
const char *rb_dynamic_description = ruby_description; const char *rb_dynamic_description = ruby_description;
static inline void static inline void
define_ruby_const(const char *name, VALUE value, VALUE mRuby) define_ruby_const(VALUE mod, const char *name, VALUE value, bool toplevel)
{ {
if (toplevel) {
rb_define_global_const(name, value); rb_define_global_const(name, value);
if (strncmp(name, "RUBY_", rb_strlen_lit("RUBY_")) == 0) { name += rb_strlen_lit("RUBY_");
rb_define_const(mRuby, name + rb_strlen_lit("RUBY_"), value);
} }
rb_define_const(mod, name, value);
} }
/* RDoc needs rb_define_global_const */ /* RDoc needs rb_define_const */
#define rb_define_global_const(name, value) \ #define rb_define_const(mod, name, value) \
define_ruby_const(name, value, mRuby) define_ruby_const(mod, (mod == mRuby ? "RUBY_" name : name), value, (mod == mRuby))
/*! Defines platform-depended Ruby-level constants */ /*! Defines platform-depended Ruby-level constants */
void void
@ -107,6 +108,9 @@ Init_version(void)
/* /*
* The Ruby module that contains portable information among * The Ruby module that contains portable information among
* implementations. * implementations.
*
* The constants defined here are aliased in the toplevel with
* +RUBY_+ prefix.
*/ */
VALUE mRuby = rb_define_module("Ruby"); VALUE mRuby = rb_define_module("Ruby");
@ -118,37 +122,37 @@ Init_version(void)
/* /*
* The running version of ruby * The running version of ruby
*/ */
rb_define_global_const("RUBY_VERSION", /* MKSTR(version) */ version); rb_define_const(mRuby, "VERSION", /* MKSTR(version) */ version);
/* /*
* The date this ruby was released * The date this ruby was released
*/ */
rb_define_global_const("RUBY_RELEASE_DATE", MKSTR(release_date)); rb_define_const(mRuby, "RELEASE_DATE", MKSTR(release_date));
/* /*
* The platform for this ruby * The platform for this ruby
*/ */
rb_define_global_const("RUBY_PLATFORM", MKSTR(platform)); rb_define_const(mRuby, "PLATFORM", MKSTR(platform));
/* /*
* The patchlevel for this ruby. If this is a development build of ruby * The patchlevel for this ruby. If this is a development build of ruby
* the patchlevel will be -1 * the patchlevel will be -1
*/ */
rb_define_global_const("RUBY_PATCHLEVEL", MKINT(patchlevel)); rb_define_const(mRuby, "PATCHLEVEL", MKINT(patchlevel));
/* /*
* The GIT commit hash for this ruby. * The GIT commit hash for this ruby.
*/ */
rb_define_global_const("RUBY_REVISION", MKSTR(revision)); rb_define_const(mRuby, "REVISION", MKSTR(revision));
/* /*
* The copyright string for ruby * The copyright string for ruby
*/ */
rb_define_global_const("RUBY_COPYRIGHT", MKSTR(copyright)); rb_define_const(mRuby, "COPYRIGHT", MKSTR(copyright));
/* /*
* The engine or interpreter this ruby uses. * The engine or interpreter this ruby uses.
*/ */
rb_define_global_const("RUBY_ENGINE", /* MKSTR(engine) */ ruby_engine_name); rb_define_const(mRuby, "ENGINE", /* MKSTR(engine) */ ruby_engine_name);
ruby_set_script_name(ruby_engine_name); ruby_set_script_name(ruby_engine_name);
/* /*
* The version of the engine or interpreter this ruby uses. * The version of the engine or interpreter this ruby uses.
*/ */
rb_define_global_const("RUBY_ENGINE_VERSION", /* MKSTR(version) */ version); rb_define_const(mRuby, "ENGINE_VERSION", /* MKSTR(version) */ version);
rb_provide("ruby2_keywords.rb"); rb_provide("ruby2_keywords.rb");
} }
@ -227,7 +231,7 @@ define_ruby_description(const char *const jit_opt)
/* /*
* The full ruby version string, like <tt>ruby -v</tt> prints * The full ruby version string, like <tt>ruby -v</tt> prints
*/ */
rb_define_global_const("RUBY_DESCRIPTION", /* MKSTR(description) */ description); rb_define_const(mRuby, "DESCRIPTION", /* MKSTR(description) */ description);
} }
void void