text: """
  POETRY
  
  A poetry generator
  
  Ported by Dave LeCompte
  """
  
  # PORTING EDITORIAL NOTE:
  #
  # The original code is a pretty convoluted mesh of GOTOs and global
  # state. This adaptation pulls things apart into phrases, but I have
  # left the variables as globals, which makes goes against decades of
  # wisdom that global state is bad.
  import random
  
  PAGE_WIDTH = 64
  
  
  # globals
  u = 0
  i = 0
  j = 0
  k = 0
  phrase = 1
  line = ""
  
  
  def print_centered(msg):
      spaces = " " * ((PAGE_WIDTH - len(msg)) // 2)
      print(spaces + msg)
  
  
  def process_phrase_1():
      global line
  
      line_1_options = [
          "MIDNIGHT DREARY",
          "FIERY EYES",
          "BIRD OR FIEND",
          "THING OF EVIL",
          "PROPHET",
      ]
  
      line = line + line_1_options[i]
      return line
  
  
  def process_phrase_2():
      global line
      global u
  
      line_2_options = [
          ("BEGUILING ME", 2),
          ("THRILLED ME", None),
          ("STILL SITTING....", None),
          ("NEVER FLITTING", 2),
          ("BURNED", None),
      ]
      words, u_modifier = line_2_options[i]
      line += words
      if not (u_modifier is None):
          u = u_modifier
  
  
  def process_phrase_3():
      global line
  
      phrases = [
          (False, "AND MY SOUL"),
          (False, "DARKNESS THERE"),
          (False, "SHALL BE LIFTED"),
          (False, "QUOTH THE RAVEN"),
          (True, "SIGN OF PARTING"),
      ]
  
      only_if_u, words = phrases[i]
      if (not only_if_u) or (u > 0):
          line = line + words
  
  
  def process_phrase_4():
      global line
  
      phrases = [
          ("NOTHING MORE"),
          ("YET AGAIN"),
          ("SLOWLY CREEPING"),
          ("...EVERMORE"),
          ("NEVERMORE"),
      ]
  
      line += phrases[i]
  
  
  def maybe_comma():
      # line 210
      global u
      global line
  
      if len(line) > 0 and line[-1] == ".":
          # don't follow a period with a comma, ever
          return
  
      if u != 0 and random.random() <= 0.19:
          line += ", "
          u = 2
      # line 212
      if random.random() <= 0.65:
          line += " "
          u += 1
      else:
          # line 214
          print(line)
          line = ""
          u = 0
  
  
  def pick_phrase():
      global phrase
      global line
      global i, j, k
  
      i = random.randint(0, 4)
      j += 1
      k += 1
  
      if u <= 0 and (j % 2) != 0:
          # random indentation is fun!
          line += " " * 5
      phrase = j + 1
  
  
  def main() -> None:
      print_centered("POETRY")
      print_centered("CREATIVE COMPUTING  MORRISTOWN, NEW JERSEY")
      print()
      print()
      print()
  
      global line, phrase, j, k, u
  
      phrase_processors = {
          1: process_phrase_1,
          2: process_phrase_2,
          3: process_phrase_3,
          4: process_phrase_4,
      }
  
      while True:
          if phrase >= 1 and phrase <= 4:
              phrase_processors[phrase]()
              maybe_comma()
          elif phrase == 5:
              j = 0
              print(line)
              line = ""
              if k > 20:
                  print()
                  u = 0
                  k = 0
              else:
                  phrase = 2
                  continue
          pick_phrase()
  
  
  if __name__ == "__main__":
      main()
  