Skip to content

Commit d80f3d5

Browse files
committed
Re-export some Data.Text modules for the purpose of downstream libraries being able to write code compatible with the fake text module
1 parent d155e79 commit d80f3d5

File tree

9 files changed

+75
-12
lines changed

9 files changed

+75
-12
lines changed

prettyprinter/bench/LargeOutput.hs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
{-# LANGUAGE DeriveGeneric #-}
2-
{-# LANGUAGE OverloadedStrings #-}
1+
{-# LANGUAGE DeriveGeneric #-}
2+
{-# LANGUAGE FlexibleInstances #-}
3+
{-# LANGUAGE OverloadedStrings #-}
4+
{-# LANGUAGE TypeSynonymInstances #-}
35

46
{-# OPTIONS_GHC -fno-warn-orphans #-}
57

@@ -13,10 +15,10 @@ import Control.Monad.Compat
1315
import Data.Char
1416
import Data.Map (Map)
1517
import qualified Data.Map as M
16-
import Data.Text (Text)
17-
import qualified Data.Text as T
18-
import qualified Data.Text.IO as T
19-
import qualified Data.Text.Lazy as TL
18+
import Prettyprinter.Util.Compat.Text (Text)
19+
import qualified Prettyprinter.Util.Compat.Text as T
20+
import qualified Prettyprinter.Util.Compat.Text.IO as T
21+
import qualified Prettyprinter.Util.Compat.Text.Lazy as TL
2022
import Prettyprinter
2123
import Prettyprinter.Render.Text
2224
import GHC.Generics

prettyprinter/prettyprinter.cabal

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ library
3636
, Prettyprinter.Render.Util.SimpleDocTree
3737
, Prettyprinter.Render.Util.StackMachine
3838
, Prettyprinter.Util
39+
, Prettyprinter.Util.Compat.Text
40+
, Prettyprinter.Util.Compat.Text.IO
41+
, Prettyprinter.Util.Compat.Text.Lazy
42+
, Prettyprinter.Util.Compat.Text.Lazy.Builder
3943

4044
, Prettyprinter.Symbols.Unicode
4145
, Prettyprinter.Symbols.Ascii

prettyprinter/src-text/Data/Text/Lazy.hs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,5 @@ type Text = T.Text
1313
length = T.length
1414
lines = T.lines
1515
toStrict = id
16+
pack = T.pack
17+
unpack = T.unpack

prettyprinter/src-text/Data/Text/Lazy/Builder.hs

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,24 @@
77

88
module Data.Text.Lazy.Builder where
99

10-
type Builder = String
11-
fromText = id
12-
singleton = (:[])
13-
toLazyText = id
10+
import Data.String (IsString (..))
11+
12+
newtype Builder = Builder (String -> String)
13+
14+
instance IsString Builder where
15+
fromString s = Builder (s ++)
16+
17+
instance Semigroup Builder where
18+
Builder a <> Builder b = Builder (a . b)
19+
20+
instance Monoid Builder where
21+
mempty = Builder id
22+
23+
fromText :: String -> Builder
24+
fromText t = Builder (t ++)
25+
26+
singleton :: Char -> Builder
27+
singleton c = Builder ([c] ++)
28+
29+
toLazyText :: Builder -> String
30+
toLazyText (Builder b) = b ""

prettyprinter/src/Prettyprinter/Render/Text.hs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,8 @@
44

55
-- | Render an unannotated 'SimpleDocStream' as plain 'Text'.
66
module Prettyprinter.Render.Text (
7-
#ifdef MIN_VERSION_text
87
-- * Conversion to plain 'Text'
98
renderLazy, renderStrict,
10-
#endif
119

1210
-- * Render to a 'Handle'
1311
renderIO,
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
-- | This module is for use by packages that need to be able to use the prettyprinter package
2+
-- without incurring a dependency on the text package.
3+
--
4+
-- Legitimate examples of packages that must have text as an optional dependency, include text (or
5+
-- bytetring).
6+
module Prettyprinter.Util.Compat.Text
7+
( module Data.Text
8+
) where
9+
10+
import Data.Text
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
-- | This module is for use by packages that need to be able to use the prettyprinter package
2+
-- without incurring a dependency on the text package.
3+
--
4+
-- Legitimate examples of packages that must have text as an optional dependency, include text (or
5+
-- bytetring).
6+
module Prettyprinter.Util.Compat.Text.IO
7+
( module Data.Text.IO
8+
) where
9+
10+
import Data.Text.IO
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
-- | This module is for use by packages that need to be able to use the prettyprinter package
2+
-- without incurring a dependency on the text package.
3+
--
4+
-- Legitimate examples of packages that must have text as an optional dependency, include text (or
5+
-- bytetring).
6+
module Prettyprinter.Util.Compat.Text.Lazy
7+
( module Data.Text.Lazy
8+
) where
9+
10+
import Data.Text.Lazy
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
-- | This module is for use by packages that need to be able to use the prettyprinter package
2+
-- without incurring a dependency on the text package.
3+
--
4+
-- Legitimate examples of packages that must have text as an optional dependency, include text (or
5+
-- bytetring).
6+
module Prettyprinter.Util.Compat.Text.Lazy.Builder
7+
( module Data.Text.Lazy.Builder
8+
) where
9+
10+
import Data.Text.Lazy.Builder

0 commit comments

Comments
 (0)