diff options
| author | tv <tv@krebsco.de> | 2026-03-09 02:25:18 +0100 |
|---|---|---|
| committer | tv <tv@krebsco.de> | 2026-03-09 02:26:50 +0100 |
| commit | 230e538e41360f2018db9a8b5274402d0b3200b6 (patch) | |
| tree | 3c7cb9e360850d0a404087a66bfb860441905a9b /src/TextViewport/Buffer | |
| parent | fdf2c5436dfea4a30af445059e77a54e14b64752 (diff) | |
generalize Item from Text to Textual
Diffstat (limited to 'src/TextViewport/Buffer')
| -rw-r--r-- | src/TextViewport/Buffer/Buffer.hs | 14 | ||||
| -rw-r--r-- | src/TextViewport/Buffer/Item.hs | 10 |
2 files changed, 12 insertions, 12 deletions
diff --git a/src/TextViewport/Buffer/Buffer.hs b/src/TextViewport/Buffer/Buffer.hs index 7b9582f..62ce232 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 = Buffer { unBuffer :: Seq.Seq Item } +newtype Buffer a = Buffer { unBuffer :: Seq.Seq (Item a) } deriving (Eq, Show) -- | Build a buffer from a list -fromList :: [Item] -> Buffer +fromList :: [Item a] -> Buffer a fromList xs = Buffer (Seq.fromList xs) -- | Modify an item at index -modifyItem :: Int -> (Item -> Item) -> Buffer -> Buffer +modifyItem :: Int -> (Item a -> Item a) -> Buffer a -> Buffer a modifyItem ix f (Buffer xs) = Buffer (Seq.adjust' f ix xs) -- | Insert an item -insertItem :: Int -> Item -> Buffer -> Buffer +insertItem :: Int -> Item a -> Buffer a -> Buffer a insertItem ix x (Buffer xs) = Buffer (Seq.insertAt ix x xs) -- | Delete an item -deleteItem :: Int -> Buffer -> Buffer +deleteItem :: Int -> Buffer a -> Buffer a deleteItem ix (Buffer xs) = Buffer (Seq.deleteAt ix xs) -- | Append an item -appendItem :: Item -> Buffer -> Buffer +appendItem :: Item a -> Buffer a -> Buffer a appendItem x (Buffer xs) = Buffer (xs Seq.|> x) -- | Extract underlying Seq (if needed) -toSeq :: Buffer -> Seq.Seq Item +toSeq :: Buffer a -> Seq.Seq (Item a) toSeq (Buffer xs) = xs diff --git a/src/TextViewport/Buffer/Item.hs b/src/TextViewport/Buffer/Item.hs index 81d18ef..b5ea743 100644 --- a/src/TextViewport/Buffer/Item.hs +++ b/src/TextViewport/Buffer/Item.hs @@ -5,17 +5,17 @@ import Data.HashMap.Strict qualified as HM import Text.Hyphenation qualified as H -data Item = Item - { itemText :: Text - , itemSegments :: SegmentStrategy +data Item a = Item + { itemText :: a + , itemSegments :: SegmentStrategy a } deriving (Eq, Show) -data SegmentStrategy +data SegmentStrategy a = NoSegments | FixedWidthSegments | HyphenateSegments { hsLang :: H.Language - , hsCache :: HM.HashMap Text [(Text, Text)] + , hsCache :: HM.HashMap a [(a, a)] } deriving (Eq, Show) |
