require 'rant' module Rant::Silly class << self def love_letter(n) Rant.new.extend(Rant::Silly::Love).value { letter(n) } end end end module Rant::Silly::Love def letter(n=3) body = sized(n) { array(:paragraph) }.join "\n\n" <<-EOS #{address}: #{body} #{sign} #{post_script} EOS end def address "my #{extremifier} #{pedestal_label}" end def extremifier choose "most","ultimate","unbelievable","incredible","burning" end def pedestal_label choose "beloved","desire","dove","virgin goddess","existential solution","lighthouse","beacon","holy mother","queen","mistress" end def double_plus_good choose "holy","shiny","glittering","joyous","delicious" end def how_i_feel choose "my heart aches","my spine pines","my spirit wanders and wonders","my soul is awed","my loin burns" end def paragraph sized(range(2,4)) { array(:sentence)}.join " " end def sentence freq \ Proc.new { "when #{how_i_feel}, my #{pedestal_label}, i feel the need to #{stalk_action}, but this is not because #{how_i_feel}, but rather a symptom of my being your #{whoami}." }, Proc.new { "because you are my #{pedestal_label}, and i am your #{whoami}, no, rather your #{whoami}, #{fragment}."}, Proc.new { "do not think that saying '#{how_i_feel}' suffices to show the depth of how #{how_i_feel}, because more than that, #{fantasy}"}, Proc.new { "as a #{whoami}, that #{how_i_feel} is never quite enough for you, my #{double_plus_good} #{pedestal_label}."} end def fragment fun = fantasy choose "i hope to god #{fun}", "i believe #{fun}", "i will that #{fun}" end def caused_by end def whoami "#{extremifier} #{humbleizer} #{groveler}" end def sign "your #{whoami}" end def humbleizer choose "undeserving","insignificant","unremarkable","fearful","menial" end def groveler choose "slave","servant","captive","lapdog" end def post_script "ps: #{i_am_stalking_you}, and hope that #{fantasy}" end def i_am_stalking_you "every #{time_duration} i #{stalk_action}" end def fantasy freq \ Proc.new { make = choose "raise","nurture","bring into the world" babies = choose "brood of babies","#{double_plus_good} angels" good = double_plus_good effect = choose "the world becomes all the more #{good}", "we may at the end of our lives rest in #{good} peace.", "you, my #{pedestal_label}, would continue to live." "we would #{make} #{babies}, so #{effect}." }, Proc.new { do_thing = choose "kiss","hug","read poetry to each other","massage","whisper empty nothings into each others' ears","be with each other, and oblivious to the entire world" affect = choose "joy", "mindfulness", "calm", "sanctity" "we would #{do_thing} with #{double_plus_good} #{affect}" } end def stalk_action choose "think of you","dream of us together","look at your picture and sigh" end def time_duration choose "once in a while","night","day","hour","minute" end end