code: function (line) {
      line = line.toString().trim();
      if (!line) { return; }
  
      var match = sectionReg.exec(line);
      if (match) {
        osuSection = match[1].toLowerCase();
        return;
      }
  
      switch (osuSection) {
      case 'timingpoints':
        timingLines.push(line);
        break;
      case 'hitobjects':
        objectLines.push(line);
        break;
      case 'events':
        eventsLines.push(line);
        break;
      default:
        if (!osuSection) {
          match = /^osu file format (v[0-9]+)$/.exec(line);
          if (match) {
            beatmap.fileFormat = match[1];
            return;
          }
        }
  
        /**
         * Apart from events, timingpoints and hitobjects sections, lines are "key: value"
         */
        match = keyValReg.exec(line);
        if (match) { beatmap[match[1]] = match[2]; }
      }
    }
docs: Read a single line, parse when key/value, store when further parsing needed
  @param  {String|Buffer} line