docs: def parse(self):
          '''parse is the base function for parsing the recipe, whether it be
             a Dockerfile or Singularity recipe. The recipe is read in as lines,
             and saved to a list if needed for the future. If the client has
             it, the recipe type specific _parse function is called.
  
             Instructions for making a client subparser:
  
                 It should have a main function _parse that parses a list of lines
                 from some recipe text file into the appropriate sections, e.g.,
                 
                 self.fromHeader
                 self.environ
                 self.labels
                 self.install
                 self.files
                 self.test
                 self.entrypoint
  
          '''
  
          self.cmd = None
          self.comments = []
          self.entrypoint = None
          self.environ = []
          self.files = []
          self.install = []
          self.labels = []
          self.ports = []
          self.test = None
          self.volumes = []
  
          if self.recipe:
  
              # Read in the raw lines of the file
              self.lines = read_file(self.recipe)
  
              # If properly instantiated by Docker or Singularity Recipe, parse
              if hasattr(self, '_parse'):
                  self._parse()