keyComands property
Implementation
static final List<Command> keyComands = [
Command(
prefix: '\@',
command: 'JsonKey',
callback: (DartDeclaration self, String testSubject,
{String? key, dynamic value}) {
var jsonKey = JsonKeyMutate.fromJsonKeyParamaString(testSubject);
self.jsonKey &= jsonKey;
var newDeclaration = DartDeclaration.fromCommand(valueCommands, self,
testSubject: value, key: key!, value: value);
self.decorators.replaceDecorator(Decorator(self.jsonKey.toString()));
// TODO: check nullsafety
self.type = (DartDeclaration.getTypeFromJsonKey(testSubject) ??
newDeclaration.type ??
self.type)! +
'?';
self.name = DartDeclaration.getNameFromJsonKey(testSubject) ??
newDeclaration.name ??
self.name;
if (self.name == null) self.setName(value);
return self;
},
),
Command(
prefix: '\@',
command: 'import',
callback: (DartDeclaration self, dynamic testSubject,
{String? key, dynamic value}) {
self.addImport(value);
return self;
},
),
Command(
prefix: '@',
command: '_',
callback: (
DartDeclaration self,
dynamic testSubject, {
String? key,
dynamic value,
}) {
// TODO: nullsafety operator
self.type = '${key!.substring(1)}?';
self.name = value;
return self;
},
),
Command(
prefix: '',
command: '',
callback: (DartDeclaration self, dynamic testSubject,
{String? key, dynamic value}) {
self.setName(key!);
if (value == null) {
self.type = 'dynamic';
return self;
}
if (value is Map) {
// TODO: nullsafety operator
self.type = '${key.toTitleCase()}?';
self.nestedClasses.add(JsonModel.fromMap(key, value));
return self;
}
if (value is List && value.isNotEmpty) {
final firstListValue = value.first;
if (firstListValue is List) {
final nestedFirst = firstListValue.first;
if (nestedFirst is Map) {
final key = nestedFirst['\$key'];
nestedFirst.remove('\$key');
// TODO: nullsafety operator
self.type = 'List<List<$key>>?';
self.nestedClasses.add(JsonModel.fromMap(key, nestedFirst));
}
} else if (firstListValue is Map) {
final key = firstListValue['\$key'];
firstListValue.remove('\$key');
// TODO: nullsafety operator
self.type = 'List<$key>?';
self.nestedClasses.add(JsonModel.fromMap(key, firstListValue));
} else {
final listValueType = firstListValue.runtimeType.toString();
// TODO: nullsafety operator
self.type = 'List<$listValueType>?';
}
return self;
}
var newDeclaration = DartDeclaration.fromCommand(
valueCommands,
self,
testSubject: value,
key: key,
value: value,
);
// TODO: nullsafety operator
self.type = newDeclaration.type ?? value.runtimeType.toString() + '?';
return self;
},
),
];