package chroma

// Coalesce is a Lexer interceptor that collapses runs of common types into a single token.
func ( Lexer) Lexer { return &coalescer{} }

type coalescer struct{ Lexer }

func ( *coalescer) ( *TokeniseOptions,  string) (Iterator, error) {
	var  Token
	,  := .Lexer.Tokenise(, )
	if  != nil {
		return nil, 
	}
	return func() Token {
		for  := ();  != (EOF);  = () {
			if len(.Value) == 0 {
				continue
			}
			if  == EOF {
				 = 
			} else {
				if .Type == .Type && len(.Value) < 8192 {
					.Value += .Value
				} else {
					 := 
					 = 
					return 
				}
			}
		}
		 := 
		 = EOF
		return 
	}, nil
}