module Iri.Rendering.Text.Internal where

import Iri.Data.Types
import Iri.Prelude
import Iri.Rendering.TextBuilder.Internal qualified as A
import Text.Builder qualified as B

-- | Render as a Unicode IRI text
iri :: Iri -> Text
iri :: Iri -> Text
iri = Builder -> Text
B.run (Builder -> Text) -> (Iri -> Builder) -> Iri -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Iri -> Builder
A.iri

-- | Render as a Unicode IRI text
httpIri :: HttpIri -> Text
httpIri :: HttpIri -> Text
httpIri = Builder -> Text
B.run (Builder -> Text) -> (HttpIri -> Builder) -> HttpIri -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. HttpIri -> Builder
A.httpIri

scheme :: Scheme -> Text
scheme :: Scheme -> Text
scheme = Builder -> Text
B.run (Builder -> Text) -> (Scheme -> Builder) -> Scheme -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Scheme -> Builder
A.scheme

hierarchy :: Hierarchy -> Text
hierarchy :: Hierarchy -> Text
hierarchy = Builder -> Text
B.run (Builder -> Text) -> (Hierarchy -> Builder) -> Hierarchy -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Hierarchy -> Builder
A.hierarchy

authority :: Authority -> Text
authority :: Authority -> Text
authority = Builder -> Text
B.run (Builder -> Text) -> (Authority -> Builder) -> Authority -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Authority -> Builder
A.authority

userInfo :: UserInfo -> Text
userInfo :: UserInfo -> Text
userInfo = Builder -> Text
B.run (Builder -> Text) -> (UserInfo -> Builder) -> UserInfo -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. UserInfo -> Builder
A.userInfo

host :: Host -> Text
host :: Host -> Text
host = Builder -> Text
B.run (Builder -> Text) -> (Host -> Builder) -> Host -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Host -> Builder
A.host

regName :: RegName -> Text
regName :: RegName -> Text
regName = Builder -> Text
B.run (Builder -> Text) -> (RegName -> Builder) -> RegName -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. RegName -> Builder
A.regName

domainLabel :: DomainLabel -> Text
domainLabel :: DomainLabel -> Text
domainLabel = Builder -> Text
B.run (Builder -> Text)
-> (DomainLabel -> Builder) -> DomainLabel -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. DomainLabel -> Builder
A.domainLabel

ipV4 :: IPv4 -> Text
ipV4 :: IPv4 -> Text
ipV4 = Builder -> Text
B.run (Builder -> Text) -> (IPv4 -> Builder) -> IPv4 -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. IPv4 -> Builder
A.ipV4

ipV6 :: IPv6 -> Text
ipV6 :: IPv6 -> Text
ipV6 = Builder -> Text
B.run (Builder -> Text) -> (IPv6 -> Builder) -> IPv6 -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. IPv6 -> Builder
A.ipV6

port :: Port -> Text
port :: Port -> Text
port = Builder -> Text
B.run (Builder -> Text) -> (Port -> Builder) -> Port -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Port -> Builder
A.port

path :: Path -> Text
path :: Path -> Text
path = Builder -> Text
B.run (Builder -> Text) -> (Path -> Builder) -> Path -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Path -> Builder
A.path

pathSegment :: PathSegment -> Text
pathSegment :: PathSegment -> Text
pathSegment = Builder -> Text
B.run (Builder -> Text)
-> (PathSegment -> Builder) -> PathSegment -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. PathSegment -> Builder
A.pathSegment

query :: Query -> Text
query :: Query -> Text
query = Builder -> Text
B.run (Builder -> Text) -> (Query -> Builder) -> Query -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Query -> Builder
A.query

fragment :: Fragment -> Text
fragment :: Fragment -> Text
fragment = Builder -> Text
B.run (Builder -> Text) -> (Fragment -> Builder) -> Fragment -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Fragment -> Builder
A.fragment