packages feed

hsimport 0.1 → 0.1.1

raw patch · 4 files changed

+41/−23 lines, 4 files

Files

HsImport/Args.hs view
@@ -29,5 +29,5 @@    &= helpArg [explicit, name "help", name "h"]    &= versionArg [explicit, name "version", name "v", summary versionInfo]    where-      versionInfo = "hsimport version 0.1"+      versionInfo = "hsimport version 0.1.1"       summaryInfo = ""
HsImport/Main.hs view
@@ -16,31 +16,38 @@ hsImport :: ImportSpec -> IO () hsImport spec =    case importChange (spec ^. moduleToImport) (spec ^. symbolToImport) (spec ^. parsedSrcFile) of-        ReplaceImport importDecl -> do-           let numDrops = HS.srcLine . HS.importLoc $ importDecl-               numTakes = max 0 (numDrops - 1)--           modifyImports importDecl (spec ^. sourceFile) (outputFile spec) numTakes numDrops+        ReplaceImport importDecl ->+           modifyLines $ \lines_ ->+              let importLine = HS.prettyPrint importDecl+                  numDrops   = HS.srcLine . HS.importLoc $ importDecl+                  numTakes   = max 0 (numDrops - 1)+                  in take numTakes lines_ ++ [importLine] ++ drop numDrops lines_ -        AddImport importDecl -> do-           let numTakes = HS.srcLine . HS.importLoc $ importDecl-               numDrops = numTakes+        AddImport importDecl ->+           modifyLines $ \lines_ ->+              let importLine = HS.prettyPrint importDecl+                  numTakes   = HS.srcLine . HS.importLoc $ importDecl+                  numDrops   = numTakes+                  in take numTakes lines_ ++ [importLine] ++ drop numDrops lines_ -           modifyImports importDecl (spec ^. sourceFile) (outputFile spec) numTakes numDrops+        AddImportAtEnd importDecl ->+           modifyLines $ \lines_ ->+              let importLine = HS.prettyPrint importDecl+                  in lines_ ++ [importLine]          NoImportChange            | Just saveTo <- spec ^. saveToFile -> copyFile (spec ^. sourceFile) saveTo            | otherwise                         -> return ()    where-      modifyImports importDecl inputFile outputFile numTakes numDrops = do-         file <- TIO.readFile inputFile-         let importLine = HS.prettyPrint importDecl-             lines_     = lines . T.unpack $ file-             lines_'    = take numTakes lines_ ++ [importLine] ++ drop numDrops lines_-             file'      = T.pack . unlines $ lines_'+      modifyLines f = do+         file <- TIO.readFile $ spec ^. sourceFile+         let lines_  = lines . T.unpack $ file+             lines_' = f lines_+             file'   = T.pack . unlines $ lines_' -         TIO.writeFile outputFile file'+         TIO.writeFile (outputFile spec) file' -      outputFile spec-         | Just file <- spec ^. saveToFile = file-         | otherwise                       = spec ^. sourceFile+         where+            outputFile spec+               | Just file <- spec ^. saveToFile = file+               | otherwise                       = spec ^. sourceFile
hsimport.cabal view
@@ -1,5 +1,5 @@ Name:          hsimport-Version:       0.1+Version:       0.1.1 License:       BSD3 License-file:  LICENSE Author:        Daniel Trstenjak
tests/Main.hs view
@@ -14,7 +14,8 @@  moduleTests :: TestTree moduleTests = testGroup "Module Tests"-   [ hsImportTest "ModuleTest1" "Foo.Bar" ""+   [ hsImportTest "ModuleTest0" "Foo.Bar" "" +   , hsImportTest "ModuleTest1" "Foo.Bar" ""    , hsImportTest "ModuleTest2" "Foo.Bar.Blub" ""    , hsImportTest "ModuleTest3" "Control.Monad" ""    , hsImportTest "ModuleTest4" "Ugah.Argh2" ""@@ -23,12 +24,22 @@    , hsImportTest "ModuleTest7" "Control.Monad" ""    , hsImportTest "ModuleTest8" "Control.Monad" ""    , hsImportTest "ModuleTest9" "Control.Monad" ""+   , hsImportTest "ModuleTest10" "Control.Monad" ""+   , hsImportTest "ModuleTest11" "Control.Monad" ""+   , hsImportTest "ModuleTest12" "Control.Monad" ""+   , hsImportTest "ModuleTest13" "Control.Monad" ""+   , hsImportTest "ModuleTest14" "Control.Monad" ""+   , hsImportTest "ModuleTest15" "Control.Monad" ""+   , hsImportTest "ModuleTest16" "Control.Monad" ""+   , hsImportTest "ModuleTest17" "Control.Monad" ""+   , hsImportTest "ModuleTest18" "Control.Monad" ""    ]   symbolTests :: TestTree symbolTests = testGroup "Symbol Tests"-   [ hsImportTest "SymbolTest1" "Foo.Bar" "foo"+   [ hsImportTest "SymbolTest0" "Foo.Bar" "foo"+   , hsImportTest "SymbolTest1" "Foo.Bar" "foo"    , hsImportTest "SymbolTest2" "Foo.Bar.Blub" "foo"    , hsImportTest "SymbolTest3" "Control.Monad" "when"    , hsImportTest "SymbolTest4" "Ugah.Argh2" "argh"