slogan3

Help me met het schrijven van Ruby code voor geautomatiseerde code-documentatie

description

Met deze prompt kan de gebruiker eenvoudig een Ruby-script krijgen dat automatisch professionele documentatie genereert voor zijn code, waardoor handmatig documentatiewerk vermindert en de kwaliteit van de documentatie verbetert. Het script ondersteunt verschillende formaten en is uitbreidbaar, wat het beter maakt dan handmatige of minder flexibele alternatieven.

prompt

Help me Ruby code te schrijven die automatisch documentatie genereert voor mijn codebase. Geef aan welke programmeerbestanden of mappen ik wil documenteren: <geef bestanden of mappen op>. Ik wil dat de documentatie duidelijk commen ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Hier is een voorbeeld van Ruby-code die gebruikmaakt van de gem 'yard' om automatisch documentatie te genereren voor je codebase, specifiek voor de mappen app/models en app/controllers. Deze setup zorgt voor gedetailleerde commentaar, functiebeschrijvingen en voorbeelden, en exporteert de documentatie naar HTML. De code is modulair en makkelijk uit te breiden. Stap 1: Installeer YARD Voer in je terminal uit: ```bash gem install yard ``` Stap 2: Maak een Ruby-script voor het genereren van documentatie ```ruby # generate_docs.rb require 'yard' # Configuratie van YARD YARD::CLI::Yardoc.run([ '--output-dir', 'doc', '--markup', 'markdown', '--readme', 'README.md', # Optioneel: voeg een README toe '--plugin', 'yard', # Zorg dat de plugin geladen wordt 'app/models', # Documenteer models 'app/controllers' # Documenteer controllers ]) # Optioneel: voeg extra configuraties toe, zoals het genereren van een index of custom templates ``` Stap 3: Voeg Javadoc-achtige commentaar toe aan je code Voorbeeld van commentaar in je Ruby-bestanden: ```ruby # app/models/user.rb # User-model dat gebruikers van de applicatie representeert. # # @example # user = User.new(name: 'Jan') # puts user.name class User # De naam van de gebruiker. # # @return [String] attr_accessor :name # Maakt een nieuwe gebruiker aan. # # @param [String] name De naam van de gebruiker. def initialize(name) @name = name end # Geeft een begroeting voor de gebruiker. # # @return [String] Een begroetingsbericht. # # @example # user = User.new('Jan') # puts user.greet # => "Hallo, Jan!" def greet "Hallo, #{name}!" end end ``` Stap 4: Uitbreidingen en integratie - Voor meer maatwerk kun je templates aanpassen of plugins toevoegen. - Je kunt de documentatie automatisch genereren met een buildscript of CI/CD-pipeline. - Voor complexere setups kun je de YARD API gebruiken om aangepaste scripts te schrijven die bijvoorbeeld alleen bepaalde modules documenteren. Door dit script te gebruiken en je code te voorzien van goede commentaar, genereer je makkelijk uitgebreide HTML-documentatie die je kunt integreren in je project. Mocht je meer specifieke wensen hebben of hulp nodig bij het aanpassen, laat het gerust weten!
provider: deepseek
model: deepseek-chat
Ik zal je helpen een Ruby script te schrijven voor automatische documentatiegeneratie. Hier is een complete oplossing: ```ruby # documentation_generator.rb require 'yard' require 'fileutils' class DocumentationGenerator attr_reader :source_dirs, :output_dir, :yardoc def initialize(source_dirs: ['app/models', 'app/controllers'], output_dir: 'doc') @source_dirs = Array(source_dirs) @output_dir = output_dir @yardoc = YARD::CLI::Yardoc.new end # Configureer YARD opties voor HTML output def configure_yard yardoc.options.update({ output: output_dir, format: :html, embed_mixins: true, one_file: false, verbose: true, markup: :markdown, templates: [:default] }) end # Genereer documentatie def generate_documentation puts "Documentatie genereren voor: #{source_dirs.join(', ')}" configure_yard create_output_directory # Verzamel alle Ruby bestanden files = collect_ruby_files if files.empty? puts "Geen Ruby bestanden gevonden in de opgegeven mappen." return false end puts "Gevonden #{files.size} Ruby bestanden om te documenteren..." # Genereer documentatie met YARD begin YARD::Registry.clear yardoc.run(*files) puts "Documentatie succesvol gegenereerd in: #{output_dir}" true rescue StandardError => e puts "Fout bij genereren documentatie: #{e.message}" false end end # Verzamel alle .rb bestanden uit de source directories def collect_ruby_files files = [] source_dirs.each do |dir| if File.directory?(dir) files.concat(Dir.glob(File.join(dir, '**', '*.rb'))) else puts "Waarschuwing: Directory #{dir} bestaat niet" end end files end # Maak output directory aan als deze niet bestaat def create_output_directory FileUtils.mkdir_p(output_dir) unless File.directory?(output_dir) end # Voeg custom templates toe (uitbreidbaar) def add_custom_template(template_path) yardoc.options[:template] = template_path end # Configureer extra opties def set_option(option, value) yardoc.options[option] = value end end # Voorbeeld gebruik: if __FILE__ == $0 generator = DocumentationGenerator.new( source_dirs: ['app/models', 'app/controllers'], output_dir: 'public/docs' ) # Optionele extra configuratie generator.set_option(:title, "Mijn Applicatie Documentatie") if generator.generate_documentation puts "Open documentatie: open #{generator.output_dir}/index.html" else puts "Documentatie genereren mislukt" exit 1 end end ``` ## Gemfile toevoegen: ```ruby # Gemfile source 'https://rubygems.org' gem 'yard', '~> 0.9.28' gem 'redcarpet', '~> 3.5' # Voor Markdown ondersteuning ``` ## Installatie en gebruik: 1. **Installatie:** ```bash bundle install ``` 2. **Uitvoeren:** ```bash ruby documentation_generator.rb ``` 3. **Als Rake task (optioneel):** ```ruby # Rakefile require_relative 'documentation_generator' desc "Genereer documentatie" task :docs do generator = DocumentationGenerator.new generator.generate_documentation end ``` ## Voorbeeld van goede code documentatie: ```ruby # app/models/user.rb class User < ApplicationRecord # Geeft de volledige naam van de gebruiker terug # # @example # user = User.new(first_name: "Jan", last_name: "Jansen") # user.full_name # => "Jan Jansen" # # @return [String] De volledige naam def full_name "#{first_name} #{last_name}" end # Controleert of de gebruiker admin rechten heeft # # @return [Boolean] true als gebruiker admin is def admin? role == 'admin' end end ``` ## Uitbreidingsmogelijkheden: 1. **Custom templates:** ```ruby generator.add_custom_template('mijn_template') ``` 2. **Extra directories:** ```ruby generator = DocumentationGenerator.new( source_dirs: ['app/models', 'app/controllers', 'lib'], output_dir: 'docs' ) ``` 3. **CI/CD integratie:** Voeg toe aan je GitHub Actions of GitLab CI configuratie. Deze oplossing gebruikt YARD, de standaard Ruby documentatie tool, en is volledig uitbreidbaar en integreert eenvoudig met bestaande tools.