visitFieldElement method

  1. @override
void visitFieldElement(
  1. FieldElement element
)
override

Implementation

@override
void visitFieldElement(FieldElement element) {
  final value = element.type.toString().replaceFirst('*', '');

  if (value.contains('Function')) {
    List<String> splitter = value.split('Function');
    String returnType = splitter[0];
    String argsString = splitter[1];

    if (argsString.substring(argsString.length - 2) == ')?')
      argsString = argsString
          .substring(0, argsString.length - 2)
          .replaceAll('(', '')
          .replaceAll(')', '');

    List<String> argsList = [];

    if (argsString.isNotEmpty) {
      int index = 0;
      argsList = argsString.split(',');

      final iter = argsList.map(
        (e) {
          String res = '${e} p${index}';
          index++;
          if (argsList.length == index) {
            res += ',';
          }
          return res;
        },
      );

      argsString = FespGenHelper.join(iter: iter, char: ',');
    }

    fields.add(
      VisitorElement(
        name: element.name,
        type: value,
        returnType: returnType,
        argsList: argsList,
        argsString: argsString,
        isFunction: true,
        annotations: _getAnnotations(element),
      ),
    );
  } else {
    fields.add(
      VisitorElement(
        name: element.name,
        type: value,
        annotations: _getAnnotations(element),
      ),
    );
  }
}