docs: def split_sql(sql):
      """generate hunks of SQL that are between the bookends
         return: tuple of beginning bookend, closing bookend, and contents
           note: beginning & end of string are returned as None"""
      bookends = ("\n", ";", "--", "/*", "*/")
      last_bookend_found = None
      start = 0
  
      while start <= len(sql):
          results = get_next_occurence(sql, start, bookends)
          if results is None:
              yield (last_bookend_found, None, sql[start:])
              start = len(sql) + 1
          else:
              (end, bookend) = results
              yield (last_bookend_found, bookend, sql[start:end])
              start = end + len(bookend)
              last_bookend_found = bookend