28 lines
897 B
C
28 lines
897 B
C
#include "jsoncdaccord.h"
|
|
#include "internal.h"
|
|
#include "optional.h"
|
|
|
|
int _jdac_check_pattern(json_object *jobj, json_object *jschema) {
|
|
json_object *jpat = json_object_object_get(jschema, "pattern");
|
|
if (jpat) {
|
|
if (!json_object_is_type(jpat, json_type_string)) {
|
|
return JDAC_ERR_SCHEMA_ERROR;
|
|
}
|
|
|
|
const char *pattern = json_object_get_string(jpat);
|
|
const char *istr = json_object_get_string(jobj);
|
|
|
|
if (istr) {
|
|
int ret = _jdac_match_string_with_regex(pattern, istr);
|
|
if (ret == JDAC_REGEX_COMPILE_FAILED) {
|
|
return JDAC_ERR_SCHEMA_ERROR;
|
|
} else if (ret == JDAC_REGEX_MATCH) {
|
|
return JDAC_ERR_VALID;
|
|
} else if (ret == JDAC_REGEX_MISMATCH) {
|
|
return JDAC_ERR_INVALID_PATTERNMATCH;
|
|
}
|
|
}
|
|
}
|
|
return JDAC_ERR_VALID;
|
|
}
|