code: def line(self, x0, y0, x1, y1, char):
          
          # pylint: disable=too-many-arguments, too-many-branches
          if x0 > x1:
              x1, x0 = x0, x1
              y1, y0 = y0, y1
  
          dx = x1 - x0
          dy = y1 - y0
  
          if dx == 0 and dy == 0:
              self.point(x0, y0, char)
          elif abs(dx) >= abs(dy):
              for x in range(x0, x1 + 1):
                  if dx == 0:
                      y = y0
                  else:
                      y = y0 + int(round((x - x0) * dy / float((dx))))
                  self.point(x, y, char)
          elif y0 < y1:
              for y in range(y0, y1 + 1):
                  if dy == 0:
                      x = x0
                  else:
                      x = x0 + int(round((y - y0) * dx / float((dy))))
                  self.point(x, y, char)
          else:
              for y in range(y1, y0 + 1):
                  if dy == 0:
                      x = x0
                  else:
                      x = x1 + int(round((y - y1) * dx / float((dy))))
                  self.point(x, y, char)
docs: Create a line on ASCII canvas.
  
          Args:
              x0 (int): x coordinate where the line should start.
              y0 (int): y coordinate where the line should start.
              x1 (int): x coordinate where the line should end.
              y1 (int): y coordinate where the line should end.
              char (str): character to draw the line with.