Expr.fromJson constructor
Implementation
factory Expr.fromJson(Map<String, Object?> json) {
if (json.keys.length != 1) {
throw FormatException('Expected exactly one key in JSON expression');
}
final MapEntry(:key, :value) = json.entries.first;
final op = Op.fromJson(key);
return switch (op) {
OpBuiltin.value => ExprValue.fromJson(value),
OpBuiltin.variable => ExprVariable.fromJson(value as String),
OpBuiltin.slot => ExprSlot.fromJson(value as String),
OpBuiltin.unknown => ExprUnknown.fromJson(value as Map<String, Object?>),
OpBuiltin.not => ExprNot.fromJson(value as Map<String, Object?>),
OpBuiltin.negate => ExprNegate.fromJson(value as Map<String, Object?>),
OpBuiltin.equals => ExprEquals.fromJson(value as Map<String, Object?>),
OpBuiltin.notEquals => ExprNotEquals.fromJson(
value as Map<String, Object?>,
),
OpBuiltin.in_ => ExprIn.fromJson(value as Map<String, Object?>),
OpBuiltin.lessThan => ExprLessThan.fromJson(
value as Map<String, Object?>,
),
OpBuiltin.lessThanOrEquals => ExprLessThanOrEquals.fromJson(
value as Map<String, Object?>,
),
OpBuiltin.greaterThan => ExprGreaterThan.fromJson(
value as Map<String, Object?>,
),
OpBuiltin.greaterThanOrEquals => ExprGreaterThanOrEquals.fromJson(
value as Map<String, Object?>,
),
OpBuiltin.and => ExprAnd.fromJson(value as Map<String, Object?>),
OpBuiltin.or => ExprOr.fromJson(value as Map<String, Object?>),
OpBuiltin.add => ExprAdd.fromJson(value as Map<String, Object?>),
OpBuiltin.subtract => ExprSubt.fromJson(value as Map<String, Object?>),
OpBuiltin.multiply => ExprMult.fromJson(value as Map<String, Object?>),
OpBuiltin.contains => ExprContains.fromJson(
value as Map<String, Object?>,
),
OpBuiltin.containsAll => ExprContainsAll.fromJson(
value as Map<String, Object?>,
),
OpBuiltin.containsAny => ExprContainsAny.fromJson(
value as Map<String, Object?>,
),
OpBuiltin.getAttribute => ExprGetAttribute.fromJson(
value as Map<String, Object?>,
),
OpBuiltin.hasAttribute => ExprHasAttribute.fromJson(
value as Map<String, Object?>,
),
OpBuiltin.getTag => ExprGetTag.fromJson(value as Map<String, Object?>),
OpBuiltin.hasTag => ExprHasTag.fromJson(value as Map<String, Object?>),
OpBuiltin.like => ExprLike.fromJson(value as Map<String, Object?>),
OpBuiltin.is_ => ExprIs.fromJson(value as Map<String, Object?>),
OpBuiltin.ifThenElse => ExprIfThenElse.fromJson(
value as Map<String, Object?>,
),
OpBuiltin.set => ExprSet.fromJson(value as List<Object?>),
OpBuiltin.record => ExprRecord.fromJson(value as Map<String, Object?>),
final OpExtension op => _extensionCallFromJson(op.name, value),
};
}