class MeetupGenerator
Everything needed for a meetup generator
Attributes
lib[R]
words[R]
Public Class Methods
new()
click to toggle source
# File lib/meetup_generator.rb, line 14 def initialize @words = Zlib::GzipReader.open(LIB + 'words.gz').readlines.map(&:strip) @lib = YAML.safe_load(IO.read(LIB + 'all_the_things.yaml'), symbolize_names: true) end
Public Instance Methods
agenda(num = 5)
click to toggle source
@param num [Integer] how many talks you want @return [Hash] full meetup agenda
# File lib/meetup_generator.rb, line 23 def agenda(num = 5) { talks: lib[:template].sample(num).map { |t| talk(t) }, refreshment: refreshment, location: location, date: date } end
company()
click to toggle source
# File lib/meetup_generator.rb, line 67 def company format('%<word>s.io', word: words.sample.sub(/([^aeiou])er$/, '\\1r')) end
date()
click to toggle source
# File lib/meetup_generator.rb, line 43 def date (Date.today + 1).strftime('%d/%m/%Y') end
location()
click to toggle source
# File lib/meetup_generator.rb, line 39 def location 'Shoreditch, probably' end
pair(list1, list2)
click to toggle source
# File lib/meetup_generator.rb, line 75 def pair(list1, list2) [lib[list1].sample, lib[list2].sample].join(' ') end
random_template(number = 1)
click to toggle source
# File lib/meetup_generator.rb, line 51 def random_template(number = 1) lib[:template].sample(number).first end
refreshment()
click to toggle source
# File lib/meetup_generator.rb, line 63 def refreshment pair(:food_style, :food) end
replace_number(template)
click to toggle source
# File lib/meetup_generator.rb, line 99 def replace_number(template) return template unless template =~ /%RAND\d+%/ replace_number(template.sub(/%RAND(\d+)%/) do rand(2..Regexp.last_match(1).to_i).to_s end) end
replace_ops(template)
click to toggle source
# File lib/meetup_generator.rb, line 93 def replace_ops(template) return template unless template.include?('%FNOPS%') replace_ops(template.sub('%FNOPS%', something_ops)) end
replace_things(template)
click to toggle source
# File lib/meetup_generator.rb, line 79 def replace_things(template) return template unless template =~ /%[a-z_]+%/ replace_things(template.sub(/%([a-z_]+)%/) do lib[Regexp.last_match(1).to_sym].sample end) end
replace_word(template)
click to toggle source
# File lib/meetup_generator.rb, line 87 def replace_word(template) return template unless template.include?('%WORD%') replace_word(template.sub('%WORD%', words.sample.capitalize)) end
role()
click to toggle source
# File lib/meetup_generator.rb, line 59 def role pair(:job_role, :job_title) end
something_ops()
click to toggle source
# File lib/meetup_generator.rb, line 71 def something_ops (lib[:something_ops] * 4).sample(rand(2..4)).join + 'Ops' end
talk(template = random_template)
click to toggle source
@param templates [Array] array of templates
# File lib/meetup_generator.rb, line 32 def talk(template = random_template) { title: title(template), talker: talker, role: role, company: company } end
talker()
click to toggle source
# File lib/meetup_generator.rb, line 55 def talker pair(:first_name, :last_name) end
title(template = random_template)
click to toggle source
# File lib/meetup_generator.rb, line 47 def title(template = random_template) replace_word(replace_number(replace_ops(replace_things(template)))) end