Browse Source
git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@553 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61shortcuts
5 changed files with 122 additions and 5 deletions
@ -0,0 +1,73 @@
@@ -0,0 +1,73 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright>
|
||||
// <license see="prj:///doc/license.txt">GNU General Public License</license>
|
||||
// <owner name="Daniel Grunwald" email="daniel@danielgrunwald.de"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using System.Collections.Generic; |
||||
using System.IO; |
||||
|
||||
using Boo.Lang.Compiler; |
||||
using Boo.Lang.Compiler.Ast; |
||||
using ICSharpCode.SharpDevelop; |
||||
using ICSharpCode.SharpDevelop.Gui; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
using ICSharpCode.Core; |
||||
using System.Text; |
||||
|
||||
using ICSharpCode.NRefactory.PrettyPrinter; |
||||
using ICSharpCode.NRefactory.Parser; |
||||
using NRefactoryToBooConverter; |
||||
|
||||
namespace Grunwald.BooBinding |
||||
{ |
||||
public class ConvertBuffer : AbstractMenuCommand |
||||
{ |
||||
ConverterSettings ApplySettings(string fileName, CompilerErrorCollection errors, CompilerWarningCollection warnings) |
||||
{ |
||||
ConverterSettings settings = new ConverterSettings(fileName, errors, warnings); |
||||
settings.SimplifyTypeNames = true; |
||||
return settings; |
||||
} |
||||
|
||||
public override void Run() |
||||
{ |
||||
IWorkbenchWindow window = WorkbenchSingleton.Workbench.ActiveWorkbenchWindow; |
||||
|
||||
if (window != null && window.ViewContent is IEditable) { |
||||
StringBuilder errorBuilder = new StringBuilder(); |
||||
|
||||
CompilerErrorCollection errors = new CompilerErrorCollection(); |
||||
CompilerWarningCollection warnings = new CompilerWarningCollection(); |
||||
Module module; |
||||
IList<ICSharpCode.NRefactory.Parser.ISpecial> specials; |
||||
CompileUnit compileUnit = new CompileUnit(); |
||||
using (StringReader r = new StringReader(((IEditable)window.ViewContent).Text)) { |
||||
module = Parser.ParseModule(compileUnit, r, ApplySettings(window.ViewContent.FileName, errors, warnings), out specials); |
||||
} |
||||
if (errors.Count > 0) { |
||||
foreach (CompilerError error in errors) { |
||||
errorBuilder.AppendLine(error.ToString()); |
||||
} |
||||
} else { |
||||
if (warnings.Count > 0) { |
||||
foreach (CompilerWarning warning in warnings) { |
||||
errorBuilder.AppendLine(warning.ToString()); |
||||
} |
||||
} |
||||
using (StringWriter w = new StringWriter()) { |
||||
BooPrinterVisitorWithComments printer = new BooPrinterVisitorWithComments(specials, w); |
||||
printer.OnModule(module); |
||||
printer.Finish(); |
||||
FileService.NewFile("Generated.boo", "Boo", w.ToString()); |
||||
} |
||||
} |
||||
if (errorBuilder.Length > 0) { |
||||
MessageService.ShowMessage(errorBuilder.ToString()); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
Loading…
Reference in new issue