feat: add support for extractor members
This commit is contained in:
parent
b32ffa3a52
commit
285f64ede6
1 changed files with 14 additions and 1 deletions
15
src/cbor.zig
15
src/cbor.zig
|
@ -788,6 +788,18 @@ fn matchArray(iter_: *[]const u8, arr: anytype, info: anytype) Error!bool {
|
||||||
return n == 0;
|
return n == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn matchArrayScalar(iter: *[]const u8, arr: anytype) Error!bool {
|
||||||
|
var i: usize = 0;
|
||||||
|
var n = try decodeArrayHeader(iter);
|
||||||
|
if (n != arr.len) return false;
|
||||||
|
while (n > 0) : (n -= 1) {
|
||||||
|
if (!(matchValue(iter, extract(&arr[i])) catch return false))
|
||||||
|
return false;
|
||||||
|
i += 1;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
fn matchJsonObject(iter_: *[]const u8, obj: *json.ObjectMap) !bool {
|
fn matchJsonObject(iter_: *[]const u8, obj: *json.ObjectMap) !bool {
|
||||||
var iter = iter_.*;
|
var iter = iter_.*;
|
||||||
const t = try decodeType(&iter);
|
const t = try decodeType(&iter);
|
||||||
|
@ -892,7 +904,8 @@ fn Extractor(comptime T: type) type {
|
||||||
},
|
},
|
||||||
.float => return matchFloat(T, iter, self.dest),
|
.float => return matchFloat(T, iter, self.dest),
|
||||||
.@"enum" => return matchEnum(T, iter, self.dest),
|
.@"enum" => return matchEnum(T, iter, self.dest),
|
||||||
else => extractError(T),
|
.array => return matchArrayScalar(iter, self.dest),
|
||||||
|
else => return self.dest.cborExtract(iter),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Reference in a new issue