lipstick-0.1.0.0: src/Lipstick/Border.hs
-- | Border character sets.
--
-- == Examples
--
-- >>> let sample b = render (border b <> marginRight 1) "text"
-- >>> putBlock (hcat (map sample [normalBorder, roundedBorder, thickBorder, doubleBorder]))
-- ┌────┐ ╭────╮ ┏━━━━┓ ╔════╗
-- │text│ │text│ ┃text┃ ║text║
-- └────┘ ╰────╯ ┗━━━━┛ ╚════╝
-- >>> putBlock (hcat (map sample [blockBorder, outerHalfBlockBorder, innerHalfBlockBorder]))
-- ██████ ▛▀▀▀▀▜ ▗▄▄▄▄▖
-- █text█ ▌text▐ ▐text▌
-- ██████ ▙▄▄▄▄▟ ▝▀▀▀▀▘
-- >>> putBlock (hcat (map sample [asciiBorder, markdownBorder, hiddenBorder]))
-- +----+ |----|
-- |text| |text| text
-- +----+ |----|
--
-- A border is a record of the pieces, so a new one is made by changing
-- some of them:
--
-- >>> let dotted = normalBorder {topEdge = "┈", bottomEdge = "┈", leftEdge = "┊", rightEdge = "┊"}
-- >>> putBlock (render (border dotted <> padding 0 1) "dotted")
-- ┌┈┈┈┈┈┈┈┈┐
-- ┊ dotted ┊
-- └┈┈┈┈┈┈┈┈┘
--
-- Tables use the @middle*@ pieces:
--
-- >>> putBlock (table (border doubleBorder) ["a", "b"] [["1", "2"]])
-- ╔═╦═╗
-- ║a║b║
-- ╠═╬═╣
-- ║1║2║
-- ╚═╩═╝
module Lipstick.Border
( Border (topEdge, bottomEdge, leftEdge, rightEdge, topLeftCorner, topRightCorner, bottomLeftCorner, bottomRightCorner, middleLeft, middleRight, middle, middleTop, middleBottom)
, normalBorder
, roundedBorder
, thickBorder
, doubleBorder
, blockBorder
, outerHalfBlockBorder
, innerHalfBlockBorder
, hiddenBorder
, asciiBorder
, markdownBorder
) where
import Lipstick.Internal.Border
-- $setup
-- >>> import Lipstick