Fix errors in parsing crate
This commit is contained in:
parent
339686f5c5
commit
fbd7bf1f72
2 changed files with 34 additions and 36 deletions
|
|
@ -1,4 +1,4 @@
|
|||
use minisql::type_system::{IndexableValue, Value};
|
||||
use minisql::type_system::Value;
|
||||
use nom::{
|
||||
branch::alt,
|
||||
character::complete::{char, digit1, none_of, u64},
|
||||
|
|
@ -34,13 +34,13 @@ pub fn parse_number(input: &str) -> IResult<&str, Value> {
|
|||
let value = format!("{}{}", sign.unwrap_or('+'), digits)
|
||||
.parse::<u64>()
|
||||
.map_err(|_| nom::Err::Failure(make_error(input, nom::error::ErrorKind::Fail)))?;
|
||||
Ok((input, Value::Indexable(IndexableValue::Int(value))))
|
||||
Ok((input, Value::Int(value)))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn parse_int(input: &str) -> IResult<&str, Value> {
|
||||
u64(input).map(|(input, v)| (input, Value::Indexable(IndexableValue::Int(v))))
|
||||
u64(input).map(|(input, v)| (input, Value::Int(v)))
|
||||
}
|
||||
|
||||
fn escape_tab(input: &str) -> IResult<&str, char> {
|
||||
|
|
@ -85,19 +85,19 @@ pub fn parse_string(input: &str) -> IResult<&str, Value> {
|
|||
// Combine the characters into a string
|
||||
let value: String = content.into_iter().collect();
|
||||
|
||||
Ok((input, Value::Indexable(IndexableValue::String(value))))
|
||||
Ok((input, Value::String(value)))
|
||||
}
|
||||
|
||||
pub fn parse_uuid(input: &str) -> IResult<&str, Value> {
|
||||
let (input, value) = pair(char('u'), u64)(input)
|
||||
.map(|(input, (_, v))| (input, Value::Indexable(IndexableValue::Uuid(v))))?;
|
||||
.map(|(input, (_, v))| (input, Value::Uuid(v)))?;
|
||||
Ok((input, value))
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::parsing::literal::{parse_db_value, parse_string, parse_uuid};
|
||||
use minisql::type_system::{IndexableValue, Value};
|
||||
use minisql::type_system::Value;
|
||||
|
||||
#[test]
|
||||
fn test_string_parser() {
|
||||
|
|
@ -105,21 +105,21 @@ mod tests {
|
|||
parse_string(r#""simple""#),
|
||||
Ok((
|
||||
"",
|
||||
Value::Indexable(IndexableValue::String(String::from("simple")))
|
||||
Value::String(String::from("simple"))
|
||||
))
|
||||
);
|
||||
assert_eq!(
|
||||
parse_string(r#""\"\t\r\n\\""#),
|
||||
Ok((
|
||||
"",
|
||||
Value::Indexable(IndexableValue::String(String::from("\"\t\r\n\\")))
|
||||
Value::String(String::from("\"\t\r\n\\"))
|
||||
))
|
||||
);
|
||||
assert_eq!(
|
||||
parse_string(r#""name is \"John\".""#),
|
||||
Ok((
|
||||
"",
|
||||
Value::Indexable(IndexableValue::String(String::from("name is \"John\".")))
|
||||
Value::String(String::from("name is \"John\"."))
|
||||
))
|
||||
);
|
||||
}
|
||||
|
|
@ -128,7 +128,7 @@ mod tests {
|
|||
fn test_parse_db_value() {
|
||||
let (input, value) = parse_db_value("5").expect("should parse");
|
||||
assert_eq!(input, "");
|
||||
assert_eq!(value, Value::Indexable(IndexableValue::Int(5)));
|
||||
assert_eq!(value, Value::Int(5));
|
||||
|
||||
let (input, value) = parse_db_value("5.5").expect("should parse");
|
||||
assert_eq!(input, "");
|
||||
|
|
@ -140,9 +140,9 @@ mod tests {
|
|||
assert_eq!(input, "");
|
||||
assert_eq!(
|
||||
value,
|
||||
Value::Indexable(IndexableValue::String(
|
||||
Value::String(
|
||||
"abcdefghkjklmnopqrstuvwxyz!@#$%^&*()_+ ".to_string()
|
||||
))
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -183,7 +183,7 @@ mod tests {
|
|||
fn test_parse_int() {
|
||||
assert_eq!(
|
||||
parse_db_value("5134616"),
|
||||
Ok(("", Value::Indexable(IndexableValue::Int(5134616))))
|
||||
Ok(("", Value::Int(5134616)))
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -191,7 +191,7 @@ mod tests {
|
|||
fn test_parse_uuid() {
|
||||
assert_eq!(
|
||||
parse_uuid("u131515"),
|
||||
Ok(("", Value::Indexable(IndexableValue::Uuid(131515))))
|
||||
Ok(("", Value::Uuid(131515)))
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue