From d8dbabde5b6438a0298ed11275b2951f4ae6d7bf Mon Sep 17 00:00:00 2001 From: Joe Crayne Date: Tue, 23 Jul 2019 20:01:32 -0400 Subject: Added missing source for objcat tool. --- tools/objcat.hs | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 tools/objcat.hs diff --git a/tools/objcat.hs b/tools/objcat.hs new file mode 100644 index 0000000..66ab9a9 --- /dev/null +++ b/tools/objcat.hs @@ -0,0 +1,37 @@ +import Data.Bool +import qualified Data.ByteString.Lazy as L +import qualified Data.DList as DList +import qualified Data.IntMap as IntMap +import Data.Char +import Data.Maybe +import System.Environment +import Control.Monad.Writer.Lazy +import Control.Monad.State.Strict + +import Wavefront.Lex +import Wavefront + +zflip b = b + { vertex = \xs -> case xs of + x:y:z:ws -> vertex b (x:y:(-z):ws) + _ -> vertex b xs + , vertexN = \xs -> case xs of + x:y:z:ws -> vertexN b (x:y:(-z):ws) + _ -> vertexN b xs + , face = \ts -> face b $ reverse ts + } + +objcat b fs = (`evalStateT` renumFrom1) $ do + forM_ fs $ \f -> do + bs <- liftIO $ L.readFile f + parseCustom (applyRenumbering b) (modify' . addCounts) bs + return () + +main = do + (b,fs) <- do + fs0 <- getArgs + case fs0 of + "--zflip":fs -> return (zflip echoBuilder, fs) + fs -> return (echoBuilder,fs) + out <- DList.toList <$> execWriterT (objcat b fs) + putStrLn $ unlines out -- cgit v1.2.3