diff --git a/README.md b/README.md index cefed6f..22739b8 100644 --- a/README.md +++ b/README.md @@ -399,13 +399,11 @@ The error includes all normal `io` mishaps, like a missing file: ```rust use env_file_reader::read_file; -fn main() { - let err = read_file(".env.which.does.not.exist") - .err() - .unwrap(); +let err = read_file(".env.which.does.not.exist") + .err() + .unwrap(); - assert_eq!(err.kind(), std::io::ErrorKind::NotFound); -} +assert_eq!(err.kind(), std::io::ErrorKind::NotFound); ``` Additionally, parsing can fail due to an ill-formatted environment @@ -415,12 +413,10 @@ If that is the case, a custom error, `ParseError`, is returned: ```rust use env_file_reader::read_str; -fn main() { - let err = read_str("badly formatted env file") - .err() - .unwrap(); +let err = read_str("badly formatted env file") + .err() + .unwrap(); - assert_eq!(err.kind(), std::io::ErrorKind::InvalidInput); - assert_eq!(err.to_string(), "ParseError"); -} +assert_eq!(err.kind(), std::io::ErrorKind::InvalidInput); +assert_eq!(err.to_string(), "ParseError"); ``` diff --git a/TODO.md b/TODO.md index 6c34d9a..d8e4fd8 100644 --- a/TODO.md +++ b/TODO.md @@ -14,8 +14,6 @@ * [x] test suite -* [ ] clippy action - * [ ] release `v0.3.0` * [ ] type support through `serde` diff --git a/src/env_file.lalrpop b/src/env_file.lalrpop index c9a178d..5db6701 100644 --- a/src/env_file.lalrpop +++ b/src/env_file.lalrpop @@ -15,18 +15,18 @@ extern { "ident" => Token::Ident(), "qs" => Token::QuotedString(), "\n" => Token::NewLine, - "EOF" => Token::EOF, + "eof" => Token::Eof, } } pub EnvFile: HashMap = { - => HashMap::from_iter(<>.into_iter().filter_map(|x| x)), + => HashMap::from_iter(<>.into_iter().flatten()), } Line: Option<(String, String)> = { "=" => Some((k, v)), "\n" => None, - "EOF" => None, + "eof" => None, }; Key: String = "export"? => k; @@ -35,5 +35,5 @@ Value: String = { "ident" => <>, "qs" => <>, "\n" => String::new(), - "EOF" => String::new(), + "eof" => String::new(), }; diff --git a/src/lexer.rs b/src/lexer.rs index 803249b..3d0b4d4 100644 --- a/src/lexer.rs +++ b/src/lexer.rs @@ -12,14 +12,12 @@ use std::error::Error; /// ```rust /// use env_file_reader::read_str; /// -/// fn main() { -/// let err = read_str("badly formatted env file") -/// .err() -/// .unwrap(); +/// let err = read_str("badly formatted env file") +/// .err() +/// .unwrap(); /// -/// assert_eq!(err.kind(), std::io::ErrorKind::InvalidInput); -/// assert_eq!(err.to_string(), "ParseError"); -/// } +/// assert_eq!(err.kind(), std::io::ErrorKind::InvalidInput); +/// assert_eq!(err.to_string(), "ParseError"); /// ``` /// #[derive(Debug)] @@ -46,7 +44,7 @@ fn remove_quotes(lex: &mut logos::Lexer) -> String { let escaped_newline_pattern = "\\n"; slice[1..slice.len() - 1] - .replace(&escaped_quote_pattern, "e) + .replace(&escaped_quote_pattern, quote) .replace(escaped_newline_pattern, "\n") } @@ -64,7 +62,7 @@ pub enum Token { #[regex(r"`[^`]*`", remove_quotes)] #[regex(r#""([^"]|\\")*""#, remove_quotes)] QuotedString(String), - EOF, + Eof, #[error] #[regex(r"#.*", logos::skip)] #[regex(r"\s+", logos::skip)] @@ -98,18 +96,16 @@ impl<'input> Iterator for Lexer<'input> { fn next(&mut self) -> Option { match self.token_stream.next() { - Some((token, span)) => { - match token { - Token::Error => Some(Err(ParseError)), - _ => Some(Ok((span.start, token, span.end))), - } - } + Some((token, span)) => match token { + Token::Error => Some(Err(ParseError)), + _ => Some(Ok((span.start, token, span.end))), + }, None => { if self.finished() { None } else { self.finish(); - Some(Ok((0, Token::EOF, 0))) + Some(Ok((0, Token::Eof, 0))) } } }