code: func (r *Renderer) RenderEvent(event *TaskEvent) string {
  	switch event.Type {
  	case "eos":
  		return ""
  	}
  
  	s := ""
  
  	if r.options.showTime {
  		s += fmt.Sprintf("(%s) ", time.Unix(0, event.Time).Format(time.UnixDate))
  	}
  
  	if event.Thread != "" {
  		s += fmt.Sprintf("[%s] -- ", event.Thread)
  	}
  
  	s += fmt.Sprintf("%s", event.Stage)
  
  	if event.Subtask.Name != "" {
  		s += " -- "
  		if event.Subtask.Total != 0 {
  			s += fmt.Sprintf("(%d/%d): ", event.Subtask.Index, event.Subtask.Total)
  		}
  
  		s += fmt.Sprintf("%s", event.Subtask.Name)
  
  		if event.Subtask.Progress.Total != 0 {
  			s += fmt.Sprintf(" ... %d%%",
  				(event.Subtask.Progress.Current/event.Subtask.Progress.Total)*100,
  			)
  		}
  	}
  
  	return s
  }
docs: // renderEvent varies output depending on the information provided
  // by the current taskEvent.