monkeyPatch static method
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}
''';
}