From 89b10a78c24513b125fc505c78533a4ad6febd4c Mon Sep 17 00:00:00 2001 From: Joe Crayne Date: Tue, 16 Jul 2019 20:59:39 -0400 Subject: Refactor Wavefront.parse. --- src/Wavefront.hs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/Wavefront.hs') diff --git a/src/Wavefront.hs b/src/Wavefront.hs index 2131d96..638b849 100644 --- a/src/Wavefront.hs +++ b/src/Wavefront.hs @@ -152,6 +152,10 @@ mzeroOBJ = OBJ parse :: L.ByteString -> OBJ Vector parse bs = Rank2.fmap (Vector.fromList . DList.toList) obj where - b = objBookKeeping buildOBJ - substvars = ObjConfig IntMap.empty - (obj,_) = execState (runStateT (parseOBJ b substvars bs) emptyCounts) (mzeroOBJ,blankElement) + go = parseCustom buildOBJ (const $ return ()) bs + (obj,_) = execState go (mzeroOBJ,blankElement) + +parseCustom :: Monad m => ObjBuilder m -> (OBJ Count -> m b) -> L.ByteString -> m b +parseCustom builder finish bs = do + counts <- execStateT (parseOBJ (objBookKeeping builder) (ObjConfig IntMap.empty) bs) emptyCounts + finish counts -- cgit v1.2.3