@@ -102,11 +102,11 @@ object text {
102102 (out, carry)
103103 }
104104
105- def extractLines (buffer : Vector [String ], chunk : Chunk [String ]): (Chunk [String ], Vector [String ]) = {
105+ def extractLines (buffer : Vector [String ], chunk : Chunk [String ], pendingLineFeed : Boolean ): (Chunk [String ], Vector [String ], Boolean ) = {
106106 @ annotation.tailrec
107- def loop (remainingInput : Vector [String ], buffer : Vector [String ], output : Vector [String ], pendingLineFeed : Boolean ): (Chunk [String ], Vector [String ]) = {
107+ def loop (remainingInput : Vector [String ], buffer : Vector [String ], output : Vector [String ], pendingLineFeed : Boolean ): (Chunk [String ], Vector [String ], Boolean ) = {
108108 if (remainingInput.isEmpty) {
109- Chunk .indexedSeq(output) -> buffer
109+ ( Chunk .indexedSeq(output), buffer, pendingLineFeed)
110110 } else {
111111 var next = remainingInput.head
112112 if (pendingLineFeed) {
@@ -125,18 +125,18 @@ object text {
125125 }
126126 }
127127 }
128- loop(chunk.toVector, buffer, Vector .empty, false )
128+ loop(chunk.toVector, buffer, Vector .empty, pendingLineFeed )
129129 }
130130
131- def go (buffer : Vector [String ]): Handle [F , String ] => Pull [F , String , Unit ] = {
131+ def go (buffer : Vector [String ], pendingLineFeed : Boolean ): Handle [F , String ] => Pull [F , String , Unit ] = {
132132 Pull .receiveOption[F ,String ,String ,Unit ] {
133133 case Some (chunk #: h) =>
134- val (toOutput, newBuffer) = extractLines(buffer, chunk)
135- Pull .output(toOutput) >> go(newBuffer)(h)
134+ val (toOutput, newBuffer, newPendingLineFeed ) = extractLines(buffer, chunk, pendingLineFeed )
135+ Pull .output(toOutput) >> go(newBuffer, newPendingLineFeed )(h)
136136 case None if buffer.nonEmpty => Pull .output1(buffer.mkString)
137137 case None => Pull .done
138138 }(_)
139139 }
140- _.pull(go(Vector .empty))
140+ _.pull(go(Vector .empty, false ))
141141 }
142142}
0 commit comments