Question

Comment puis-je inclure un fichier de code Ruby, tout comme, dans RDoc?

J'ai un fichier example.rb que les documents comment utiliser mon petit bijou et je voudrais comprendre que l'un des fichiers comme le README.rdoc et HISTORY.rdoc.

Je l'ai déjà compris comment convertir le code source de Ruby en HTML en utilisant bijou Syntaxe mais je ne peut pas comprendre comment faire RDoc inclure le fichier sans l'analyser.

Quand je dis RDoc d'inclure le fichier html, il ne figure pas et si je truquer en utilisant rdoc ou txt comme l'extension du fichier, il n'affiche pas correctement (le fichier est toujours en fait html).

J'ai une solution qui fonctionne, il est juste incroyablement laid. Il doit y avoir une meilleure façon de le faire qui est originaire de rdoc mais je ne le vois pas.

Voici ce que j'ai dans mon Rakefile:

# Build rdocs
require 'rake/rdoctask'
require 'syntax/convertors/html'
rdoc_dir = 'rdoc'
# This is rdoc1 but it doesn't work unless you DON'T wrap it in a task
# Generate html files from example ruby files
convertor = Syntax::Convertors::HTML.for_syntax "ruby"
replacement_key = "REPLACE_THIS_TEXT_WITH_PROPER_HTML"
# Create dummy files
Dir.glob('examples/*.rb').each do |file|
  File.open("#{file}.txt", "w") do |dummy_file|
    dummy_file.write(replacement_key)
  end
end

# Call the rdoc task
Rake::RDocTask.new(:rdoc2) do |rdoc|
  rdoc.rdoc_dir = rdoc_dir
  rdoc.title = "pickled_optparse #{version}"
  rdoc.rdoc_files.include('README*')
  rdoc.rdoc_files.include('HISTORY*')
  rdoc.rdoc_files.include('examples/*.txt')
  rdoc.rdoc_files.include('lib/**/*.rb')
end

task :rdoc3 do
  # Now use a hammer to replace the dummy text with the
  # html we want to use in our ruby example code file.
  html_header = File.read('rake_reqs/html_header.html')
  Dir.glob('examples/*.rb').each do |file|
    html_ruby = convertor.convert(File.read(file))
    rdoc_file = "#{rdoc_dir}/examples/#{File.basename(file,".rb")}_rb_txt.html"
    fixed_html = File.read(rdoc_file).gsub!(replacement_key, "#{html_header}#{html_ruby}")
    File.open(rdoc_file, "w") {|f| f.write(fixed_html)}
    File.delete("#{file}.txt")
  end
end

task :rdoc => [:rdoc2, :rdoc3]
Était-ce utile?

La solution

Désolé je ne peux pas vous donner une réponse réelle mais je regarde sdoc moi-même . Vous pouvez installer le bijou de pierres précieuses rubis.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top