summaryrefslogtreecommitdiffstats
path: root/src/TextViewport/Buffer
diff options
context:
space:
mode:
Diffstat (limited to 'src/TextViewport/Buffer')
-rw-r--r--src/TextViewport/Buffer/Buffer.hs14
-rw-r--r--src/TextViewport/Buffer/Item.hs17
2 files changed, 9 insertions, 22 deletions
diff --git a/src/TextViewport/Buffer/Buffer.hs b/src/TextViewport/Buffer/Buffer.hs
index 62ce232..53eb103 100644
--- a/src/TextViewport/Buffer/Buffer.hs
+++ b/src/TextViewport/Buffer/Buffer.hs
@@ -3,33 +3,33 @@ module TextViewport.Buffer.Buffer where
import Data.Sequence qualified as Seq
import TextViewport.Buffer.Item (Item)
-newtype Buffer a = Buffer { unBuffer :: Seq.Seq (Item a) }
+newtype Buffer a seg = Buffer { unBuffer :: Seq.Seq (Item a seg) }
deriving (Eq, Show)
-- | Build a buffer from a list
-fromList :: [Item a] -> Buffer a
+fromList :: [Item a seg] -> Buffer a seg
fromList xs = Buffer (Seq.fromList xs)
-- | Modify an item at index
-modifyItem :: Int -> (Item a -> Item a) -> Buffer a -> Buffer a
+modifyItem :: Int -> (Item a seg -> Item a seg) -> Buffer a seg -> Buffer a seg
modifyItem ix f (Buffer xs) =
Buffer (Seq.adjust' f ix xs)
-- | Insert an item
-insertItem :: Int -> Item a -> Buffer a -> Buffer a
+insertItem :: Int -> Item a seg -> Buffer a seg -> Buffer a seg
insertItem ix x (Buffer xs) =
Buffer (Seq.insertAt ix x xs)
-- | Delete an item
-deleteItem :: Int -> Buffer a -> Buffer a
+deleteItem :: Int -> Buffer a seg -> Buffer a seg
deleteItem ix (Buffer xs) =
Buffer (Seq.deleteAt ix xs)
-- | Append an item
-appendItem :: Item a -> Buffer a -> Buffer a
+appendItem :: Item a seg -> Buffer a seg -> Buffer a seg
appendItem x (Buffer xs) =
Buffer (xs Seq.|> x)
-- | Extract underlying Seq (if needed)
-toSeq :: Buffer a -> Seq.Seq (Item a)
+toSeq :: Buffer a seg -> Seq.Seq (Item a seg)
toSeq (Buffer xs) = xs
diff --git a/src/TextViewport/Buffer/Item.hs b/src/TextViewport/Buffer/Item.hs
index b5ea743..00edf7b 100644
--- a/src/TextViewport/Buffer/Item.hs
+++ b/src/TextViewport/Buffer/Item.hs
@@ -1,21 +1,8 @@
module TextViewport.Buffer.Item where
-import Data.Text (Text)
-import Data.HashMap.Strict qualified as HM
-import Text.Hyphenation qualified as H
-
-data Item a = Item
+data Item a seg = Item
{ itemText :: a
- , itemSegments :: SegmentStrategy a
+ , itemSegments :: seg
}
deriving (Eq, Show)
-
-data SegmentStrategy a
- = NoSegments
- | FixedWidthSegments
- | HyphenateSegments
- { hsLang :: H.Language
- , hsCache :: HM.HashMap a [(a, a)]
- }
- deriving (Eq, Show)