public string GetMethodSourceCode(ICodeResult result, PapyrusMethodDefinition method) { var sb = new StringBuilder(); var methodBody = result.DecompiledSourceCode; var isNone = method.ReturnTypeName.Value.ToLower() == "none"; var name = method.Name?.Value; if (string.IsNullOrEmpty(name)) { if (method.IsSetter) { name = "Set"; } if (method.IsSetter) { name = "Get"; } } var returnValue = ""; var fDesc = "Function"; if (method.IsEvent) { fDesc = "Event"; } else if (!isNone) { returnValue = method.ReturnTypeName.Value + " "; } var last = ""; if (method.IsNative) { last += " Native"; } if (method.IsGlobal) { last += " Global"; } var parameters = GetParameterString(method.Parameters); sb.AppendLine(returnValue + fDesc + " " + name + parameters + last); if (!string.IsNullOrEmpty(method.Documentation?.Value)) { sb.AppendLine("{ " + method.Documentation?.Value + " }"); } sb.AppendLine(IndentedLines(1, methodBody.Trim('\n', '\r'))); if (!method.IsNative) { sb.AppendLine("End" + fDesc); } return(sb.ToString().Trim('\n')); }
public Return(GeneratorScope scope, ICodeResult result) : base(scope, null, null) { Construct = result; }