{-# language Rank2Types #-}
module Rasa.Internal.Text
  ( asText
  , asString
  , asLines
  ) where

import Control.Lens
import qualified Yi.Rope as Y
import qualified Data.Text as T

-- | An iso which converts to/from 'Y.YiString' -> Text
asText :: Iso' Y.YiString T.Text
asText = iso Y.toText Y.fromText

-- | An iso which converts to/from 'Y.YiString' -> String
asString :: Iso' Y.YiString String
asString = iso Y.toString Y.fromString


-- | An iso which converts to/from 'Y.YiString' -> ['Y.YiString']
asLines :: Iso' Y.YiString [Y.YiString]
asLines = iso Y.lines' Y.concat