code: def _reformat_docstring(doc, format_fn, code_newline=""):
      
      out = []
      status = {"listing": False, "add_line": False, "eat_line": False}
      code = False
      for line in doc:
          if status["add_line"]:
              out.append("\n")
          status["add_line"] = False
          if status["eat_line"]:
              status["eat_line"] = False
              if line.strip() == "":
                  continue
          # check for start/end of code block
          if line.strip() == "```":
              code = not code
              out.append(line + code_newline)
              continue
          if not code:
              # if we are in a block listing a blank line ends it
              if line.rstrip() == "":
                  status["listing"] = False
              # format the line
              line = format_fn(line, status)
              # see if block start
              if re_listing.match(line):
                  status["listing"] = True
          out.append(line.rstrip() + "\n")
      return out
docs: Go through lines of file and reformat using format_fn