Fix sentence_pos handling

Change-Id: Ib9f5c0bf8bb06d53dec72437c7f337c749658605
diff --git a/token_writer.go b/token_writer.go
index da4ae4d..11179d3 100644
--- a/token_writer.go
+++ b/token_writer.go
@@ -35,7 +35,17 @@
 
 	tw := &TokenWriter{}
 
-	if flags&TOKEN_POS != 0 {
+	// Collect token positions and maybe tokens
+	if flags&(TOKEN_POS|SENTENCE_POS) != 0 {
+
+		// TODO:
+		//   Split to
+		//   - Token_pos+Tokens+Newline
+		//   - Token_pos+Newline
+		//   - Token_pos|Sentence_pos
+		//   - Sentence_pos
+		//   - Tokens
+
 		tw.Token = func(offset int, buf []rune) {
 
 			// TODO:
@@ -58,23 +68,26 @@
 			posC += len(buf) - offset
 			pos = append(pos, posC)
 
+			// Collect tokens also
 			if flags&TOKENS != 0 {
 				writer.WriteString(string(buf[offset:]))
-				writer.WriteRune('\n')
+				writer.WriteByte('\n')
 			}
 		}
 
-		// Only print one token per line
+		// Collect tokens
 	} else if flags&TOKENS != 0 {
 		tw.Token = func(offset int, buf []rune) {
 			writer.WriteString(string(buf[offset:]))
-			writer.WriteRune('\n')
+			writer.WriteByte('\n')
 		}
+
+		// Ignore tokens
 	} else {
 		tw.Token = func(_ int, _ []rune) {}
 	}
 
-	// Print sentence boundaries
+	// Collect sentence positions and maybe sentence boundaries
 	if flags&SENTENCE_POS != 0 {
 		tw.SentenceEnd = func(offset int) {
 
@@ -83,15 +96,16 @@
 			sent = append(sent, pos[len(pos)-1])
 			sentB = true
 
+			// Collect sentences also
 			if flags&SENTENCES != 0 {
-				writer.WriteRune('\n')
+				writer.WriteByte('\n')
 			}
 		}
 
-		// Print sentence boundaries as newlines
+		// Collect sentence boundaries
 	} else if flags&SENTENCES != 0 {
 		tw.SentenceEnd = func(_ int) {
-			writer.WriteRune('\n')
+			writer.WriteByte('\n')
 		}
 
 		// Ignore sentence boundaries
@@ -99,26 +113,29 @@
 		tw.SentenceEnd = func(_ int) {}
 	}
 
+	// Write token or sentence positions
 	if flags&(TOKEN_POS|SENTENCE_POS) != 0 {
 		tw.TextEnd = func(_ int) {
 			writer.Flush()
 
+			// Write token positions
 			if flags&TOKEN_POS != 0 {
 				writer.WriteString(strconv.Itoa(pos[0]))
 				for _, x := range pos[1:] {
 					writer.WriteByte(' ')
 					writer.WriteString(strconv.Itoa(x))
 				}
-				writer.WriteRune('\n')
+				writer.WriteByte('\n')
 			}
 
+			// Write sentence positions
 			if flags&SENTENCE_POS != 0 {
 				writer.WriteString(strconv.Itoa(sent[0]))
 				for _, x := range sent[1:] {
 					writer.WriteByte(' ')
 					writer.WriteString(strconv.Itoa(x))
 				}
-				writer.WriteRune('\n')
+				writer.WriteByte('\n')
 				sent = sent[:0]
 				sentB = true
 			}
@@ -126,6 +143,8 @@
 			posC = 0
 			pos = pos[:0]
 		}
+
+		// Collect text ends
 	} else {
 		tw.TextEnd = func(_ int) {
 			writer.WriteRune('\n')
@@ -133,6 +152,7 @@
 		}
 	}
 
+	// Flush the writer
 	tw.Flush = func() error {
 		return writer.Flush()
 	}