Skip to content

Commit

Permalink
Dump plain objects as RDoc::Options
Browse files Browse the repository at this point in the history
  • Loading branch information
nobu committed Sep 15, 2021
1 parent 0116ed0 commit d32d723
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 9 deletions.
41 changes: 33 additions & 8 deletions lib/rdoc/options.rb
Original file line number Diff line number Diff line change
Expand Up @@ -585,14 +585,14 @@ def finish
def finish_page_dir
return unless @page_dir

@files << @page_dir.to_s
@files << @page_dir

page_dir = nil
page_dir = Pathname(@page_dir)
begin
page_dir = @page_dir.expand_path.relative_path_from @root
page_dir = page_dir.expand_path.relative_path_from @root
rescue ArgumentError
# On Windows, sometimes crosses different drive letters.
page_dir = @page_dir.expand_path
page_dir = page_dir.expand_path
end

@page_dir = page_dir
Expand Down Expand Up @@ -847,7 +847,7 @@ def parse argv
"such files at your project root.",
"NOTE: Do not use the same file name in",
"the page dir and the root of your project") do |page_dir|
@page_dir = Pathname(page_dir)
@page_dir = page_dir
end

opt.separator nil
Expand Down Expand Up @@ -1159,13 +1159,13 @@ def parse argv

@files = argv.dup

finish

if @write_options then
write_options
exit
end

finish

self
end

Expand Down Expand Up @@ -1275,10 +1275,35 @@ def warn message
def write_options
RDoc.load_yaml

hash = {}
%w[
charset
exclude
generator_name
hyperlink_all
line_numbers
locale_name
locale_dir
main_page
markup
op_dir
page_dir
show_hash
tab_width
template_dir
title
visibility
webcvs
rdoc_include
static_path
].each do |var|
hash[var] = instance_variable_get("@#{var}")
end

File.open '.rdoc_options', 'w' do |io|
io.set_encoding Encoding::UTF_8

YAML.dump self, io
YAML.dump hash, io
end
end

Expand Down
8 changes: 7 additions & 1 deletion test/rdoc/test_rdoc_options.rb
Original file line number Diff line number Diff line change
Expand Up @@ -673,6 +673,10 @@ def test_parse_write_options
assert_equal 0, e.status

assert File.exist? '.rdoc_options'

options = File.read('.rdoc_options')
options = YAML.safe_load(options, permitted_classes: [Symbol])
assert_equal @options, RDoc::Options.new(options)
end
ensure
FileUtils.rm_rf tmpdir
Expand Down Expand Up @@ -764,7 +768,9 @@ def test_write_options

assert File.exist? '.rdoc_options'

assert_equal @options, YAML.safe_load(File.read('.rdoc_options'), permitted_classes: [RDoc::Options, Symbol])
options = File.read('.rdoc_options')
options = YAML.safe_load(options, permitted_classes: [Symbol])
assert_equal @options, RDoc::Options.new(options)
end
end

Expand Down

0 comments on commit d32d723

Please sign in to comment.