summaryrefslogtreecommitdiff
path: root/tool/rdoc-srcdir
diff options
context:
space:
mode:
Diffstat (limited to 'tool/rdoc-srcdir')
-rwxr-xr-xtool/rdoc-srcdir30
1 files changed, 30 insertions, 0 deletions
diff --git a/tool/rdoc-srcdir b/tool/rdoc-srcdir
new file mode 100755
index 0000000000..ecc49b4b2c
--- /dev/null
+++ b/tool/rdoc-srcdir
@@ -0,0 +1,30 @@
+#!ruby -W0
+
+%w[tsort rdoc].each do |lib|
+ path = Dir.glob("#{File.dirname(__dir__)}/.bundle/gems/#{lib}-*").first
+ $LOAD_PATH.unshift("#{path}/lib")
+end
+require 'rdoc/rdoc'
+
+# Make only the output directory relative to the invoked directory.
+invoked = Dir.pwd
+
+# Load options and parse files from srcdir.
+Dir.chdir(File.dirname(__dir__))
+
+options = RDoc::Options.load_options
+options.title = options.title.sub(/Ruby \K.*version/) {
+ File.read("include/ruby/version.h")
+ .scan(/^ *# *define +RUBY_API_VERSION_(MAJOR|MINOR) +(\d+)/)
+ .sort # "MAJOR" < "MINOR", fortunately
+ .to_h.values.join(".")
+}
+options.parse ARGV + ["#{invoked}/rbconfig.rb"]
+
+options.singleton_class.define_method(:finish) do
+ super()
+ @op_dir = File.expand_path(@op_dir, invoked)
+end
+
+# Do not hide errors when generating documents of Ruby itself.
+RDoc::RDoc.new.document options