@@ -28,6 +28,7 @@ module Data.Attoparsec.Text.Buffer
2828 Buffer
2929 , buffer
3030 , unbuffer
31+ , unbufferAt
3132 , length
3233 , pappend
3334 , iter
@@ -74,6 +75,11 @@ buffer (Text arr off len) = Buf arr off len len 0
7475unbuffer :: Buffer -> Text
7576unbuffer (Buf arr off len _ _) = Text arr off len
7677
78+unbufferAt :: Int -> Buffer -> Text
79+unbufferAt s (Buf arr off len _ _) =
80+ assert (s >= 0 && s <= len) $
81+ Text arr (off+s) (len-s)
82+
7783instance Monoid Buffer where
7884 mempty = Buf A.empty 0 0 0 0
7985