private generatePropertiesStr()

in packages/appsync-modelgen-plugin/src/languages/swift-declaration-block.ts [356:389]


  private generatePropertiesStr(prop: StructProperty): string {
    let propertyTypeName = prop.flags.isList ? this.getListType(prop) : prop.type;
    let propertyType = propertyTypeName ? `: ${propertyTypeName}${prop.flags.optional ? '?' : ''}` : '';

    if (prop.flags.handleListNullabilityTransparently && prop.flags.isList) {
      propertyType = propertyTypeName ? `: ${propertyTypeName}${prop.flags.isListNullable ? '?' : ''}` : '';
    }

    let resultArr: string[] = [
      prop.access === 'DEFAULT' ? '' : prop.access,
      prop.flags.static ? 'static' : '',
      prop.flags.variable ? 'var' : 'let',
      `${escapeKeywords(prop.name)}${propertyType}`,
    ];

    const getterStr = prop.getter ? `{\n${indentMultiline(prop.getter)} \n}` : null;
    const setterStr = prop.setter ? `{\n${indentMultiline(prop.setter)} \n}` : null;
    let getterSetterStr = '';
    if (setterStr) {
      getterSetterStr = this.mergeSections(
        ['{', indentMultiline(`set: ${setterStr}`), getterStr ? indentMultiline(`get: ${getterStr}`) : '', '}'],
        false,
      );
    } else if (getterStr) {
      getterSetterStr = indentMultiline(getterStr);
    }
    resultArr.push(getterSetterStr);
    if (prop.value) {
      resultArr.push('=');
      resultArr.push(prop.value);
    }
    const propDeclaration = resultArr.filter(r => !!r).join(' ');
    return this.mergeSections([prop.comment ? `${transformComment(prop.comment)}` : '', propDeclaration], false);
  }