diff options
| author | tv <tv@krebsco.de> | 2026-03-09 03:35:50 +0100 |
|---|---|---|
| committer | tv <tv@krebsco.de> | 2026-03-09 03:35:50 +0100 |
| commit | a648d77052f04d4731d728fc317a0947b35a3ed5 (patch) | |
| tree | 2e125e5f3a0a5d29884dcb35e729523153e00a5c /src/TextViewport/Buffer | |
| parent | bff24914f21800719c99c80165a8c3a3759311e7 (diff) | |
Diffstat (limited to 'src/TextViewport/Buffer')
| -rw-r--r-- | src/TextViewport/Buffer/Buffer.hs | 14 | ||||
| -rw-r--r-- | src/TextViewport/Buffer/Item.hs | 17 |
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) |
