packages feed

dotenv 0.1.0.3 → 0.1.0.4

raw patch · 2 files changed

+31/−17 lines, 2 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

dotenv.cabal view
@@ -1,5 +1,5 @@ name:                dotenv-version:             0.1.0.3+version:             0.1.0.4 synopsis:            Loads environment variables from dotenv files  description:
src/Configuration/Dotenv/Parse.hs view
@@ -1,6 +1,6 @@ module Configuration.Dotenv.Parse (configParser) where -import Text.Parsec ((<|>), anyChar, char, many, manyTill, try)+import Text.Parsec ((<|>), (<?>), anyChar, char, many, manyTill, try) import Text.Parsec.Combinator (eof) import Text.Parsec.String (Parser) import Text.ParserCombinators.Parsec.Char@@ -21,47 +21,61 @@ envLine = (comment <|> blankLine) *> return Nothing <|> Just <$> optionLine  blankLine :: Parser String-blankLine = many verticalSpace <* newline+blankLine = many verticalSpace <* newline <?> "blank line"  optionLine :: Parser (String, String) optionLine = liftM2 (,)-  (many verticalSpace *> variableName <* keywordArgSeparator)-  argumentParser+  (many verticalSpace *> variableName <* variableValueSeparator)+  value  -- | Variables must start with a letter or underscore, and may contain -- letters, digits or '_' character after the first character. variableName :: Parser String variableName =-  liftM2 (:) (letter <|> char '_') (many (letter <|> char '_' <|> digit))+  liftM2 (:) -argumentParser :: Parser String-argumentParser = quotedArgument <|> unquotedArgument+  (letter <|> char '_') -quotedArgument :: Parser String-quotedArgument = quotedWith '\'' <|> quotedWith '\"'+  (many+   (letter <|> char '_' <|> digit <?>+    unwords+    [ "valid non-leading shell variable character (alphanumeric, "+    , "digit or underscore)" ])) -unquotedArgument :: Parser String-unquotedArgument =+  <?> unwords [ "shell variable name (letter or underscore followed"+              , "by alphanumeric characters or underscores)" ]++value :: Parser String+value = quotedValue <|> unquotedValue <?> "variable value"++quotedValue :: Parser String+quotedValue = quotedWith '\'' <|> quotedWith '\"'+              <?> "variable value surrounded with single or double quotes"++unquotedValue :: Parser String+unquotedValue =   manyTill anyChar (comment <|> many verticalSpace <* endOfLineOrInput)  -- | Based on a commented-string parser in: -- http://hub.darcs.net/navilan/XMonadTasks/raw/Data/Config/Lexer.hs quotedWith :: Char -> Parser String-quotedWith c = char c *> many chr <* char c+quotedWith c = char c *> many chr <* (char c <?> "closing quote character")    where chr = esc <|> noneOf [c]-        esc = escape *> char c+        esc = escape *> char c <?> "escape character"  comment :: Parser String comment = try (many verticalSpace *> char '#')           *> manyTill anyChar endOfLineOrInput+          <?> "comment"  endOfLineOrInput :: Parser () endOfLineOrInput = newline *> return () <|> eof -keywordArgSeparator :: Parser ()-keywordArgSeparator =-  many verticalSpace *> char '=' *> many verticalSpace *> return ()+variableValueSeparator :: Parser ()+variableValueSeparator =+  many verticalSpace *> (char '=' <?> "variable-value separator character (=)")+  *> many verticalSpace *> return ()  escape :: Parser Char escape = char '\\'