summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authoraycabta <aycabta@gmail.com>2021-03-07 10:13:14 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2021-03-16 15:47:27 +0900
commit971a0cd246db6578e1ea8760a903e1a23e3681f3 (patch)
tree7fa26377fac2c500522cec48160e99ce8eb9207a /lib
parentde8e6218a3257fe19b46ff0aa157e66f452ac8b7 (diff)
[ruby/rdoc] Allow partial default values to be overridden with .rdoc_options
https://github.com/ruby/rdoc/commit/e14800891f
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/4274
Diffstat (limited to 'lib')
-rw-r--r--lib/rdoc/options.rb34
-rw-r--r--lib/rdoc/rdoc.rb7
2 files changed, 39 insertions, 2 deletions
diff --git a/lib/rdoc/options.rb b/lib/rdoc/options.rb
index 13c1abae0a..13b7ba5c6c 100644
--- a/lib/rdoc/options.rb
+++ b/lib/rdoc/options.rb
@@ -338,8 +338,9 @@ class RDoc::Options
attr_reader :visibility
- def initialize # :nodoc:
+ def initialize loaded_options = nil # :nodoc:
init_ivars
+ override loaded_options if loaded_options
end
def init_ivars # :nodoc:
@@ -417,6 +418,37 @@ class RDoc::Options
init_with map
end
+ def override map # :nodoc:
+ if map.has_key?('encoding')
+ encoding = map['encoding']
+ @encoding = encoding ? Encoding.find(encoding) : encoding
+ end
+
+ @charset = map['charset'] if map.has_key?('charset')
+ @exclude = map['exclude'] if map.has_key?('exclude')
+ @generator_name = map['generator_name'] if map.has_key?('generator_name')
+ @hyperlink_all = map['hyperlink_all'] if map.has_key?('hyperlink_all')
+ @line_numbers = map['line_numbers'] if map.has_key?('line_numbers')
+ @locale_name = map['locale_name'] if map.has_key?('locale_name')
+ @locale_dir = map['locale_dir'] if map.has_key?('locale_dir')
+ @main_page = map['main_page'] if map.has_key?('main_page')
+ @markup = map['markup'] if map.has_key?('markup')
+ @op_dir = map['op_dir'] if map.has_key?('op_dir')
+ @show_hash = map['show_hash'] if map.has_key?('show_hash')
+ @tab_width = map['tab_width'] if map.has_key?('tab_width')
+ @template_dir = map['template_dir'] if map.has_key?('template_dir')
+ @title = map['title'] if map.has_key?('title')
+ @visibility = map['visibility'] if map.has_key?('visibility')
+ @webcvs = map['webcvs'] if map.has_key?('webcvs')
+
+ if map.has_key?('rdoc_include')
+ @rdoc_include = sanitize_path map['rdoc_include']
+ end
+ if map.has_key?('static_path')
+ @static_path = sanitize_path map['static_path']
+ end
+ end
+
def == other # :nodoc:
self.class === other and
@encoding == other.encoding and
diff --git a/lib/rdoc/rdoc.rb b/lib/rdoc/rdoc.rb
index 93e764c462..c47f639cc4 100644
--- a/lib/rdoc/rdoc.rb
+++ b/lib/rdoc/rdoc.rb
@@ -167,7 +167,12 @@ class RDoc::RDoc
end
raise RDoc::Error, "#{options_file} is not a valid rdoc options file" unless
- RDoc::Options === options
+ RDoc::Options === options or Hash === options
+
+ if Hash === options
+ # Override the default values with the contents of YAML file.
+ options = RDoc::Options.new options
+ end
options
end