hsimport 0.1 → 0.1.1
raw patch · 4 files changed
+41/−23 lines, 4 files
Files
- HsImport/Args.hs +1/−1
- HsImport/Main.hs +26/−19
- hsimport.cabal +1/−1
- tests/Main.hs +13/−2
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"