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