static MethodBag ExtractMethods(string src) { var methods = new MethodBag(); var lastLineWithMethod = 0; string lastComment = null; var lines = File.ReadAllLines(src); for (var i = 0; i < lines.Length; i++) { var line = lines[i]; if (line.StartsWith("FMOD_RESULT F_API") || line.StartsWith("FMOD_BOOL ")) { // was our last line a method as well? If not, we can find a comment above us if (lastLineWithMethod != i - 1) { lastComment = ExtractLastComment(lines, i - 1); } lastLineWithMethod = i; line = line.Replace("F_API", ""); methods.AddMethod(lastComment, ParseMethod(line)); } } return(methods); }
static void WriteMethodBagToFile(StreamWriter writer, MethodBag methods, string module) { writer.WriteLine($"module {module}"); writer.WriteLine(); foreach (var kvPair in methods) { writer.WriteLine($"// {kvPair.Key}"); WriteMethodsToFile(writer, kvPair.Value); writer.WriteLine(); } }