diff --git a/lib/Text/Editor.bak.hs b/lib/Text/Editor.bak.hs deleted file mode 100644 index 5f7e00b68e0eb226abfe83e337d4ab0773053dab..0000000000000000000000000000000000000000 --- a/lib/Text/Editor.bak.hs +++ /dev/null @@ -1,101 +0,0 @@ -{-# LANGUAGE FlexibleInstances, NamedFieldPuns, OverloadedStrings #-} -module Text.Editor ( - -- Editor - --, Filter(..) - Editable(..) - --, (|->) - --, (|=>) - , (<>.) - , editor - --, pureEditor - , fileFilter - --, runAll - , stdinList - ) where - -import Control.Monad.IO.Class (MonadIO(..)) -import Data.Text as Text (Text, intercalate, lines, pack, unpack) -import Data.Text.IO as Text (readFile, writeFile) -import System.FilePath (replaceDirectory, replaceExtension) - -data Filter m a b = Filter { - transform :: a -> m b - , outputFormat :: Maybe String - } - -type Editor m a = Filter m a a - -{- -data Editor m a = Editor { - transform :: a -> m a - , outputFormat :: Maybe String - } --} - -{- -editor :: (a -> m a) -> Editor m a -editor f = Filter { transform = f, outputFormat = Nothing } ---editor f = Editor { transform = f, outputFormat = Nothing } - -pureEditor :: Applicative m => (a -> a) -> Editor m a -pureEditor = editor . (pure .) --} - -class Editable a where - enter :: Text -> a - leave :: a -> Text - -instance Editable [Text] where - enter = Text.lines - leave = Text.intercalate "\n" - -instance Editable String where - enter = Text.unpack - leave = Text.pack - -type EditionProcess m = FilePath -> FilePath -> m () - -fileFilter :: (Editable a, Editable b, MonadIO m) => - (FilePath -> FilePath) -> (a -> m b) -> EditionProcess m -fileFilter fixFormat transform target input = ---(|->) (Editor {transform, outputFormat}) target input = - liftIO (Text.readFile input) - >>= transform . enter - >>= liftIO . Text.writeFile output . leave - where - output = fixFormat $ replaceDirectory input target - -(<>.) :: (Editable a, Editable b, MonadIO m) => - (a -> m b) -> String -> EditionProcess m -(<>.) transform extension = fileFilter (`replaceExtension` extension) transform - -editor :: (Editable a, Editable b, MonadIO m) => - (a -> m b) -> EditionProcess m -editor = fileFilter id - -{- -run :: (Editable a, Editable b, MonadIO m) => Filter m a b -> FilePath -> FilePath -> m () -run = (|->) - -(|->) :: (Editable a, Editable b, MonadIO m) => Filter m a b -> FilePath -> FilePath -> m () ---(|->) :: (Editable a, MonadIO m) => Editor m a -> FilePath -> FilePath -> m () -(|->) (Filter {transform, outputFormat}) target input = ---(|->) (Editor {transform, outputFormat}) target input = - liftIO (Text.readFile input) - >>= transform . enter - >>= liftIO . Text.writeFile output . leave - where - fixFormat = maybe id (flip replaceExtension) outputFormat - output = fixFormat $ replaceDirectory input target - -runAll :: (Editable a, Foldable t, MonadIO m) => Editor m a -> FilePath -> t FilePath -> m () -runAll = (|=>) - --- (|=>) :: (Editable a, MonadIO m) => Editor m a -> FilePath -> String -> m () -(|=>) :: (Editable a, Foldable t, MonadIO m) => Editor m a -> FilePath -> t FilePath -> m () ---editor |=> target = mapM_ (editor |-> target) . Prelude.lines -editor |=> target = mapM_ (editor |-> target) --} - -stdinList :: MonadIO m => m [FilePath] -stdinList = Prelude.lines <$> liftIO getContents diff --git a/lib/Text/Editor.hs b/lib/Text/Editor.hs deleted file mode 100644 index 2d7a68b4447b13825f0cf53deb0b8a28f394040b..0000000000000000000000000000000000000000 --- a/lib/Text/Editor.hs +++ /dev/null @@ -1,47 +0,0 @@ -{-# LANGUAGE FlexibleInstances, NamedFieldPuns, OverloadedStrings #-} -module Text.Editor ( - Editable(..) - , (<>.) - , apply - , fileFilter - , xargs - ) where - -import Control.Monad.IO.Class (MonadIO(..)) -import Data.ByteString.Lazy as BS (ByteString, pack, unpack) -import Data.Text as Text (Text, intercalate, lines, pack, unpack) -import Data.Text.IO as Text (readFile, writeFile) -import System.FilePath (replaceDirectory, replaceExtension) - -class Editable a where - enter :: Text -> a - leave :: a -> Text - -instance Editable [Text] where - enter = Text.lines - leave = Text.intercalate "\n" - -instance Editable String where - enter = Text.unpack - leave = Text.pack - -type Editor m = FilePath -> FilePath -> m () - -fileFilter :: (Editable a, Editable b, MonadIO m) => - (FilePath -> FilePath) -> (a -> m b) -> Editor m -fileFilter fixFormat transform target input = - liftIO (Text.readFile input) - >>= transform . enter - >>= liftIO . Text.writeFile output . leave - where - output = fixFormat $ replaceDirectory input target - -(<>.) :: (Editable a, Editable b, MonadIO m) => (a -> m b) -> String -> Editor m -(<>.) transform extension = fileFilter (`replaceExtension` extension) transform - -apply :: (Editable a, Editable b, MonadIO m) => (a -> m b) -> Editor m -apply = fileFilter id - -xargs :: (Editable a, Editable b, MonadIO m) => (a -> m b) -> FilePath -> m () -xargs transform target = - Prelude.lines <$> liftIO getContents >>= mapM_ (apply transform target)