monkeyPatch static method

String monkeyPatch(
  1. String shader, {
  2. Map<String, String>? defines,
  3. String header = '',
  4. String main = '',
  5. Map<String, String>? replaces,
})

Implementation

static String monkeyPatch(String shader, { Map<String,String>? defines, String header = '', String main = '', Map<String,String>? replaces}) {
  String patchedShader = shader;

  final replaceAll = (String str, String find, String rep) => str.split(find).join(rep);
  replaces?.keys.forEach((key) {
    patchedShader = replaceAll(patchedShader, key, replaces[key]!);
  });

  patchedShader = patchedShader.replaceAll(
    'void main() {',
    '''
    ${header}
    void main() {
      ${main}
    '''
  );

  final stringDefines = defines?.keys
    .map((d) => '''#define ${d} ${defines[d]}''')
    .join('\n') ?? '';

  return '''
    ${stringDefines}
    ${patchedShader}
  ''';
}