[ all classes ]
[ lzwpack ]
Coverage Summary for Class: CompressHeader (lzwpack)
| Class | Method, % | Line, % |
|---|---|---|
| CompressHeader$ | 100% (6/ 6) | 88.9% (8/ 9) |
| total | 100% (6/ 6) | 88.9% (8/ 9) |
1 package lzwpack
2
3 import fs2.{Segment, Stream}
4
5 /**
6 * Provides compress(1) compatible file header coding and decoding.
7 */
8 object CompressHeader {
9 val Header: List[Byte] = List(0x1f.toByte, 0x9d.toByte)
10 val CodeSizeMarker = 0x90.toByte
11
12 def decode[F[_]](stream: Stream[F, Byte]): Stream[F, Byte] = stream.take(2).segmentN(2).flatMap { segment =>
13 if (segment.force.toList == Header)
14 stream.drop(3)
15 else
16 stream
17 }
18
19 def encode[F[_]](stream: Stream[F, Byte]): Stream[F, Byte] = stream.cons(Segment.seq(Header) ++ Segment(CodeSizeMarker))
20 }