summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorUlysse Buonomo <buonomo.ulysse@gmail.com>2022-02-10 03:31:06 +0100
committerNobuyoshi Nakada <nobu@ruby-lang.org>2022-02-12 15:06:06 +0900
commit5348a34504a67597e3a3ed98a3020dfd762241ad (patch)
tree7f9f69344798fa039d3f382974f92d26f3369aa3 /lib
parent08137c5dd99354225874abc95280188738030794 (diff)
[ruby/rdoc] Relative loading for easier development (https://github.com/ruby/rdoc/pull/821)
This patch makes sure we only load relative code. Hence when coding or testing rdoc, we'll be sure to always be using the correct code. Discussion started at https://github.com/ruby/rdoc/pull/817. Signed-off-by: Ulysse Buonomo <buonomo.ulysse@gmail.com> https://github.com/ruby/rdoc/commit/aa41bd48eb Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/rdoc.rb92
-rw-r--r--lib/rdoc/code_objects.rb3
-rw-r--r--lib/rdoc/context.rb2
-rw-r--r--lib/rdoc/generator.rb10
-rw-r--r--lib/rdoc/i18n.rb2
-rw-r--r--lib/rdoc/markdown.rb40
-rw-r--r--lib/rdoc/markup.rb67
-rw-r--r--lib/rdoc/parser.rb4
-rw-r--r--lib/rdoc/rd.rb7
-rw-r--r--lib/rdoc/rdoc.rb2
-rw-r--r--lib/rdoc/ri.rb9
-rw-r--r--lib/rdoc/ri/driver.rb2
-rw-r--r--lib/rdoc/rubygems_hook.rb2
-rw-r--r--lib/rdoc/servlet.rb2
-rw-r--r--lib/rdoc/stats.rb7
-rw-r--r--lib/rdoc/task.rb2
-rw-r--r--lib/rdoc/version.rb2
17 files changed, 134 insertions, 121 deletions
diff --git a/lib/rdoc.rb b/lib/rdoc.rb
index 2d3f8c1122..b62c22576d 100644
--- a/lib/rdoc.rb
+++ b/lib/rdoc.rb
@@ -62,7 +62,7 @@ module RDoc
class Error < RuntimeError; end
- require 'rdoc/version'
+ require_relative 'rdoc/version'
##
# Method visibilities
@@ -141,61 +141,61 @@ module RDoc
end
end
- autoload :RDoc, 'rdoc/rdoc'
+ autoload :RDoc, "#{__dir__}/rdoc/rdoc"
- autoload :CrossReference, 'rdoc/cross_reference'
- autoload :ERBIO, 'rdoc/erbio'
- autoload :ERBPartial, 'rdoc/erb_partial'
- autoload :Encoding, 'rdoc/encoding'
- autoload :Generator, 'rdoc/generator'
- autoload :Options, 'rdoc/options'
- autoload :Parser, 'rdoc/parser'
- autoload :Servlet, 'rdoc/servlet'
- autoload :RI, 'rdoc/ri'
- autoload :Stats, 'rdoc/stats'
- autoload :Store, 'rdoc/store'
- autoload :Task, 'rdoc/task'
- autoload :Text, 'rdoc/text'
+ autoload :CrossReference, "#{__dir__}/rdoc/cross_reference"
+ autoload :ERBIO, "#{__dir__}/rdoc/erbio"
+ autoload :ERBPartial, "#{__dir__}/rdoc/erb_partial"
+ autoload :Encoding, "#{__dir__}/rdoc/encoding"
+ autoload :Generator, "#{__dir__}/rdoc/generator"
+ autoload :Options, "#{__dir__}/rdoc/options"
+ autoload :Parser, "#{__dir__}/rdoc/parser"
+ autoload :Servlet, "#{__dir__}/rdoc/servlet"
+ autoload :RI, "#{__dir__}/rdoc/ri"
+ autoload :Stats, "#{__dir__}/rdoc/stats"
+ autoload :Store, "#{__dir__}/rdoc/store"
+ autoload :Task, "#{__dir__}/rdoc/task"
+ autoload :Text, "#{__dir__}/rdoc/text"
- autoload :Markdown, 'rdoc/markdown'
- autoload :Markup, 'rdoc/markup'
- autoload :RD, 'rdoc/rd'
- autoload :TomDoc, 'rdoc/tom_doc'
+ autoload :Markdown, "#{__dir__}/rdoc/markdown"
+ autoload :Markup, "#{__dir__}/rdoc/markup"
+ autoload :RD, "#{__dir__}/rdoc/rd"
+ autoload :TomDoc, "#{__dir__}/rdoc/tom_doc"
- autoload :KNOWN_CLASSES, 'rdoc/known_classes'
+ autoload :KNOWN_CLASSES, "#{__dir__}/rdoc/known_classes"
- autoload :TokenStream, 'rdoc/token_stream'
+ autoload :TokenStream, "#{__dir__}/rdoc/token_stream"
- autoload :Comment, 'rdoc/comment'
+ autoload :Comment, "#{__dir__}/rdoc/comment"
- require 'rdoc/i18n'
+ require_relative 'rdoc/i18n'
# code objects
#
# We represent the various high-level code constructs that appear in Ruby
# programs: classes, modules, methods, and so on.
- autoload :CodeObject, 'rdoc/code_object'
-
- autoload :Context, 'rdoc/context'
- autoload :TopLevel, 'rdoc/top_level'
-
- autoload :AnonClass, 'rdoc/anon_class'
- autoload :ClassModule, 'rdoc/class_module'
- autoload :NormalClass, 'rdoc/normal_class'
- autoload :NormalModule, 'rdoc/normal_module'
- autoload :SingleClass, 'rdoc/single_class'
-
- autoload :Alias, 'rdoc/alias'
- autoload :AnyMethod, 'rdoc/any_method'
- autoload :MethodAttr, 'rdoc/method_attr'
- autoload :GhostMethod, 'rdoc/ghost_method'
- autoload :MetaMethod, 'rdoc/meta_method'
- autoload :Attr, 'rdoc/attr'
-
- autoload :Constant, 'rdoc/constant'
- autoload :Mixin, 'rdoc/mixin'
- autoload :Include, 'rdoc/include'
- autoload :Extend, 'rdoc/extend'
- autoload :Require, 'rdoc/require'
+ autoload :CodeObject, "#{__dir__}/rdoc/code_object"
+
+ autoload :Context, "#{__dir__}/rdoc/context"
+ autoload :TopLevel, "#{__dir__}/rdoc/top_level"
+
+ autoload :AnonClass, "#{__dir__}/rdoc/anon_class"
+ autoload :ClassModule, "#{__dir__}/rdoc/class_module"
+ autoload :NormalClass, "#{__dir__}/rdoc/normal_class"
+ autoload :NormalModule, "#{__dir__}/rdoc/normal_module"
+ autoload :SingleClass, "#{__dir__}/rdoc/single_class"
+
+ autoload :Alias, "#{__dir__}/rdoc/alias"
+ autoload :AnyMethod, "#{__dir__}/rdoc/any_method"
+ autoload :MethodAttr, "#{__dir__}/rdoc/method_attr"
+ autoload :GhostMethod, "#{__dir__}/rdoc/ghost_method"
+ autoload :MetaMethod, "#{__dir__}/rdoc/meta_method"
+ autoload :Attr, "#{__dir__}/rdoc/attr"
+
+ autoload :Constant, "#{__dir__}/rdoc/constant"
+ autoload :Mixin, "#{__dir__}/rdoc/mixin"
+ autoload :Include, "#{__dir__}/rdoc/include"
+ autoload :Extend, "#{__dir__}/rdoc/extend"
+ autoload :Require, "#{__dir__}/rdoc/require"
end
diff --git a/lib/rdoc/code_objects.rb b/lib/rdoc/code_objects.rb
index 434a25ac7f..d5f2f920ad 100644
--- a/lib/rdoc/code_objects.rb
+++ b/lib/rdoc/code_objects.rb
@@ -2,5 +2,4 @@
# This file was used to load all the RDoc::CodeObject subclasses at once. Now
# autoload handles this.
-require 'rdoc'
-
+require_relative '../rdoc'
diff --git a/lib/rdoc/context.rb b/lib/rdoc/context.rb
index b3caa53aa1..8e15697034 100644
--- a/lib/rdoc/context.rb
+++ b/lib/rdoc/context.rb
@@ -1261,6 +1261,6 @@ class RDoc::Context < RDoc::CodeObject
klass
end
- autoload :Section, 'rdoc/context/section'
+ autoload :Section, "#{__dir__}/context/section"
end
diff --git a/lib/rdoc/generator.rb b/lib/rdoc/generator.rb
index 340dcbf7ae..a769cf8ac0 100644
--- a/lib/rdoc/generator.rb
+++ b/lib/rdoc/generator.rb
@@ -41,11 +41,11 @@
module RDoc::Generator
- autoload :Markup, 'rdoc/generator/markup'
+ autoload :Markup, "#{__dir__}/generator/markup"
- autoload :Darkfish, 'rdoc/generator/darkfish'
- autoload :JsonIndex, 'rdoc/generator/json_index'
- autoload :RI, 'rdoc/generator/ri'
- autoload :POT, 'rdoc/generator/pot'
+ autoload :Darkfish, "#{__dir__}/generator/darkfish"
+ autoload :JsonIndex, "#{__dir__}/generator/json_index"
+ autoload :RI, "#{__dir__}/generator/ri"
+ autoload :POT, "#{__dir__}/generator/pot"
end
diff --git a/lib/rdoc/i18n.rb b/lib/rdoc/i18n.rb
index a32fd848a0..f209a9a6f6 100644
--- a/lib/rdoc/i18n.rb
+++ b/lib/rdoc/i18n.rb
@@ -4,7 +4,7 @@
module RDoc::I18n
- autoload :Locale, 'rdoc/i18n/locale'
+ autoload :Locale, "#{__dir__}/i18n/locale"
require_relative 'i18n/text'
end
diff --git a/lib/rdoc/markdown.rb b/lib/rdoc/markdown.rb
index c10ad2fb14..25a7217d3c 100644
--- a/lib/rdoc/markdown.rb
+++ b/lib/rdoc/markdown.rb
@@ -199,6 +199,7 @@ class RDoc::Markdown
@result = nil
@failed_rule = nil
@failing_rule_offset = -1
+ @line_offsets = nil
setup_foreign_grammar
end
@@ -215,17 +216,32 @@ class RDoc::Markdown
target + 1
end
- def current_line(target=pos)
- cur_offset = 0
- cur_line = 0
+ if [].respond_to? :bsearch_index
+ def current_line(target=pos)
+ unless @line_offsets
+ @line_offsets = []
+ total = 0
+ string.each_line do |line|
+ total += line.size
+ @line_offsets << total
+ end
+ end
- string.each_line do |line|
- cur_line += 1
- cur_offset += line.size
- return cur_line if cur_offset >= target
+ @line_offsets.bsearch_index {|x| x >= target } + 1 || -1
end
+ else
+ def current_line(target=pos)
+ cur_offset = 0
+ cur_line = 0
+
+ string.each_line do |line|
+ cur_line += 1
+ cur_offset += line.size
+ return cur_line if cur_offset >= target
+ end
- -1
+ -1
+ end
end
def lines
@@ -533,11 +549,11 @@ class RDoc::Markdown
- require 'rdoc'
- require 'rdoc/markup/to_joined_paragraph'
- require 'rdoc/markdown/entities'
+ require_relative '../rdoc'
+ require_relative 'markup/to_joined_paragraph'
+ require_relative 'markdown/entities'
- require 'rdoc/markdown/literals'
+ require_relative 'markdown/literals'
##
# Supported extensions
diff --git a/lib/rdoc/markup.rb b/lib/rdoc/markup.rb
index 92aed757cf..804d24fd2f 100644
--- a/lib/rdoc/markup.rb
+++ b/lib/rdoc/markup.rb
@@ -822,46 +822,45 @@ https://github.com/ruby/rdoc/issues
document.accept formatter
end
- autoload :Parser, 'rdoc/markup/parser'
- autoload :PreProcess, 'rdoc/markup/pre_process'
+ autoload :Parser, "#{__dir__}/markup/parser"
+ autoload :PreProcess, "#{__dir__}/markup/pre_process"
# Inline markup classes
- autoload :AttrChanger, 'rdoc/markup/attr_changer'
- autoload :AttrSpan, 'rdoc/markup/attr_span'
- autoload :Attributes, 'rdoc/markup/attributes'
- autoload :AttributeManager, 'rdoc/markup/attribute_manager'
- autoload :RegexpHandling, 'rdoc/markup/regexp_handling'
+ autoload :AttrChanger, "#{__dir__}/markup/attr_changer"
+ autoload :AttrSpan, "#{__dir__}/markup/attr_span"
+ autoload :Attributes, "#{__dir__}/markup/attributes"
+ autoload :AttributeManager, "#{__dir__}/markup/attribute_manager"
+ autoload :RegexpHandling, "#{__dir__}/markup/regexp_handling"
# RDoc::Markup AST
- autoload :BlankLine, 'rdoc/markup/blank_line'
- autoload :BlockQuote, 'rdoc/markup/block_quote'
- autoload :Document, 'rdoc/markup/document'
- autoload :HardBreak, 'rdoc/markup/hard_break'
- autoload :Heading, 'rdoc/markup/heading'
- autoload :Include, 'rdoc/markup/include'
- autoload :IndentedParagraph, 'rdoc/markup/indented_paragraph'
- autoload :List, 'rdoc/markup/list'
- autoload :ListItem, 'rdoc/markup/list_item'
- autoload :Paragraph, 'rdoc/markup/paragraph'
- autoload :Table, 'rdoc/markup/table'
- autoload :Raw, 'rdoc/markup/raw'
- autoload :Rule, 'rdoc/markup/rule'
- autoload :Verbatim, 'rdoc/markup/verbatim'
+ autoload :BlankLine, "#{__dir__}/markup/blank_line"
+ autoload :BlockQuote, "#{__dir__}/markup/block_quote"
+ autoload :Document, "#{__dir__}/markup/document"
+ autoload :HardBreak, "#{__dir__}/markup/hard_break"
+ autoload :Heading, "#{__dir__}/markup/heading"
+ autoload :Include, "#{__dir__}/markup/include"
+ autoload :IndentedParagraph, "#{__dir__}/markup/indented_paragraph"
+ autoload :List, "#{__dir__}/markup/list"
+ autoload :ListItem, "#{__dir__}/markup/list_item"
+ autoload :Paragraph, "#{__dir__}/markup/paragraph"
+ autoload :Table, "#{__dir__}/markup/table"
+ autoload :Raw, "#{__dir__}/markup/raw"
+ autoload :Rule, "#{__dir__}/markup/rule"
+ autoload :Verbatim, "#{__dir__}/markup/verbatim"
# Formatters
- autoload :Formatter, 'rdoc/markup/formatter'
+ autoload :Formatter, "#{__dir__}/markup/formatter"
- autoload :ToAnsi, 'rdoc/markup/to_ansi'
- autoload :ToBs, 'rdoc/markup/to_bs'
- autoload :ToHtml, 'rdoc/markup/to_html'
- autoload :ToHtmlCrossref, 'rdoc/markup/to_html_crossref'
- autoload :ToHtmlSnippet, 'rdoc/markup/to_html_snippet'
- autoload :ToLabel, 'rdoc/markup/to_label'
- autoload :ToMarkdown, 'rdoc/markup/to_markdown'
- autoload :ToRdoc, 'rdoc/markup/to_rdoc'
- autoload :ToTableOfContents, 'rdoc/markup/to_table_of_contents'
- autoload :ToTest, 'rdoc/markup/to_test'
- autoload :ToTtOnly, 'rdoc/markup/to_tt_only'
+ autoload :ToAnsi, "#{__dir__}/markup/to_ansi"
+ autoload :ToBs, "#{__dir__}/markup/to_bs"
+ autoload :ToHtml, "#{__dir__}/markup/to_html"
+ autoload :ToHtmlCrossref, "#{__dir__}/markup/to_html_crossref"
+ autoload :ToHtmlSnippet, "#{__dir__}/markup/to_html_snippet"
+ autoload :ToLabel, "#{__dir__}/markup/to_label"
+ autoload :ToMarkdown, "#{__dir__}/markup/to_markdown"
+ autoload :ToRdoc, "#{__dir__}/markup/to_rdoc"
+ autoload :ToTableOfContents, "#{__dir__}/markup/to_table_of_contents"
+ autoload :ToTest, "#{__dir__}/markup/to_test"
+ autoload :ToTtOnly, "#{__dir__}/markup/to_tt_only"
end
-
diff --git a/lib/rdoc/parser.rb b/lib/rdoc/parser.rb
index 425bc48632..7006265b63 100644
--- a/lib/rdoc/parser.rb
+++ b/lib/rdoc/parser.rb
@@ -263,8 +263,8 @@ class RDoc::Parser
@preprocess.options = @options
end
- autoload :RubyTools, 'rdoc/parser/ruby_tools'
- autoload :Text, 'rdoc/parser/text'
+ autoload :RubyTools, "#{__dir__}/parser/ruby_tools"
+ autoload :Text, "#{__dir__}/parser/text"
end
diff --git a/lib/rdoc/rd.rb b/lib/rdoc/rd.rb
index 0d3d3cea85..8c2366a3ca 100644
--- a/lib/rdoc/rd.rb
+++ b/lib/rdoc/rd.rb
@@ -92,9 +92,8 @@ class RDoc::RD
document
end
- autoload :BlockParser, 'rdoc/rd/block_parser'
- autoload :InlineParser, 'rdoc/rd/inline_parser'
- autoload :Inline, 'rdoc/rd/inline'
+ autoload :BlockParser, "#{__dir__}/rd/block_parser"
+ autoload :InlineParser, "#{__dir__}/rd/inline_parser"
+ autoload :Inline, "#{__dir__}/rd/inline"
end
-
diff --git a/lib/rdoc/rdoc.rb b/lib/rdoc/rdoc.rb
index 5255e043fd..ca48f2de81 100644
--- a/lib/rdoc/rdoc.rb
+++ b/lib/rdoc/rdoc.rb
@@ -1,5 +1,5 @@
# frozen_string_literal: true
-require 'rdoc'
+require_relative '../rdoc'
require 'find'
require 'fileutils'
diff --git a/lib/rdoc/ri.rb b/lib/rdoc/ri.rb
index c798c1fc49..0af05f729f 100644
--- a/lib/rdoc/ri.rb
+++ b/lib/rdoc/ri.rb
@@ -1,5 +1,5 @@
# frozen_string_literal: true
-require 'rdoc'
+require_relative '../rdoc'
##
# Namespace for the ri command line tool's implementation.
@@ -13,9 +13,8 @@ module RDoc::RI
class Error < RDoc::Error; end
- autoload :Driver, 'rdoc/ri/driver'
- autoload :Paths, 'rdoc/ri/paths'
- autoload :Store, 'rdoc/ri/store'
+ autoload :Driver, "#{__dir__}/ri/driver"
+ autoload :Paths, "#{__dir__}/ri/paths"
+ autoload :Store, "#{__dir__}/ri/store"
end
-
diff --git a/lib/rdoc/ri/driver.rb b/lib/rdoc/ri/driver.rb
index 7549a39203..082fcc7e81 100644
--- a/lib/rdoc/ri/driver.rb
+++ b/lib/rdoc/ri/driver.rb
@@ -12,7 +12,7 @@ begin
rescue LoadError
end
-require 'rdoc'
+require_relative '../../rdoc'
##
# For RubyGems backwards compatibility
diff --git a/lib/rdoc/rubygems_hook.rb b/lib/rdoc/rubygems_hook.rb
index 3781ff9858..3160072e53 100644
--- a/lib/rdoc/rubygems_hook.rb
+++ b/lib/rdoc/rubygems_hook.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
require 'rubygems/user_interaction'
require 'fileutils'
-require 'rdoc'
+require_relative '../rdoc'
##
# Gem::RDoc provides methods to generate RDoc and ri data for installed gems
diff --git a/lib/rdoc/servlet.rb b/lib/rdoc/servlet.rb
index 0ab1eaf19d..d05368766a 100644
--- a/lib/rdoc/servlet.rb
+++ b/lib/rdoc/servlet.rb
@@ -1,5 +1,5 @@
# frozen_string_literal: true
-require 'rdoc'
+require_relative '../rdoc'
require 'erb'
require 'time'
require 'json'
diff --git a/lib/rdoc/stats.rb b/lib/rdoc/stats.rb
index bd6c0ef23a..4817c9c729 100644
--- a/lib/rdoc/stats.rb
+++ b/lib/rdoc/stats.rb
@@ -454,9 +454,8 @@ class RDoc::Stats
[params.length, undoc]
end
- autoload :Quiet, 'rdoc/stats/quiet'
- autoload :Normal, 'rdoc/stats/normal'
- autoload :Verbose, 'rdoc/stats/verbose'
+ autoload :Quiet, "#{__dir__}/stats/quiet"
+ autoload :Normal, "#{__dir__}/stats/normal"
+ autoload :Verbose, "#{__dir__}/stats/verbose"
end
-
diff --git a/lib/rdoc/task.rb b/lib/rdoc/task.rb
index fa13a4f0bd..8890419db2 100644
--- a/lib/rdoc/task.rb
+++ b/lib/rdoc/task.rb
@@ -32,7 +32,7 @@ begin
rescue Gem::LoadError
end unless defined?(Rake)
-require 'rdoc'
+require_relative '../rdoc'
require 'rake'
require 'rake/tasklib'
diff --git a/lib/rdoc/version.rb b/lib/rdoc/version.rb
index 86c5b360fd..2c52a6b87b 100644
--- a/lib/rdoc/version.rb
+++ b/lib/rdoc/version.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module RDoc
##