Fix list result parsing
This commit is contained in:
@@ -171,6 +171,26 @@ mod tests {
|
||||
);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn list_results() {
|
||||
let mut machine = Machine::new_lib();
|
||||
machine.load_module_string(
|
||||
"facts",
|
||||
r#"
|
||||
list([1,2,3]).
|
||||
"#.to_string());
|
||||
|
||||
let result = machine.run_query(String::from("list(X)."));
|
||||
assert_eq!(
|
||||
result,
|
||||
Ok(QueryResolution::Matches(vec![
|
||||
QueryMatch::from(btreemap! {
|
||||
"X" => Value::List(Vec::from([Value::from("1"), Value::from("2"), Value::from("3")]))
|
||||
}),
|
||||
]))
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
#[tokio::test]
|
||||
async fn consult() {
|
||||
|
||||
@@ -120,7 +120,7 @@ impl From<Vec<QueryResolutionLine>> for QueryResolution {
|
||||
fn parse_prolog_response(input: &str) -> HashMap<String, String> {
|
||||
let mut map: HashMap<String, String> = HashMap::new();
|
||||
// Use regex to match strings including commas inside them
|
||||
let re = Regex::new(r"(\w+)\s=\s([^,]*'[^']*'[^,]*|[^,]*)").unwrap();
|
||||
let re = Regex::new(r"(\w+)\s=\s((?:[^,\[]|\[[^\]]*\])*)").unwrap();
|
||||
|
||||
for cap in re.captures_iter(input) {
|
||||
let key = cap[1].to_string();
|
||||
|
||||
Reference in New Issue
Block a user