func (t *TagHarvester) HandleToken(l *lex.Lexer, o io.Writer) error { switch l.Token() { case lex.TagTok: tag := l.Field(1) io.WriteString(o, l.Line()) l.Consume() var mark int _, err := fmt.Sscanf(l.Line(), "from :%d\n", &mark) if err != nil { return fmt.Errorf("invalid 'from' line: %s", l.Line()) } t.TagToMark[tag] = mark io.WriteString(o, l.Line()) l.Consume() default: io.WriteString(o, l.Line()) l.Consume() } return nil }