table-layout 1.0.0.2 → 1.0.0.3
raw patch · 28 files changed
+113/−39 lines, 28 filesdep ~QuickCheckdep ~doclayoutdep ~textsetup-changedPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: QuickCheck, doclayout, text
API changes (from Hackage documentation)
- Text.Layout.Table.LineStyle: instance Data.Default.Internal.Default Text.Layout.Table.LineStyle.LineStyle
- Text.Layout.Table.Pandoc: instance Data.Default.Internal.Default Text.Layout.Table.Pandoc.PandocSeparator
- Text.Layout.Table.Spec.AlignSpec: instance Data.Default.Internal.Default Text.Layout.Table.Spec.AlignSpec.AlignSpec
- Text.Layout.Table.Spec.ColSpec: instance Data.Default.Internal.Default Text.Layout.Table.Spec.ColSpec.ColSpec
- Text.Layout.Table.Spec.CutMark: instance Data.Default.Internal.Default Text.Layout.Table.Spec.CutMark.CutMark
- Text.Layout.Table.Spec.HeaderColSpec: instance Data.Default.Internal.Default Text.Layout.Table.Spec.HeaderColSpec.HeaderColSpec
- Text.Layout.Table.Spec.HeaderSpec: instance Data.Default.Internal.Default sep => Data.Default.Internal.Default (Text.Layout.Table.Spec.HeaderSpec.HeaderSpec sep a)
- Text.Layout.Table.Spec.LenSpec: instance Data.Default.Internal.Default Text.Layout.Table.Spec.LenSpec.LenSpec
- Text.Layout.Table.Spec.Position: instance Data.Default.Internal.Default (Text.Layout.Table.Spec.Position.Position orientation)
+ Text.Layout.Table.LineStyle: instance Data.Default.Class.Default Text.Layout.Table.LineStyle.LineStyle
+ Text.Layout.Table.Pandoc: instance Data.Default.Class.Default Text.Layout.Table.Pandoc.PandocSeparator
+ Text.Layout.Table.Spec.AlignSpec: instance Data.Default.Class.Default Text.Layout.Table.Spec.AlignSpec.AlignSpec
+ Text.Layout.Table.Spec.ColSpec: instance Data.Default.Class.Default Text.Layout.Table.Spec.ColSpec.ColSpec
+ Text.Layout.Table.Spec.CutMark: instance Data.Default.Class.Default Text.Layout.Table.Spec.CutMark.CutMark
+ Text.Layout.Table.Spec.HeaderColSpec: instance Data.Default.Class.Default Text.Layout.Table.Spec.HeaderColSpec.HeaderColSpec
+ Text.Layout.Table.Spec.HeaderSpec: instance Data.Default.Class.Default sep => Data.Default.Class.Default (Text.Layout.Table.Spec.HeaderSpec.HeaderSpec sep a)
+ Text.Layout.Table.Spec.LenSpec: instance Data.Default.Class.Default Text.Layout.Table.Spec.LenSpec.LenSpec
+ Text.Layout.Table.Spec.Position: instance Data.Default.Class.Default (Text.Layout.Table.Spec.Position.Position orientation)
Files
- CHANGELOG.md +12/−0
- Setup.hs +0/−2
- src/Text/Layout/Table.hs +1/−0
- src/Text/Layout/Table/Cell.hs +14/−7
- src/Text/Layout/Table/Cell/Formatted.hs +2/−0
- src/Text/Layout/Table/Cell/WideString.hs +4/−2
- src/Text/Layout/Table/Justify.hs +5/−3
- src/Text/Layout/Table/LineStyle.hs +6/−5
- src/Text/Layout/Table/Primitives/AlignInfo.hs +1/−0
- src/Text/Layout/Table/Primitives/Basic.hs +10/−0
- src/Text/Layout/Table/Primitives/CellMod.hs +5/−1
- src/Text/Layout/Table/Primitives/ColumnModifier.hs +3/−1
- src/Text/Layout/Table/Primitives/Header.hs +1/−0
- src/Text/Layout/Table/Primitives/Table.hs +1/−1
- src/Text/Layout/Table/Spec/AlignSpec.hs +1/−0
- src/Text/Layout/Table/Spec/ColSpec.hs +5/−0
- src/Text/Layout/Table/Spec/CutMark.hs +3/−0
- src/Text/Layout/Table/Spec/HeaderColSpec.hs +1/−0
- src/Text/Layout/Table/Spec/HeaderSpec.hs +1/−0
- src/Text/Layout/Table/Spec/LenSpec.hs +1/−0
- src/Text/Layout/Table/Spec/OccSpec.hs +2/−0
- src/Text/Layout/Table/Spec/Position.hs +6/−0
- src/Text/Layout/Table/Spec/RowGroup.hs +5/−1
- src/Text/Layout/Table/Spec/TableSpec.hs +1/−0
- src/Text/Layout/Table/Spec/Util.hs +1/−0
- src/Text/Layout/Table/StringBuilder.hs +2/−1
- src/Text/Layout/Table/Style.hs +6/−4
- table-layout.cabal +13/−11
CHANGELOG.md view
@@ -2,7 +2,19 @@ ## [Unreleased] +## [1.0.0.3] - 2026-11-07++### Added++- Add GitHub Actions continuous integration with GHC 9.14.+- Declare `hspec-discover` as an explicit test build tool.+ ### Changed++- Require Cabal 2.0 to support the explicit build-tool declaration.+- Raise the upper bounds of `doclayout` and `QuickCheck`.+- Add an upper bound for `text`.+- Improve Haddock coverage and repair documentation links. ## [1.0.0.2] - 2025-05-18
− Setup.hs
@@ -1,2 +0,0 @@-import Distribution.Simple-main = defaultMain
src/Text/Layout/Table.hs view
@@ -253,6 +253,7 @@ gridString :: Cell a => [ColSpec] -> [Row a] -> String gridString = gridStringB +-- | Concatenate rendered lines with newline characters between them. concatLines :: StringBuilder b => [b] -> b concatLines = mconcat . intersperse (charB '\n')
src/Text/Layout/Table/Cell.hs view
@@ -2,6 +2,7 @@ {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE RecordWildCards #-} +-- | Cell measurement, padding, trimming, and alignment primitives. module Text.Layout.Table.Cell where import Control.Monad (join)@@ -142,7 +143,7 @@ -- -- Used to define instances of 'Cell'. buildCellViewLRHelper :: StringBuilder b- => (a -> b) -- ^ Builder function for 'a'.+ => (a -> b) -- ^ Builder function for @a@. -> (Int -> a -> a) -- ^ Function for trimming on the left. -> (Int -> a -> a) -- ^ Function for trimming on the right. -> CellView a@@ -156,7 +157,7 @@ -- Used to define instanced of 'Cell'. buildCellViewBothHelper :: StringBuilder b- => (a -> b) -- ^ Builder function for 'a'.+ => (a -> b) -- ^ Builder function for @a@. -> (Int -> Int -> a -> a) -- ^ Function for trimming on the left and right simultaneously. -> CellView a -> b@@ -168,7 +169,7 @@ -- Used to define instances of 'Cell'. buildCellViewHelper :: StringBuilder b- => (a -> b) -- ^ Builder function for 'a'.+ => (a -> b) -- ^ Builder function for @a@. -> (Int -> a -> b) -- ^ Function for trimming on the left. -> (Int -> a -> b) -- ^ Function for trimming on the right. -> (Int -> Int -> a -> b) -- ^ Function for trimming on the left and right simultaneously.@@ -264,10 +265,10 @@ where k = visibleLength c --- | If the given text is too long, it will be trimmed to length `upper`+-- | If the given text is too long, it will be trimmed to length @upper@ -- according to the position specification, and cut marks will be added to -- indicate that the column has been trimmed in length. Otherwise, if--- the given text is too short, it will be padded to length `lower`.+-- the given text is too short, it will be padded to length @lower@. -- -- >>> let cm = singleCutMark ".." -- >>> buildCellMod cm $ trimOrPadBetween left cm 7 10 "A longer text." :: String@@ -285,8 +286,8 @@ :: Cell a => Position o -> CutMark- -> Int -- ^ The length `lower` to pad to if too short- -> Int -- ^ The length `upper` to trim to if too long+ -> Int -- ^ The length @lower@ to pad to if too short+ -> Int -- ^ The length @upper@ to trim to if too long -> a -> CellMod a trimOrPadBetween p cutMark lower upper c@@ -341,24 +342,28 @@ align oS (AlignInfo ln optRN) c = case measureAlignment (predicate oS) c of AlignInfo lk optRK -> padCell (truncateNegative $ ln - lk) (truncateNegative $ maybe 0 succ optRN - maybe 0 succ optRK) c +-- | Padding or trimming required on one side of a cell. data CutAction = FillCA Int | CutCA Int | NoneCA deriving (Eq, Show) +-- | Convert a cut action to its signed space adjustment. surplusSpace :: CutAction -> Int surplusSpace ca = case ca of CutCA n -> negate n FillCA n -> n _ -> 0 +-- | Determine how to reconcile a required width with an actual width. determineCutAction :: Int -> Int -> CutAction determineCutAction requiredW actualW = case compare requiredW actualW of LT -> CutCA $ actualW - requiredW EQ -> NoneCA GT -> FillCA $ requiredW - actualW +-- | Actions required after comparing a visible range with a cell range. data CutInfo -- | Apply a cut action to each side. = SidesCI CutAction CutAction@@ -385,6 +390,8 @@ s = surplusSpace ca r = cellLen - cutAmount +-- | Convert cut information into a concrete cell modification, distributing+-- available cut-mark space between the affected sides. applyCutInfo :: Cell a => CutInfo
src/Text/Layout/Table/Cell/Formatted.hs view
@@ -26,6 +26,8 @@ import Text.Layout.Table.Cell import Text.Layout.Table.StringBuilder +-- | Content interleaved with backend-specific prefix and suffix formatting+-- directives. data Formatted a = Empty | Concat [Formatted a]
src/Text/Layout/Table/Cell/WideString.hs view
@@ -1,6 +1,7 @@ {-# LANGUAGE GeneralisedNewtypeDeriving #-} {-# LANGUAGE MultiWayIf #-} {-# LANGUAGE OverloadedStrings #-}+-- | Cell wrappers that measure Unicode characters by display width. module Text.Layout.Table.Cell.WideString ( WideString(..) , WideText(..)@@ -13,7 +14,7 @@ import Text.Layout.Table.Cell import Text.Layout.Table.Primitives.AlignInfo --- | A newtype for String in which characters can be wider than one space.+-- | A newtype for 'String' in which characters can be wider than one space. newtype WideString = WideString String deriving (Eq, Ord, Show, Read, Semigroup, Monoid, IsString) @@ -47,7 +48,8 @@ [] -> Nothing _ : rs' -> Just $ realLength rs' --- | A newtype for Text in which characters can be wider than one space.+-- | A newtype for strict 'T.Text' in which characters can be wider than one+-- space. newtype WideText = WideText T.Text deriving (Eq, Ord, Show, Read, Semigroup, Monoid, IsString)
src/Text/Layout/Table/Justify.hs view
@@ -1,5 +1,5 @@ -- | Produce justified text, which is spread over multiple rows. For a simple--- cut, 'chunksOf' from the `split` package is best suited.+-- cut, the @chunksOf@ function from the @split@ package is best suited. {-# LANGUAGE MultiWayIf #-} {-# LANGUAGE RecordWildCards #-} module Text.Layout.Table.Justify@@ -103,8 +103,8 @@ go y [] = [g y] go y (y' : ys) = f y : go y' ys --- | Spread out spaces with different widths more evenly (in comparison to--- 'dimorphicSpaces').+-- | Spread out spaces with different widths more evenly than grouping all+-- wider spaces before the narrower ones. mixedDimorphicSpaces :: Int -> Int -> [String] mixedDimorphicSpaces = mixedDimorphicSummandsBy spaces @@ -118,6 +118,8 @@ dimorphicSummands :: Int -> Int -> [Int] dimorphicSummands = dimorphicSummandsBy id +-- | Split a number into almost-equal summands and transform each summand.+-- Larger summands precede smaller ones. dimorphicSummandsBy :: (Int -> a) -> Int -> Int -> [a] dimorphicSummandsBy _ _ 0 = [] dimorphicSummandsBy f n splits = replicate r largeS ++ replicate (splits - r) smallS
src/Text/Layout/Table/LineStyle.hs view
@@ -1,3 +1,4 @@+-- | Line styles and join characters for drawing ASCII and Unicode tables. module Text.Layout.Table.LineStyle ( -- * Line Styling LineStyle(..)@@ -217,11 +218,11 @@ -- -- Not all joins are fully supported by Unicode, and in these cases we try to -- gracefully substitute a similar character.--- - Any join consisting solely of 'NoJoin', 'Light, and 'Heavy' is fully supported.--- - Most joins consisting solely of 'NoJoin', 'Light, and 'Double' are supported.--- For those that aren't, we substitute 'Heavy' for 'Double'.--- - Any join which has both 'Heavy' and 'Double' is unsupported, and we--- substitute 'Heavy' for 'Double'.+-- - Any join consisting solely of @NoJoin@, @Light@, and @Heavy@ is fully supported.+-- - Most joins consisting solely of @NoJoin@, @Light@, and @Double@ are supported.+-- For those that aren't, we substitute @Heavy@ for @Double@.+-- - Any join which has both @Heavy@ and @Double@ is unsupported, and we+-- substitute @Heavy@ for @Double@. uJoins :: UnicodeJoin -> UnicodeJoin -> UnicodeJoin -> UnicodeJoin -> Char -- All NoJoin, 1 case uJoins NoJoin NoJoin NoJoin NoJoin = ' '
src/Text/Layout/Table/Primitives/AlignInfo.hs view
@@ -1,3 +1,4 @@+-- | Measurements used to align cells around a matching character. module Text.Layout.Table.Primitives.AlignInfo where import Data.Foldable (asum)
src/Text/Layout/Table/Primitives/Basic.hs view
@@ -29,18 +29,25 @@ import Text.Layout.Table.Spec.CutMark +-- | Produce the requested number of spaces. spaces :: Int -> String spaces = flip replicate ' ' +-- | Pad the beginning of a list to a target length, given its current length. fillStart' :: a -> Int -> Int -> [a] -> [a] fillStart' x i lenL l = replicate (i - lenL) x ++ l +-- | Pad the beginning of a list to a target length. fillStart :: a -> Int -> [a] -> [a] fillStart x i l = fillStart' x i (length l) l +-- | Pad the end of a list to a target length. fillEnd :: a -> Int -> [a] -> [a] fillEnd x i l = take i $ l ++ repeat x +-- | Pad both ends of a list to a target length, given its current length.+-- When an odd number of elements is required, the beginning receives the+-- extra element. fillBoth' :: a -> Int -> Int -> [a] -> [a] fillBoth' x i lenL l = -- Puts more on the beginning if odd.@@ -50,9 +57,11 @@ missing = i - lenL (q, r) = missing `divMod` 2 +-- | Pad both ends of a list to a target length. fillBoth :: a -> Int -> [a] -> [a] fillBoth x i l = fillBoth' x i (length l) l +-- | Pad the left of a 'String' to a target length, given its current length. fillLeft' :: Int -> Int -> String -> String fillLeft' = fillStart' ' ' @@ -64,6 +73,7 @@ fillRight :: Int -> String -> String fillRight = fillEnd ' ' +-- | Pad both sides of a 'String' to a target length, given its current length. fillCenter' :: Int -> Int -> String -> String fillCenter' = fillBoth' ' '
src/Text/Layout/Table/Primitives/CellMod.hs view
@@ -1,8 +1,9 @@ {-# LANGUAGE DeriveFunctor #-}+-- | A declarative description of padding and trimming applied to a cell. module Text.Layout.Table.Primitives.CellMod where -- | Provide all the information necessary to compare resulting dimensions and--- to turn it into a 'StringBuilder'.+-- to turn it into a string builder. data CellMod a = CellMod { baseCellCM :: a@@ -41,6 +42,8 @@ trimCellRight rightTrim rightCMLen = trimCell 0 rightTrim 0 rightCMLen +-- | Construct a cell modification with explicit adjustments and cut-mark+-- lengths for the left and right sides. modifyCellWithCutMarkLen :: Int -> Int -> Int -> Int -> a -> CellMod a modifyCellWithCutMarkLen la ra lc rc c = CellMod c la ra lc rc @@ -49,6 +52,7 @@ modifyCell :: Int -> Int -> a -> CellMod a modifyCell la ra = modifyCellWithCutMarkLen la ra 0 0 +-- | Keep a cell unchanged. keepCell :: a -> CellMod a keepCell = modifyCellWithCutMarkLen 0 0 0 0
src/Text/Layout/Table/Primitives/ColumnModifier.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE RankNTypes #-}+-- | Derivation and application of uniform column modifications. module Text.Layout.Table.Primitives.ColumnModifier where import Control.Arrow ((&&&))@@ -79,7 +80,7 @@ fitTitlesCMI = zipWith3 ensureWidthOfCMI -- | Generates a function which modifies a given cell according to--- 'Text.Layout.Table.Position.Position', 'CutMark' and 'ColModInfo'. This is+-- 'Position', 'CutMark' and 'ColModInfo'. This is -- used to modify a single cell of a column to bring all cells of a column to -- the same width. columnModifier@@ -98,6 +99,7 @@ deriveAlignInfo :: Cell a => OccSpec -> a -> AlignInfo deriveAlignInfo occSpec = measureAlignment (predicate occSpec) +-- | Extract the length and alignment policies from column specifications. unpackColSpecs :: [ColSpec] -> [(LenSpec, AlignSpec)] unpackColSpecs = fmap $ lenSpec &&& alignSpec
src/Text/Layout/Table/Primitives/Header.hs view
@@ -1,3 +1,4 @@+-- | Applying header-column specifications to derived column widths. module Text.Layout.Table.Primitives.Header where import Data.Maybe
src/Text/Layout/Table/Primitives/Table.hs view
@@ -11,7 +11,7 @@ -- | Draw a horizontal line that will use the provided delimiters around--- the content appropriately and visually separate by 'hSpace'.+-- the content appropriately and visually separate by @hSpace@. horizontalDetailLine :: StringBuilder b => String -- ^ The space characters that are used as padding.
src/Text/Layout/Table/Spec/AlignSpec.hs view
@@ -1,3 +1,4 @@+-- | Policies for aligning cells at matching characters. module Text.Layout.Table.Spec.AlignSpec ( AlignSpec(..) , noAlign
src/Text/Layout/Table/Spec/ColSpec.hs view
@@ -1,3 +1,4 @@+-- | Complete layout specifications for table columns. module Text.Layout.Table.Spec.ColSpec ( ColSpec , lenSpec@@ -23,9 +24,13 @@ data ColSpec = ColSpec { lenSpec :: LenSpec+ -- ^ Policy for choosing the column width. , position :: Position H+ -- ^ Horizontal position of cell content. , alignSpec :: AlignSpec+ -- ^ Character-alignment policy for the column. , cutMark :: CutMark+ -- ^ Marks used when cell content is trimmed. } instance Default ColSpec where
src/Text/Layout/Table/Spec/CutMark.hs view
@@ -1,4 +1,5 @@ -- TODO rename cut marks (they are too long)+-- | Cut marks used to indicate content trimmed from table cells. module Text.Layout.Table.Spec.CutMark ( CutMark , doubleCutMark@@ -17,7 +18,9 @@ data CutMark = CutMark { leftMark :: String+ -- ^ Mark displayed when content is removed from the left. , rightMark :: String+ -- ^ Mark displayed when content is removed from the right. } deriving (Show, Eq) -- | A single ellipsis unicode character is used to show cut marks.
src/Text/Layout/Table/Spec/HeaderColSpec.hs view
@@ -1,3 +1,4 @@+-- | Specifications for positioning and trimming header cells. module Text.Layout.Table.Spec.HeaderColSpec where import Data.Default.Class
src/Text/Layout/Table/Spec/HeaderSpec.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE DeriveTraversable #-} +-- | Hierarchical specifications for optional row and column headers. module Text.Layout.Table.Spec.HeaderSpec where import Data.Bifunctor
src/Text/Layout/Table/Spec/LenSpec.hs view
@@ -1,3 +1,4 @@+-- | Policies for choosing the rendered width of a column. module Text.Layout.Table.Spec.LenSpec ( LenSpec (..) , expand
src/Text/Layout/Table/Spec/OccSpec.hs view
@@ -1,3 +1,4 @@+-- | Specifications for locating an occurrence used for cell alignment. module Text.Layout.Table.Spec.OccSpec ( OccSpec , predOccSpec@@ -10,6 +11,7 @@ -- | Specifies an occurence of a letter. data OccSpec = OccSpec (Char -> Bool) Int +-- | Extract the character predicate from an occurrence specification. predicate :: OccSpec -> (Char -> Bool) predicate (OccSpec p _) = p
src/Text/Layout/Table/Spec/Position.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE EmptyDataDecls #-}+-- | Horizontal and vertical positions used when laying out cells. module Text.Layout.Table.Spec.Position where import Data.Default.Class@@ -37,17 +38,22 @@ -- | Vertical orientation. data V +-- | Position content at the left edge. left :: Position H left = Start +-- | Position content at the right edge. right :: Position H right = End +-- | Position content in the center of either orientation. center :: Position orientation center = Center +-- | Position content at the top edge. top :: Position V top = Start +-- | Position content at the bottom edge. bottom :: Position V bottom = End
src/Text/Layout/Table/Spec/RowGroup.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE DeriveFunctor #-} {-# LANGUAGE DeriveFoldable #-}+-- | Row groups and their column-oriented representations. module Text.Layout.Table.Spec.RowGroup where import Text.Layout.Table.Spec.Util@@ -36,15 +37,18 @@ r : _ -> void r [] -> [] +-- | One vertically arranged segment obtained from a particular kind of+-- 'RowGroup'. data ColumnSegment a = SingleValueSegment a | ColumnSegment (Col a) | NullableColumnSegment (Col (Maybe a)) deriving (Functor, Foldable, Eq, Show) +-- | A column split into segments that retain the grouping of its source rows. newtype SegmentedColumn a = SegmentedColumn [ColumnSegment a] deriving (Functor, Foldable, Eq, Show) --- | Break down several 'RowGroups', which conceptually form a column by+-- | Break down several 'RowGroup' values, which conceptually form a column by -- themselves, into a list of columns. transposeRowGroups :: Col (RowGroup a) -> [SegmentedColumn a] transposeRowGroups = fmap SegmentedColumn . transpose . map transposeRowGroup
src/Text/Layout/Table/Spec/TableSpec.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE RecordWildCards #-}+-- | Complete specifications combining columns, headers, style, and row groups. module Text.Layout.Table.Spec.TableSpec where import Data.Default.Class
src/Text/Layout/Table/Spec/Util.hs view
@@ -1,3 +1,4 @@+-- | List aliases used to distinguish horizontal rows from vertical columns. module Text.Layout.Table.Spec.Util where -- | An alias for lists, conceptually for values with a horizontal arrangement.
src/Text/Layout/Table/StringBuilder.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE FlexibleInstances #-}+-- | Builders used as output targets when rendering tables. module Text.Layout.Table.StringBuilder where import Data.Semigroup@@ -13,7 +14,7 @@ -- | Create a builder with a single 'Char'. charB :: Char -> a - -- | Create a builder with a 'Text'.+ -- | Create a builder with strict 'T.Text'. textB :: T.Text -> a textB = stringB . T.unpack
src/Text/Layout/Table/Style.hs view
@@ -235,19 +235,21 @@ , groupBottom = groupStyle } --- Generate an ASCII 'TableStyle' from a 'TableStyleSpec' using pluses for joins.+-- | Generate an ASCII 'TableStyle' from a 'TableStyleSpec' using pluses for+-- joins. asciiTableStyleFromSpec :: TableStyleSpec -> TableStyle LineStyle LineStyle asciiTableStyleFromSpec = tableStyleFromSpec asciiHorizontal asciiVertical asciiJoinString4 --- Generate an ASCII 'TableStyle' from a 'TableStyleSpec' using rounded joins.+-- | Generate an ASCII 'TableStyle' from a 'TableStyleSpec' using rounded+-- joins. roundedAsciiTableStyleFromSpec :: TableStyleSpec -> TableStyle LineStyle LineStyle roundedAsciiTableStyleFromSpec = tableStyleFromSpec asciiHorizontal asciiVertical roundedAsciiJoinString4 --- Generate a unicode 'TableStyle' from a 'TableStyleSpec'.+-- | Generate a Unicode 'TableStyle' from a 'TableStyleSpec'. unicodeTableStyleFromSpec :: TableStyleSpec -> TableStyle LineStyle LineStyle unicodeTableStyleFromSpec = tableStyleFromSpec unicodeHorizontal unicodeVertical unicodeJoinString4 --- | Generate a 'TableStyle from a given 'TableStyleSpec', along with functions+-- | Generate a 'TableStyle' from a given 'TableStyleSpec', along with functions -- to construct horizontal and vertical lines and joins. -- The function for constructing join strings takes its arguments in the order -- west, east, north, south.
table-layout.cabal view
@@ -6,7 +6,7 @@ -- PVP summary: +-+------- breaking API changes -- | | +----- non-breaking API additions -- | | | +--- code changes with no API change-version: 1.0.0.2+version: 1.0.0.3 synopsis: Format tabular data as grid or table. @@ -41,14 +41,15 @@ build-type: Simple -- Extra files to be distributed with the package, such as examples or a -- README.-extra-source-files: README.md, CHANGELOG.md+extra-source-files: README.md+extra-doc-files: CHANGELOG.md -- Constraint on the version of Cabal needed to build this package.-cabal-version: >=1.10+cabal-version: 2.0 source-repository head type: git- location: git://github.com/muesli4/table-layout.git+ location: https://github.com/muesli4/table-layout.git library@@ -95,8 +96,8 @@ -- Other library packages from which modules are imported. build-depends: base >=4.9 && <5, data-default-class >=0.1.2 && < 0.3,- doclayout >=0.3 && <0.6,- text+ doclayout >=0.3 && <0.7,+ text <2.2 hs-source-dirs: src @@ -107,8 +108,8 @@ main-is: Test.hs build-depends: base >=4.9 && <5, data-default-class >=0.1.2 && < 0.3,- doclayout >=0.3 && <0.6,- text+ doclayout >=0.3 && <0.7,+ text <2.2 hs-source-dirs: src other-modules: Text.Layout.Table, Text.Layout.Table.Cell,@@ -146,12 +147,13 @@ hs-source-dirs: test-suite, src main-is: Spec.hs build-depends: base >=4.9 && <5,- QuickCheck >=2.8 && < 2.16,+ QuickCheck >=2.8 && < 2.20, HUnit >=1.3, data-default-class >=0.1.2 && < 0.3,- doclayout >=0.3 && <0.6,- text,+ doclayout >=0.3 && <0.7,+ text <2.2, hspec+ build-tool-depends: hspec-discover:hspec-discover >=2 && <3 other-modules: TestSpec,