Skip to content

Commit

Permalink
Allow partial default values to be overridden with .rdoc_options
Browse files Browse the repository at this point in the history
  • Loading branch information
aycabta committed Mar 15, 2021
1 parent 3c7834d commit e06094c
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 2 deletions.
34 changes: 33 additions & 1 deletion lib/rdoc/options.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -417,6 +418,37 @@ def yaml_initialize tag, map # :nodoc:
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
Expand Down
7 changes: 6 additions & 1 deletion lib/rdoc/rdoc.rb
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,12 @@ def load_options
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
Expand Down
12 changes: 12 additions & 0 deletions test/rdoc/test_rdoc_rdoc.rb
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,18 @@ def test_load_options_invalid
end
end

def test_load_options_partial_override
temp_dir do
File.open '.rdoc_options', 'w' do |io|
io.write "markup: Markdown"
end

options = @rdoc.load_options

assert_equal 'Markdown', options.markup
end
end

def load_options_no_file
temp_dir do
options = @rdoc.load_options
Expand Down

0 comments on commit e06094c

Please sign in to comment.