-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Parsing & Quasiquoting for RFC 6570 URI Templates
--   
--   Parsing &amp; Quasiquoting for RFC 6570 URI Templates
@package uri-templater
@version 0.3.1.0

module Network.URI.Template.Types
data Single
data Associative
data List

-- | All values must reduce to a single value pair, an associative list of
--   keys and values, or a list of values without keys.
data TemplateValue a
[Single] :: String -> TemplateValue Single
[Associative] :: [(TemplateValue Single, TemplateValue Single)] -> TemplateValue Associative
[List] :: [TemplateValue Single] -> TemplateValue List
data WrappedValue
[WrappedValue] :: TemplateValue a -> WrappedValue

-- | A simple wrapper for interpolating Haskell 98 strings into templates.
newtype TemplateString
String :: String -> TemplateString
[fromString] :: TemplateString -> String

-- | A simple list of key value pairs. Useful when you want to be able to
--   have multiple duplicate keys, which <tt>Map</tt> and <tt>HashMap</tt>
--   don't support.
newtype AList k v
AList :: [(k, v)] -> AList k v
[fromAList] :: AList k v -> [(k, v)]
class ToTemplateValue a where {
    type family TemplateRep a :: *;
    type TemplateRep a = Single;
}
toTemplateValue :: ToTemplateValue a => a -> TemplateValue (TemplateRep a)
timeToString :: FormatTime t => String -> t -> String
data ValueModifier
Normal :: ValueModifier
Explode :: ValueModifier
MaxLength :: Int -> ValueModifier
data Variable
Variable :: String -> ValueModifier -> Variable
[variableName] :: Variable -> String
[variableValueModifier] :: Variable -> ValueModifier
data TemplateSegment

-- | A literal string. No URI escaping will be performed
Literal :: String -> TemplateSegment

-- | An interpolation can have multiple variables (separated by commas in
--   the textual format)
Embed :: Modifier -> [Variable] -> TemplateSegment

-- | A URI template is fundamentally a bunch of segments that are either
--   constants or else an interpolation
type UriTemplate = [TemplateSegment]

-- | How an interpolated value should be rendered
data Modifier

-- | No prefix
Simple :: Modifier

-- | Prefixed by <tt>+</tt>
Reserved :: Modifier

-- | Prefixed by <tt>#</tt>
Fragment :: Modifier

-- | Prefixed by <tt>.</tt>
Label :: Modifier

-- | Prefixed by <tt>/</tt>
PathSegment :: Modifier

-- | Prefixed by <tt>;</tt>
PathParameter :: Modifier

-- | Prefixed by <tt>?</tt>
Query :: Modifier

-- | Prefixed by <tt>&amp;</tt>
QueryContinuation :: Modifier
instance GHC.Classes.Eq Network.URI.Template.Types.TemplateSegment
instance GHC.Show.Show Network.URI.Template.Types.TemplateSegment
instance GHC.Read.Read Network.URI.Template.Types.TemplateSegment
instance GHC.Classes.Eq Network.URI.Template.Types.Modifier
instance GHC.Show.Show Network.URI.Template.Types.Modifier
instance GHC.Read.Read Network.URI.Template.Types.Modifier
instance GHC.Classes.Eq Network.URI.Template.Types.Variable
instance GHC.Show.Show Network.URI.Template.Types.Variable
instance GHC.Read.Read Network.URI.Template.Types.Variable
instance GHC.Classes.Eq Network.URI.Template.Types.ValueModifier
instance GHC.Show.Show Network.URI.Template.Types.ValueModifier
instance GHC.Read.Read Network.URI.Template.Types.ValueModifier
instance (GHC.Classes.Eq k, GHC.Classes.Eq v) => GHC.Classes.Eq (Network.URI.Template.Types.AList k v)
instance (GHC.Show.Show k, GHC.Show.Show v) => GHC.Show.Show (Network.URI.Template.Types.AList k v)
instance (GHC.Read.Read k, GHC.Read.Read v) => GHC.Read.Read (Network.URI.Template.Types.AList k v)
instance Data.String.IsString Network.URI.Template.Types.TemplateString
instance GHC.Classes.Eq Network.URI.Template.Types.TemplateString
instance GHC.Show.Show Network.URI.Template.Types.TemplateString
instance GHC.Read.Read Network.URI.Template.Types.TemplateString
instance Network.URI.Template.Types.ToTemplateValue ()
instance Network.URI.Template.Types.ToTemplateValue GHC.Types.Bool
instance Network.URI.Template.Types.ToTemplateValue GHC.Types.Int
instance Network.URI.Template.Types.ToTemplateValue GHC.Integer.Type.Integer
instance Network.URI.Template.Types.ToTemplateValue GHC.Natural.Natural
instance Network.URI.Template.Types.ToTemplateValue GHC.Types.Double
instance Network.URI.Template.Types.ToTemplateValue GHC.Types.Float
instance Network.URI.Template.Types.ToTemplateValue GHC.Int.Int8
instance Network.URI.Template.Types.ToTemplateValue GHC.Int.Int16
instance Network.URI.Template.Types.ToTemplateValue GHC.Int.Int32
instance Network.URI.Template.Types.ToTemplateValue GHC.Int.Int64
instance Network.URI.Template.Types.ToTemplateValue GHC.Types.Word
instance Network.URI.Template.Types.ToTemplateValue GHC.Word.Word8
instance Network.URI.Template.Types.ToTemplateValue GHC.Word.Word16
instance Network.URI.Template.Types.ToTemplateValue GHC.Word.Word32
instance Network.URI.Template.Types.ToTemplateValue GHC.Word.Word64
instance Network.URI.Template.Types.ToTemplateValue Network.URI.Template.Types.TemplateString
instance (Network.URI.Template.Types.ToTemplateValue a, Network.URI.Template.Types.TemplateRep a ~ Network.URI.Template.Types.Single) => Network.URI.Template.Types.ToTemplateValue (Data.Semigroup.Internal.Dual a)
instance (Network.URI.Template.Types.ToTemplateValue a, Network.URI.Template.Types.TemplateRep a ~ Network.URI.Template.Types.Single) => Network.URI.Template.Types.ToTemplateValue (Data.Semigroup.Internal.Sum a)
instance (Network.URI.Template.Types.ToTemplateValue a, Network.URI.Template.Types.TemplateRep a ~ Network.URI.Template.Types.Single) => Network.URI.Template.Types.ToTemplateValue (Data.Semigroup.Internal.Product a)
instance (Network.URI.Template.Types.ToTemplateValue a, Network.URI.Template.Types.TemplateRep a ~ Network.URI.Template.Types.Single) => Network.URI.Template.Types.ToTemplateValue (Data.Monoid.First a)
instance (Network.URI.Template.Types.ToTemplateValue a, Network.URI.Template.Types.TemplateRep a ~ Network.URI.Template.Types.Single) => Network.URI.Template.Types.ToTemplateValue (Data.Monoid.Last a)
instance Network.URI.Template.Types.ToTemplateValue Data.Semigroup.Internal.All
instance Network.URI.Template.Types.ToTemplateValue Data.Semigroup.Internal.Any
instance Network.URI.Template.Types.ToTemplateValue Data.UUID.Types.Internal.UUID
instance Network.URI.Template.Types.ToTemplateValue Data.Time.Clock.Internal.UTCTime.UTCTime
instance Network.URI.Template.Types.ToTemplateValue Data.Time.Clock.Internal.NominalDiffTime.NominalDiffTime
instance Network.URI.Template.Types.ToTemplateValue Data.Time.LocalTime.Internal.LocalTime.LocalTime
instance Network.URI.Template.Types.ToTemplateValue Data.Time.LocalTime.Internal.ZonedTime.ZonedTime
instance Network.URI.Template.Types.ToTemplateValue Data.Time.LocalTime.Internal.TimeOfDay.TimeOfDay
instance Network.URI.Template.Types.ToTemplateValue Data.Time.Calendar.Days.Day
instance Network.URI.Template.Types.ToTemplateValue Data.Version.Version
instance Network.URI.Template.Types.ToTemplateValue GHC.Types.Ordering
instance (Network.URI.Template.Types.ToTemplateValue a, Network.URI.Template.Types.ToTemplateValue b, Network.URI.Template.Types.TemplateRep a ~ Network.URI.Template.Types.Single, Network.URI.Template.Types.TemplateRep b ~ Network.URI.Template.Types.Single) => Network.URI.Template.Types.ToTemplateValue (Data.Either.Either a b)
instance (Network.URI.Template.Types.ToTemplateValue a, Network.URI.Template.Types.TemplateRep a ~ Network.URI.Template.Types.Single) => Network.URI.Template.Types.ToTemplateValue [a]
instance (Network.URI.Template.Types.ToTemplateValue a, Network.URI.Template.Types.TemplateRep a ~ Network.URI.Template.Types.Single) => Network.URI.Template.Types.ToTemplateValue (GHC.Base.NonEmpty a)
instance (Network.URI.Template.Types.ToTemplateValue k, Network.URI.Template.Types.TemplateRep k ~ Network.URI.Template.Types.Single, Network.URI.Template.Types.ToTemplateValue v, Network.URI.Template.Types.TemplateRep v ~ Network.URI.Template.Types.Single) => Network.URI.Template.Types.ToTemplateValue (Network.URI.Template.Types.AList k v)
instance (Network.URI.Template.Types.ToTemplateValue a, Network.URI.Template.Types.TemplateRep a ~ Network.URI.Template.Types.Single) => Network.URI.Template.Types.ToTemplateValue (Data.Vector.Vector a)
instance Network.URI.Template.Types.ToTemplateValue Data.Text.Internal.Text
instance Network.URI.Template.Types.ToTemplateValue Data.Text.Internal.Lazy.Text
instance (Network.URI.Template.Types.ToTemplateValue a, Network.URI.Template.Types.TemplateRep a ~ Network.URI.Template.Types.Single) => Network.URI.Template.Types.ToTemplateValue (GHC.Base.Maybe a)
instance (Network.URI.Template.Types.ToTemplateValue k, Network.URI.Template.Types.TemplateRep k ~ Network.URI.Template.Types.Single, Network.URI.Template.Types.ToTemplateValue v, Network.URI.Template.Types.TemplateRep v ~ Network.URI.Template.Types.Single) => Network.URI.Template.Types.ToTemplateValue (Data.HashMap.Base.HashMap k v)
instance (Network.URI.Template.Types.ToTemplateValue k, Network.URI.Template.Types.TemplateRep k ~ Network.URI.Template.Types.Single, Network.URI.Template.Types.ToTemplateValue v, Network.URI.Template.Types.TemplateRep v ~ Network.URI.Template.Types.Single) => Network.URI.Template.Types.ToTemplateValue (Data.Map.Internal.Map k v)
instance Network.URI.Template.Types.ToTemplateValue a => Network.URI.Template.Types.ToTemplateValue (Data.Functor.Identity.Identity a)
instance (Network.URI.Template.Types.ToTemplateValue a, Network.URI.Template.Types.TemplateRep a ~ Network.URI.Template.Types.Single, Network.URI.Template.Types.ToTemplateValue b, Network.URI.Template.Types.TemplateRep b ~ Network.URI.Template.Types.Single) => Network.URI.Template.Types.ToTemplateValue (a, b)
instance (Network.URI.Template.Types.ToTemplateValue a, Network.URI.Template.Types.TemplateRep a ~ Network.URI.Template.Types.Single, Network.URI.Template.Types.ToTemplateValue b, Network.URI.Template.Types.TemplateRep b ~ Network.URI.Template.Types.Single, Network.URI.Template.Types.ToTemplateValue c, Network.URI.Template.Types.TemplateRep c ~ Network.URI.Template.Types.Single) => Network.URI.Template.Types.ToTemplateValue (a, b, c)
instance (Network.URI.Template.Types.ToTemplateValue a, Network.URI.Template.Types.TemplateRep a ~ Network.URI.Template.Types.Single, Network.URI.Template.Types.ToTemplateValue b, Network.URI.Template.Types.TemplateRep b ~ Network.URI.Template.Types.Single, Network.URI.Template.Types.ToTemplateValue c, Network.URI.Template.Types.TemplateRep c ~ Network.URI.Template.Types.Single, Network.URI.Template.Types.ToTemplateValue d, Network.URI.Template.Types.TemplateRep d ~ Network.URI.Template.Types.Single) => Network.URI.Template.Types.ToTemplateValue (a, b, c, d)
instance (Network.URI.Template.Types.ToTemplateValue a, Network.URI.Template.Types.TemplateRep a ~ Network.URI.Template.Types.Single, Network.URI.Template.Types.ToTemplateValue b, Network.URI.Template.Types.TemplateRep b ~ Network.URI.Template.Types.Single, Network.URI.Template.Types.ToTemplateValue c, Network.URI.Template.Types.TemplateRep c ~ Network.URI.Template.Types.Single, Network.URI.Template.Types.ToTemplateValue d, Network.URI.Template.Types.TemplateRep d ~ Network.URI.Template.Types.Single, Network.URI.Template.Types.ToTemplateValue e, Network.URI.Template.Types.TemplateRep e ~ Network.URI.Template.Types.Single) => Network.URI.Template.Types.ToTemplateValue (a, b, c, d, e)
instance (Network.URI.Template.Types.ToTemplateValue a, Network.URI.Template.Types.TemplateRep a ~ Network.URI.Template.Types.Single, Network.URI.Template.Types.ToTemplateValue b, Network.URI.Template.Types.TemplateRep b ~ Network.URI.Template.Types.Single, Network.URI.Template.Types.ToTemplateValue c, Network.URI.Template.Types.TemplateRep c ~ Network.URI.Template.Types.Single, Network.URI.Template.Types.ToTemplateValue d, Network.URI.Template.Types.TemplateRep d ~ Network.URI.Template.Types.Single, Network.URI.Template.Types.ToTemplateValue e, Network.URI.Template.Types.TemplateRep e ~ Network.URI.Template.Types.Single, Network.URI.Template.Types.ToTemplateValue f, Network.URI.Template.Types.TemplateRep f ~ Network.URI.Template.Types.Single) => Network.URI.Template.Types.ToTemplateValue (a, b, c, d, e, f)
instance (Network.URI.Template.Types.ToTemplateValue a, Network.URI.Template.Types.TemplateRep a ~ Network.URI.Template.Types.Single, Network.URI.Template.Types.ToTemplateValue b, Network.URI.Template.Types.TemplateRep b ~ Network.URI.Template.Types.Single, Network.URI.Template.Types.ToTemplateValue c, Network.URI.Template.Types.TemplateRep c ~ Network.URI.Template.Types.Single, Network.URI.Template.Types.ToTemplateValue d, Network.URI.Template.Types.TemplateRep d ~ Network.URI.Template.Types.Single, Network.URI.Template.Types.ToTemplateValue e, Network.URI.Template.Types.TemplateRep e ~ Network.URI.Template.Types.Single, Network.URI.Template.Types.ToTemplateValue f, Network.URI.Template.Types.TemplateRep f ~ Network.URI.Template.Types.Single, Network.URI.Template.Types.ToTemplateValue g, Network.URI.Template.Types.TemplateRep g ~ Network.URI.Template.Types.Single) => Network.URI.Template.Types.ToTemplateValue (a, b, c, d, e, f, g)
instance GHC.Show.Show (Network.URI.Template.Types.TemplateValue a)

module Network.URI.Template.Parser
range :: Char -> Char -> Parser Char
ranges :: [(Char, Char)] -> Parser Char
ucschar :: Parser Char
iprivate :: Parser Char
pctEncoded :: Parser String
literalChar :: Parser Char
literal :: Parser TemplateSegment
variables :: Parser TemplateSegment
means :: Parser a -> b -> Parser b
charMeans :: () => Char -> b -> Parser b
modifier :: Parser Modifier
variable :: Parser Variable
embed :: Parser TemplateSegment
uriTemplate :: Parser UriTemplate
parseTemplate :: String -> Either Doc UriTemplate

module Network.URI.Template.Internal
class Monoid (Builder a) => Buildable a where {
    type family Builder a;
}

-- | Convert the intermediate output into the end result
build :: Buildable a => Builder a -> a

-- | Construct an appendable character representation
addChar :: Buildable a => Proxy a -> Char -> Builder a

-- | Construct an appendable string representation
addString :: Buildable a => Proxy a -> String -> Builder a
data Allow
Unreserved :: Allow
UnreservedOrReserved :: Allow
allowEncoder :: Allow -> String -> String
data ProcessingOptions
ProcessingOptions :: Maybe Char -> Char -> Bool -> Maybe Char -> Allow -> ProcessingOptions
[modifierPrefix] :: ProcessingOptions -> Maybe Char
[modifierSeparator] :: ProcessingOptions -> Char
[modifierSupportsNamed] :: ProcessingOptions -> Bool
[modifierIfEmpty] :: ProcessingOptions -> Maybe Char
[modifierAllow] :: ProcessingOptions -> Allow
type BoundValue = (String, WrappedValue)
option :: Maybe Char -> Char -> Bool -> Maybe Char -> Allow -> ProcessingOptions
options :: Modifier -> ProcessingOptions
templateValueIsEmpty :: TemplateValue a -> Bool
namePrefix :: forall str a. (Buildable str) => Proxy str -> ProcessingOptions -> String -> TemplateValue a -> Builder str
whenM :: Monoid m => Bool -> m -> m
processVariable :: forall str. (Buildable str) => Proxy str -> Modifier -> Bool -> Variable -> WrappedValue -> Builder str
processVariables :: forall str. (Buildable str) => Proxy str -> [(String, WrappedValue)] -> Modifier -> [Variable] -> Builder str
render :: (Buildable str) => UriTemplate -> [BoundValue] -> str
render' :: forall str. (Buildable str) => UriTemplate -> [BoundValue] -> str
instance Network.URI.Template.Internal.Buildable GHC.Base.String
instance Network.URI.Template.Internal.Buildable Data.ByteString.Internal.ByteString
instance Network.URI.Template.Internal.Buildable Data.ByteString.Lazy.Internal.ByteString
instance Network.URI.Template.Internal.Buildable Data.Text.Internal.Text
instance Network.URI.Template.Internal.Buildable Data.Text.Internal.Lazy.Text
instance Network.URI.Template.Internal.Buildable Data.ByteString.Builder.Internal.Builder
instance Network.URI.Template.Internal.Buildable Data.Text.Internal.Builder.Builder

module Network.URI.Template.TH
variableNames :: UriTemplate -> [String]
segmentToExpr :: TemplateSegment -> Q Exp
templateToExp :: UriTemplate -> Q Exp
quasiEval :: String -> Q Exp

-- | URI quasiquoter. Can only be used in expressions, not for top-level
--   declarations
uri :: QuasiQuoter


-- | RFC 6570 URI templates are a convenient mechanism for constructing
--   URIs in a standardized way. They provide the ability to escape the
--   interpolated values appropriately, format them for the appropriate
--   part of the URI, and can handle list-like (<tt>[]</tt>,
--   <tt>Vector</tt>) and associative inputs (such as associative lists,
--   <tt>Map</tt>s, <tt>HashMap</tt>s).
--   
--   This implementation supports outputting these URI fragments to all
--   widely-used textual/bytestring formats, and provides basic facilities
--   for extending the URI rendering to support other output formats.
module Network.URI.Template

-- | URI quasiquoter. Can only be used in expressions, not for top-level
--   declarations
uri :: QuasiQuoter
render :: (Buildable str) => UriTemplate -> [BoundValue] -> str
class ToTemplateValue a where {
    type family TemplateRep a :: *;
    type TemplateRep a = Single;
}
toTemplateValue :: ToTemplateValue a => a -> TemplateValue (TemplateRep a)

-- | A simple list of key value pairs. Useful when you want to be able to
--   have multiple duplicate keys, which <tt>Map</tt> and <tt>HashMap</tt>
--   don't support.
newtype AList k v
AList :: [(k, v)] -> AList k v
[fromAList] :: AList k v -> [(k, v)]

-- | A simple wrapper for interpolating Haskell 98 strings into templates.
newtype TemplateString
String :: String -> TemplateString
[fromString] :: TemplateString -> String
parseTemplate :: String -> Either Doc UriTemplate

-- | A URI template is fundamentally a bunch of segments that are either
--   constants or else an interpolation
type UriTemplate = [TemplateSegment]
data TemplateSegment

-- | A literal string. No URI escaping will be performed
Literal :: String -> TemplateSegment

-- | An interpolation can have multiple variables (separated by commas in
--   the textual format)
Embed :: Modifier -> [Variable] -> TemplateSegment

-- | How an interpolated value should be rendered
data Modifier

-- | No prefix
Simple :: Modifier

-- | Prefixed by <tt>+</tt>
Reserved :: Modifier

-- | Prefixed by <tt>#</tt>
Fragment :: Modifier

-- | Prefixed by <tt>.</tt>
Label :: Modifier

-- | Prefixed by <tt>/</tt>
PathSegment :: Modifier

-- | Prefixed by <tt>;</tt>
PathParameter :: Modifier

-- | Prefixed by <tt>?</tt>
Query :: Modifier

-- | Prefixed by <tt>&amp;</tt>
QueryContinuation :: Modifier
data ValueModifier
Normal :: ValueModifier
Explode :: ValueModifier
MaxLength :: Int -> ValueModifier

-- | All values must reduce to a single value pair, an associative list of
--   keys and values, or a list of values without keys.
data TemplateValue a
[Single] :: String -> TemplateValue Single
[Associative] :: [(TemplateValue Single, TemplateValue Single)] -> TemplateValue Associative
[List] :: [TemplateValue Single] -> TemplateValue List
class Monoid (Builder a) => Buildable a where {
    type family Builder a;
}

-- | Convert the intermediate output into the end result
build :: Buildable a => Builder a -> a

-- | Construct an appendable character representation
addChar :: Buildable a => Proxy a -> Char -> Builder a

-- | Construct an appendable string representation
addString :: Buildable a => Proxy a -> String -> Builder a
