docs: def _get_mapping(self, line, parser=None, previous=None):
          '''mapping will take the command from a Dockerfile and return a map
             function to add it to the appropriate place. Any lines that don't
             cleanly map are assumed to be comments.
  
             Parameters
             ==========
             line: the list that has been parsed into parts with _split_line
             parser: the previously used parser, for context    
  
             Returns
             =======
             function: to map a line to its command group
  
          '''
  
          # Split the command into cleanly the command and rest
          if not isinstance(line, list):
              line = self._split_line(line)
  
          # No line we will give function to handle empty line
          if len(line) == 0:
              return None
  
          cmd = line[0].upper()
  
          mapping = {"ADD": self._add,
                     "ARG": self._arg,
                     "COPY": self._copy,
                     "CMD": self._cmd,
                     "ENTRYPOINT": self._entry,
                     "ENV": self._env,
                     "EXPOSE": self._expose,
                     "FROM": self._from,
                     "HEALTHCHECK": self._test,
                     "RUN": self._run,
                     "WORKDIR": self._workdir,
                     "MAINTAINER": self._label,
                     "VOLUME": self._volume,
                     "LABEL": self._label}
  
          # If it's a command line, return correct function
          if cmd in mapping:
              return mapping[cmd]
  
          # If it's a continued line, return previous
          cleaned = self._clean_line(line[-1])
          previous = self._clean_line(previous)
  
          # if we are continuing from last
          if cleaned.endswith('\\') and parser or previous.endswith('\\'):
              return parser
  
          return self._default