{- | Conversion between 'Data.Text.Text' and 'Data.JSString.JSString' -} module Data.JSString.Text ( textToJSString , textFromJSString , lazyTextToJSString , lazyTextFromJSString , textFromJSVal , lazyTextFromJSVal ) where import GHCJS.Prim.Internal (JSVal) import Data.Coerce (coerce) import qualified Data.Text as T import qualified Data.Text.Lazy as TL import Data.JSString.Internal.Type import Language.Javascript.JSaddle.Types (JSM, GHCJSPure(..)) import Language.Javascript.JSaddle.Native.Internal (valueToString) textToJSString :: T.Text -> JSString textToJSString = coerce {-# INLINE textToJSString #-} textFromJSString :: JSString -> T.Text textFromJSString = coerce {-# INLINE textFromJSString #-} lazyTextToJSString :: TL.Text -> JSString lazyTextToJSString = coerce . TL.toStrict {-# INLINE lazyTextToJSString #-} lazyTextFromJSString :: JSString -> TL.Text lazyTextFromJSString = TL.fromStrict . coerce {-# INLINE lazyTextFromJSString #-} -- | returns the empty Text if not a string textFromJSVal :: JSVal -> GHCJSPure T.Text textFromJSVal j = GHCJSPure $ textFromJSString <$> valToJSString j {-# INLINE textFromJSVal #-} -- | returns the empty Text if not a string lazyTextFromJSVal :: JSVal -> GHCJSPure TL.Text lazyTextFromJSVal j = GHCJSPure $ lazyTextFromJSString <$> valToJSString j {-# INLINE lazyTextFromJSVal #-} valToJSString :: JSVal -> JSM JSString valToJSString = valueToString {-# INLINE valToJSString #-}