module Iri.Rendering.Ptr.Poke where

import Iri.Prelude
import Ptr.Poke

{-# NOINLINE urlEncodedByte #-}
urlEncodedByte :: Poke Word8
urlEncodedByte :: Poke Word8
urlEncodedByte =
  (Word8 -> (Char, Word8)) -> Poke Char -> Poke Word8 -> Poke Word8
forall a b c. (a -> (b, c)) -> Poke b -> Poke c -> Poke a
forall (f :: * -> *) a b c.
Divisible f =>
(a -> (b, c)) -> f b -> f c -> f a
divide
    (\Word8
byte -> (Char
'%', Word8
byte))
    Poke Char
asciiChar
    ((Word8 -> (Word8, Word8)) -> Poke Word8 -> Poke Word8 -> Poke Word8
forall a b c. (a -> (b, c)) -> Poke b -> Poke c -> Poke a
forall (f :: * -> *) a b c.
Divisible f =>
(a -> (b, c)) -> f b -> f c -> f a
divide ((Word8 -> Word8 -> (Word8, Word8))
-> Word8 -> Word8 -> (Word8, Word8)
forall a b c. (a -> b -> c) -> b -> a -> c
flip Word8 -> Word8 -> (Word8, Word8)
forall a. Integral a => a -> a -> (a, a)
divMod Word8
16) Poke Word8
asciiHexDigit Poke Word8
asciiHexDigit)