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()));
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}) {
if (key != null && key.substring(1) != null)
self.type = key.substring(1);
self.name = value;
return self;
},
),
Command(
prefix: '',
command: '',
callback: (DartDeclaration self, dynamic testSubject,
{String? key, dynamic value}) {
if (key != null) {
self.setName(key);
oldKey = key;
if (value == null) {
self.type = 'dynamic';
return self;
}
if (value is Map<String, dynamic>) {
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<String, dynamic>) {
final key = nestedFirst['\$key'];
nestedFirst.remove('\$key');
self.type =
'List<List<${key != null ? key.toTitleCase() : oldKey.toTitleCase()}>>';
self.nestedClasses?.add(JsonModel.fromMap(
key != null ? key.toTitleCase() : oldKey.toTitleCase(),
nestedFirst));
}
} else if (firstListValue is Map<String, dynamic>) {
final key = firstListValue['\$key'];
firstListValue.remove('\$key');
self.type =
'List<${key != null ? key.toString().toTitleCase() : oldKey.toTitleCase()}>';
self.nestedClasses?.add(JsonModel.fromMap(
key != null ? key.toTitleCase() : oldKey.toTitleCase(),
firstListValue));
} else {
final listValueType = firstListValue.runtimeType.toString();
self.type = 'List<$listValueType>';
}
return self;
}
var newDeclaration = DartDeclaration.fromCommand(
valueCommands,
self,
testSubject: value,
key: key,
value: value,
);
self.type = newDeclaration.type ?? value.runtimeType.toString();
return self;
},
),
];