);
}
+ #[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() {
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();