diff --git a/src/json_schema/mod.rs b/src/json_schema/mod.rs index 4ec5c7c..832559f 100644 --- a/src/json_schema/mod.rs +++ b/src/json_schema/mod.rs @@ -838,7 +838,7 @@ mod tests { "title": "Character", "type": "object" }"#, - format!(r#"\{{([ ]?"name"[ ]?:[ ]?({STRING}|null)([ ]?,[ ]?"age"[ ]?:[ ]?({INTEGER}|null))?([ ]?,[ ]?"strength"[ ]?:[ ]?({INTEGER}|null))?|([ ]?"name"[ ]?:[ ]?({STRING}|null)[ ]?,)?[ ]?"age"[ ]?:[ ]?({INTEGER}|null)([ ]?,[ ]?"strength"[ ]?:[ ]?({INTEGER}|null))?|([ ]?"name"[ ]?:[ ]?({STRING}|null)[ ]?,)?([ ]?"age"[ ]?:[ ]?({INTEGER}|null)[ ]?,)?[ ]?"strength"[ ]?:[ ]?({INTEGER}|null))?[ ]?\}}"#).as_str(), + format!(r#"\{{([ ]?"name"[ ]?:[ ]?({STRING}|null)|([ ]?"name"[ ]?:[ ]?({STRING}|null)[ ]?,)?[ ]?"age"[ ]?:[ ]?({INTEGER}|null)|([ ]?"name"[ ]?:[ ]?({STRING}|null)[ ]?,)?([ ]?"age"[ ]?:[ ]?({INTEGER}|null)[ ]?,)?[ ]?"strength"[ ]?:[ ]?({INTEGER}|null))?[ ]?\}}"#).as_str(), vec![ r#"{ "name" : "Player" }"#, r#"{ "name" : "Player", "age" : 10, "strength" : 10 }"#, @@ -898,7 +898,7 @@ mod tests { ] { let json: Value = serde_json::from_str(schema).expect("Can't parse json"); let result = to_regex(&json, None).expect("To regex failed"); - assert_eq!(result, regex); + assert_eq!(result, regex, "JSON Schema {} didn't match", schema); let re = Regex::new(&result).expect("Regex failed"); for m in a_match { @@ -1075,7 +1075,7 @@ mod tests { assert!(result.is_ok(), "{:?}", result); let regex = result.unwrap(); assert_eq!( - r#"\{([ ]?"node"[ ]?:[ ]?\{([ ]?"value"[ ]?:[ ]?(-)?(0|[1-9][0-9]*)([ ]?,[ ]?"next"[ ]?:[ ]?\{([ ]?"value"[ ]?:[ ]?(-)?(0|[1-9][0-9]*))?[ ]?\})?|([ ]?"value"[ ]?:[ ]?(-)?(0|[1-9][0-9]*)[ ]?,)?[ ]?"next"[ ]?:[ ]?\{([ ]?"value"[ ]?:[ ]?(-)?(0|[1-9][0-9]*))?[ ]?\})?[ ]?\})?[ ]?\}"#, + r#"\{([ ]?"node"[ ]?:[ ]?\{([ ]?"value"[ ]?:[ ]?(-)?(0|[1-9][0-9]*)|([ ]?"value"[ ]?:[ ]?(-)?(0|[1-9][0-9]*)[ ]?,)?[ ]?"next"[ ]?:[ ]?\{([ ]?"value"[ ]?:[ ]?(-)?(0|[1-9][0-9]*))?[ ]?\})?[ ]?\})?[ ]?\}"#, regex, ); } diff --git a/src/json_schema/parsing.rs b/src/json_schema/parsing.rs index 9ac373b..f058759 100644 --- a/src/json_schema/parsing.rs +++ b/src/json_schema/parsing.rs @@ -161,9 +161,6 @@ impl<'a> Parser<'a> { pattern += &format!("({}{},)?", subregex, self.whitespace_pattern); } pattern += &property_subregexes[i]; - for subregex in &property_subregexes[i + 1..] { - pattern += &format!("({},{})?", self.whitespace_pattern, subregex); - } possible_patterns.push(pattern); }