module Madlibs::Template
Public Class Methods
keys(template)
click to toggle source
# File lib/madlibs/template.rb, line 4 def self.keys template template.scan(/<([^>]*?)>/).map do |key| key.first end end
process_key(template, key, value)
click to toggle source
# File lib/madlibs/template.rb, line 10 def self.process_key template, key, value template.sub "<#{key}>", value end
process_optionals(template)
click to toggle source
# File lib/madlibs/template.rb, line 20 def self.process_optionals template loop do optionals = template.scan(/\([^\(]*?\)(?=\?)/) break if optionals.empty? template = optionals.reduce(template) do |temp, opt| temp.sub( "#{opt}?", if [true, false].sample then opt.gsub(/[()]/, '') else '' end ) end end template end
process_word_lists(template)
click to toggle source
# File lib/madlibs/template.rb, line 14 def self.process_word_lists template template.scan(/\([|a-zA-Z]*\)/).reduce(template) do |temp, words| temp.sub words, words.gsub(/[()]/, '').split('|').sample end end