# This is a quick hacky script. It's not supposed to be good Ruby! # Run with -W0 (because it uses top-level @@) and pipe into a file. # You also need a valid /usr/share/dict/words file - "pacman -S words" on Arch-based distros WORDS = File.read('/usr/share/dict/words') .split("\n") .select { |w| /^[A-Za-z]{3,}$/ === w } .map(&:capitalize) .freeze CLASSES_TO_GENERATE = 1000 @@generated_classes = [] def stop? @@generated_classes.length >= CLASSES_TO_GENERATE end def generate_method_name selected_words = 3.times.map { WORDS.sample } selected_words[0] = selected_words[0].downcase selected_words.join end def generate_class_name 3.times.map { WORDS.sample }.join end def generate_class(i) name = generate_class_name @@generated_classes << name puts "#{i}class #{name}" 5.times do generate_something(i + ' ') break if stop? end puts "#{i}end" end def generate_method(i) puts [ "#{i}# Random method.", "#{i}# @param [#{@@generated_classes.sample}] x The first parameter.", "#{i}# @param [#{@@generated_classes.sample}] y The second parameter.", "#{i}# @return [#{@@generated_classes.sample}] The return value.", "#{i}def #{generate_method_name}(x, y); end" ] end def generate_something(i) if rand < 0.15 generate_class(i) else generate_method(i) end end loop do generate_class '' break if stop? end