preMustacheProcess()

in src/processors/CodeGenLanguageRuby.js [88:175]


  preMustacheProcess(APISpecs: {[x: string]: any}) {
    for (const clsName in APISpecs) {
      const APIClsSpec = APISpecs[clsName];

      // Fields
      for (const index in APIClsSpec.fields) {
        const fieldSpec = APIClsSpec.fields[index];

        const enumList = {};
        for (const index2 in APIClsSpec.api_spec_based_enum_reference) {
          const enumSpec = APIClsSpec.api_spec_based_enum_reference[index2];
          enumList[enumSpec.name] = enumSpec['field_or_param:upper_case'];
        }

        const rubyType = getTypeForRuby(fieldSpec.type, enumList, APISpecs);

        fieldSpec['type:ruby'] = rubyType;
      }

      for (const index in APIClsSpec.apis) {
        const APISpec = APIClsSpec.apis[index];

        const enumList = {};
        for (const index2 in APISpec.referred_enums) {
          const enumSpec = APISpec.referred_enums[index2];
          if (enumSpec.metadata.node) {
            let node_name = enumSpec.metadata.node;
            if (APISpecs[node_name]) {
              node_name = APISpecs[node_name]['name:strict_pascal_case'];
            }
            enumList[enumSpec.metadata.name] =
              node_name +
              '::' +
              enumSpec.metadata['field_or_param:upper_case'];
          } else {
            enumList[enumSpec.metadata.name] = enumSpec.metadata.values;
          }
        }

        for (const index2 in APISpec.params) {
          const paramSpec = APISpec.params[index2];
          const rubyType = getTypeForRuby(paramSpec.type, enumList, APISpecs);
          paramSpec['type:ruby'] = rubyType;
        }

        if (APISpec.name == 'update' && APISpec.endpoint == '/') {
          APIClsSpec.has_update = true;
        }

        if (APISpec.name == 'delete' && APISpec.endpoint == '/') {
          APIClsSpec.has_delete = true;
        }
      }

      // Restructure Edges arrays
      let edgeArray = APIClsSpec.edges;
      const edgeObject = {};

      for (const index in APIClsSpec.edges) {
        const edgeSpec = APIClsSpec.edges[index];
        const edgeName = edgeSpec.endpoint.replace(/^\//, '');

        if (!edgeObject[edgeName]) {
          edgeObject[edgeName] = [];
        }
        edgeSpec['method:lower_case'] = edgeSpec.method.toLowerCase();

        if (edgeSpec.name == 'create_ad_image') {
          edgeSpec.return_a_list = true;
        }

        edgeObject[edgeName].push(edgeSpec);
      }

      edgeArray = [];
      for (const edgeName in edgeObject) {
        const edgeEndPoints = edgeObject[edgeName];
        edgeArray.push({
          edge_name: edgeName,
          end_points: edgeEndPoints,
        });
      }

      APIClsSpec.edges = edgeArray;
    }

    return APISpecs;
  },