turtle-1.4.3: Shell programming, Haskell-style

Safe HaskellNone
LanguageHaskell2010

Turtle.Line

Synopsis

Documentation

data Line Source #

A line of text (does not contain newlines).

Instances

Eq Line Source # 

Methods

(==) :: Line -> Line -> Bool #

(/=) :: Line -> Line -> Bool #

Ord Line Source # 

Methods

compare :: Line -> Line -> Ordering #

(<) :: Line -> Line -> Bool #

(<=) :: Line -> Line -> Bool #

(>) :: Line -> Line -> Bool #

(>=) :: Line -> Line -> Bool #

max :: Line -> Line -> Line #

min :: Line -> Line -> Line #

Show Line Source # 

Methods

showsPrec :: Int -> Line -> ShowS #

show :: Line -> String #

showList :: [Line] -> ShowS #

IsString Line Source # 

Methods

fromString :: String -> Line #

Monoid Line Source # 

Methods

mempty :: Line #

mappend :: Line -> Line -> Line #

mconcat :: [Line] -> Line #

lineToText :: Line -> Text Source #

Convert a line to a text value.

textToLines :: Text -> NonEmpty Line Source #

Split text into lines. The inverse of linesToText.

linesToText :: [Line] -> Text Source #

Merge lines into a single text value.

textToLine :: Text -> Maybe Line Source #

Try to convert a text value into a line. Precondition (checked): the argument does not contain newlines.

unsafeTextToLine :: Text -> Line Source #

Convert a text value into a line. Precondition (unchecked): the argument does not contain newlines.

data NewlineForbidden Source #

The NewlineForbidden exception is thrown when you construct a Line using an overloaded string literal or by calling fromString explicitly and the supplied string contains newlines. This is a programming error to do so: if you aren't sure that the input string is newline-free, do not rely on the IsString Line instance.

When debugging, it might be useful to look for implicit invocations of fromString for Line:

>>> sh (do { line <- "Hello\nWorld"; echo line })
*** Exception: NewlineForbidden

In the above example, echo expects its argument to be a Line, thus line :: Line. Since we bind line in Shell, the string literal "Hello\nWorld" has type Shell Line. The IsString (Shell Line) instance delegates the construction of a Line to the IsString Line instance, where the exception is thrown.

To fix the problem, use textToLines:

>>> sh (do { line <- select (textToLines "Hello\nWorld"); echo line })
Hello
World

Constructors

NewlineForbidden