func send(out chan processor.Token, major processor.TypeMajor, minor processor.TypeMinor, value string) { tok := processor.Token{} tok.Major = major tok.Minor = minor tok.Value = value out <- tok }
// Highlight is called once for every input file. func Highlight(data []byte, out chan processor.Token) { tok := processor.Token{} tok.Major = processor.MAJOR_RAW tok.Minor = processor.MINOR_RAW tok.Value = string(data) out <- tok close(out) }
func Filter(in chan processor.Token, out chan processor.Token) { prev := processor.Token{} for { select { case x, ok := <-in: if x.Major == prev.Major && x.Minor == prev.Minor { prev.Value = prev.Value + x.Value } else { out <- prev prev = x } if !ok { out <- prev close(out) return } } } }