protected override void Visit(MacroChunk chunk) { _source.Write("def ").Write(chunk.Name).Write("("); string delimiter = ""; foreach (var parameter in chunk.Parameters) { _source.Write(delimiter).Write(parameter.Name); delimiter = ","; } _source.WriteLine("):"); _source.Indent++; foreach (var global in _globals.Keys) _source.Write("global ").WriteLine(global); var generator = new GeneratedCodeVisitor(_source, _globals); _source.WriteLine("__output__scope__=OutputScopeAdapter(None)"); _source.WriteLine("try:"); _source.Indent++; generator.Accept(chunk.Body); _source.WriteLine("return Output.ToString()"); _source.Indent--; _source.WriteLine("finally:"); _source.Indent++; _source.WriteLine("__output__scope__.Dispose()"); _source.Indent--; _source.Indent--; }
protected override void Visit(MacroChunk chunk) { _source.Write("def ").Write(chunk.Name).Write("("); string delimiter = ""; foreach (var parameter in chunk.Parameters) { _source.Write(delimiter).Write(parameter.Name); delimiter = ","; } _source.WriteLine("):"); _source.Indent++; foreach (var global in _globals.Keys) { _source.Write("global ").WriteLine(global); } var generator = new GeneratedCodeVisitor(_source, _globals); _source.WriteLine("__output__scope__=OutputScopeAdapter(None)"); _source.WriteLine("try:"); _source.Indent++; generator.Accept(chunk.Body); _source.WriteLine("return Output.ToString()"); _source.Indent--; _source.WriteLine("finally:"); _source.Indent++; _source.WriteLine("__output__scope__.Dispose()"); _source.Indent--; _source.Indent--; }