generate method

void generate({
  1. required IOSink fileSink,
})

Generates necessary code for a SteamConst

Implementation

void generate({
  required IOSink fileSink,
}) {
  String correctedName = name.clearSteamNaming().afterFirstCapital();
  String correctedType = type.toToken().typeDart;

  String correctedValue = value.replaceAll("ull", "");
  correctedValue = correctedValue.replaceAll(" (uint32) ", "");
  correctedValue = correctedValue.replaceAll(
    "( ( uint32 ) 'd' << 16U ) | ( ( uint32 ) 'e' << 8U ) | ( uint32 ) 'v'",
    "6579574",
  );
  correctedValue = correctedValue.replaceAll(
    "600.f",
    "600.0",
  );
  correctedValue =
      correctedValue.replaceAll("( SteamItemInstanceID_t ) ~ 0", "~0");
  correctedValue = correctedValue.clearSteamNaming();

  if (int.tryParse(correctedValue[0]) == null) {
    correctedValue = correctedValue.splitMapJoin(
      "|",
      onMatch: (m) => m[0].toString(),
      onNonMatch: (nm) => nm.trim().afterFirstCapital().snakeCase,
    );
  }

  fileSink.writeConst(
    type: correctedType,
    name: correctedName.camelCase,
    value: correctedValue.camelCase,
  );
}