Add proper description.
authorEvgenii Akentev <i@ak3n.com>
Sun, 23 Jul 2023 15:18:22 +0000 (19:18 +0400)
committerEvgenii Akentev <i@ak3n.com>
Sun, 23 Jul 2023 15:18:22 +0000 (19:18 +0400)
CHANGELOG.md
line-indexed-cursor.cabal
src/System/IO/LineIndexedCursor.hs
test/Main.hs

index 58eae787f83be0483d8c47119dd3b8b42a6cd4cc..14dee2e44a781b70a74f78eec30b07f0b1a2d742 100644 (file)
@@ -1,5 +1,5 @@
-# Revision history for line-indexed-file-cursor
+# Revision history for line-indexed-cursor
 
-## 0.1.0.0 -- YYYY-mm-dd
+## 0.1.0.0 -- 2023-08-23
 
 * First version. Released on an unsuspecting world.
index bdf6791cdf05dc869cbbb8c4c5e2c0d471c2b723..648c9b2ae54fa854df062e79e0c7435e5f5b9254 100644 (file)
@@ -1,6 +1,8 @@
 cabal-version:      3.0
 name:               line-indexed-cursor
 version:            0.1.0.0
+synopsis:           Line-indexed file reader.
+description:        Lazily builds the index with the line numbers while reading the file making it possible to rewind to them quickly later.
 license:            MIT
 license-file:       LICENSE
 author:             Evgenii Akentev
@@ -15,7 +17,6 @@ common warnings
       -Wincomplete-record-updates -Wredundant-constraints -Widentities
       -Wunused-packages -Wmissing-deriving-strategies
 
-
 library
     import:           warnings
     exposed-modules:  System.IO.LineIndexedCursor
index 871c23c76644b3667b5a98a7f483be7870b96090..f7200383929e75b9bf63c04b6a265f61459cffe2 100644 (file)
@@ -21,7 +21,7 @@ module System.IO.LineIndexedCursor
 import Data.Maybe (fromMaybe)
 import qualified Data.Array as A
 import Data.ByteString (ByteString, hGetLine)
-import Control.Concurrent.MVar
+import Control.Concurrent.MVar (MVar, newMVar, readMVar, modifyMVar, modifyMVar_)
 import System.IO (Handle, hTell, hSeek, SeekMode(..), hIsEOF)
 
 defaultListCapacity :: Integer
index 0d15f26324ebe4995edd89b31d56394685f4188b..2546772ec8a4d6c1cec6ae53d3bce37710017efd 100644 (file)
@@ -33,18 +33,6 @@ main = hspec $ do
           l'' <- getCurrentLine c
           l'' `shouldBe` Just "Pellentesque accumsan dolor at nisl pulvinar, ut bibendum diam egestas."
 
-          ln' <- goToLine c 3
-          ln' `shouldBe` 3
-
-          ln'' <- goToLine c 2
-          ln'' `shouldBe` 2
-
-          ln''' <- goToLine c 1
-          ln''' `shouldBe` 1
-
-          ln'''' <- goToLine c 0
-          ln'''' `shouldBe` 0
-
         it "goToLine works" $ \(_, c) -> do
           ln <- goToLine c 10
           ln `shouldBe` 10
@@ -84,7 +72,7 @@ main = hspec $ do
           s <- getCursorState c
           s `shouldBe` [0,57,117,191,244,316,384,429,511,561,616,668,715,761,799,851,907,941,981,1024,1068]
 
-        it "read line, then go to beginning and forth" $ \(_, c) -> do
+        it "read line, then go to the beginning and forth" $ \(_, c) -> do
           cln <- getCurrentLineNumber c
           cln `shouldBe` 0
 
@@ -126,3 +114,15 @@ main = hspec $ do
 
           ln'''' <- goToLine c 10
           ln'''' `shouldBe` 10
+
+          ln''''' <- goToLine c 3
+          ln''''' `shouldBe` 3
+
+          ln'''''' <- goToLine c 2
+          ln'''''' `shouldBe` 2
+
+          ln''''''' <- goToLine c 1
+          ln''''''' `shouldBe` 1
+
+          ln'''''''' <- goToLine c 0
+          ln'''''''' `shouldBe` 0
\ No newline at end of file