Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- data Identifier
- ident :: Iso' Identifier String
- quote :: String -> String
- needsQuoting :: String -> Bool
- parseSimpleIdentifier :: CharParser st tok m Identifier
- parseQuotedIdentifier :: CharParser st tok m Identifier
Documentation
data Identifier Source #
Identifiers in Nix are essentially strings. They can be constructed
(and viewed) with the ident
isomorphism. For the sake of convenience,
Identifier
s are an instance of the IsString
class.
Reasonable people restrict themselves to identifiers of the form
[a-zA-Z_][a-zA-Z0-9_'-]*
, because these don't need quoting. The
methods of the Text
class can be used to parse and pretty-print an
identifier with proper quoting:
>>>
pPrint (ident # "test")
test>>>
pPrint (ident # "foo.bar")
"foo.bar"
\str -> Just (ident # str) == parseM "Ident" (quote str)
\i -> Just (i :: Identifier) == parseM "Ident" (prettyShow i)
Instances
ident :: Iso' Identifier String Source #
An isomorphism that allows conversion of Identifier
from/to the
standard String
type via review
.
\str -> fromString str == ident # str
\str -> set ident str undefined == ident # str
\str -> view ident (review ident str) == str
quote :: String -> String Source #
Helper function to quote a given identifier string if necessary.
>>>
putStrLn (quote "abc")
abc>>>
putStrLn (quote "abc.def")
"abc.def"
needsQuoting :: String -> Bool Source #
Checks whether a given string needs quoting when interpreted as an
Identifier
. Simple identifiers that don't need quoting match the
regular expression ^[a-zA-Z_][a-zA-Z0-9_'-]*$
.
parseSimpleIdentifier :: CharParser st tok m Identifier Source #
Parsec parser for simple identifiers, i.e. those that don't need quoting.
parseQuotedIdentifier :: CharParser st tok m Identifier Source #
ReadP
parser for quoted identifiers, i.e. those that do need
quoting.