keyComands property

List<Command> keyComands
final

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;
    },
  ),
];