Как я могу обработать несколько строк вывода при запуске внешних процессов с Шелли?

Я ищу функцию типа Text -> [Text]По сути, это будет разделять текст на основе новых строк. Однако я не могу просто разделить на \n как это можно избежать, например, как в \\nЯ не уверен, какие существуют другие осложнения.

Main.hs

{-# LANGUAGE OverloadedStrings #-}

import Data.Text (Text)
import Data.Text.IO
import Shelly

example :: Sh Text
example = run "./example.sh" []

main :: IO ()
main = do
  v <- shelly example
  Data.Text.IO.putStrLn v

example.sh

echo "test1\\n"
echo "test2"
echo "test3"

Выход из ./example.sh:

test1\n
test2
test3

Так что это вывод из 3 строк.

Поддерживает ли Шелли некоторую функциональность, чтобы справиться с вышеуказанным? Или, может быть, какая-то другая библиотека на Haskell для анализа выходных данных? Я думаю, это будет выглядеть примерно так putStrLn но вместо вывода в IO () это будет вывод на [Text]?

1 ответ

Решение

https://hackage.haskell.org/package/text-1.2.2.2/docs/Data-Text.html

main :: IO ()
main = do
  v <- shelly example
  print $ Data.Text.lines v
Другие вопросы по тегам