Tertarik dengan postingan mas Danni Afasyah yang membahas mengenai cara membuat sebuah konverter source code C# ke VB disini, maka diwaktu istirahat siang ini saya menyempatkan diri untuk membuka Visual Studio untuk membuat sebuah plug-in di Windows Live Writer yang memiliki fungsi serupa yaitu mengkonvert kode C# ke VB dan sebaliknya. Sehingga jika kedepannya dalam blog ini saya menuliskan contoh kode maka kode tersebut tidak hanya dalam C# tapi dalam VB juga.
Untuk membuatnya sebenarnya cukup mudah, saya hanya perlu memodifikasi source code dari Alay Generator yang sebelumnya pernah dibuat. Kemudian menambahkan 2 fungsi seperti dibawah ini :
C# private static string fromCSharpToVB(string testString)
{
SnippetParser parser = new SnippetParser(SupportedLanguage.CSharp);
INode node = parser.Parse(testString);
PreprocessingDirective.CSharpToVB(parser.Specials);
node.AcceptVisitor(new CSharpConstructsConvertVisitor(), null);
node.AcceptVisitor(new ToVBNetConvertVisitor(), null);
VBNetOutputVisitor output = new VBNetOutputVisitor();
using (SpecialNodesInserter.Install(parser.Specials, output))
{
node.AcceptVisitor(output, null);
}
return output.Text;
}
private static string FromVBTOSharp(string testString)
{
SnippetParser parser = new SnippetParser(SupportedLanguage.VBNet);
INode node = parser.Parse(testString);
PreprocessingDirective.VBToCSharp(parser.Specials);
node.AcceptVisitor(new VBNetConstructsConvertVisitor(), null);
node.AcceptVisitor(new ToCSharpConvertVisitor(), null);
CSharpOutputVisitor output = new CSharpOutputVisitor();
using (SpecialNodesInserter.Install(parser.Specials, output))
{
node.AcceptVisitor(output, null);
}
return output.Text;
}VB Private Shared Function fromCSharpToVB(testString As String) As String
Dim parser As New SnippetParser(SupportedLanguage.CSharp)
Dim node As INode = parser.Parse(testString)
PreprocessingDirective.CSharpToVB(parser.Specials)
node.AcceptVisitor(New CSharpConstructsConvertVisitor(), Nothing)
node.AcceptVisitor(New ToVBNetConvertVisitor(), Nothing)
Dim output As New VBNetOutputVisitor()
Using SpecialNodesInserter.Install(parser.Specials, output)
node.AcceptVisitor(output, Nothing)
End Using
Return output.Text
End Function
Private Shared Function FromVBTOSharp(testString As String) As String
Dim parser As New SnippetParser(SupportedLanguage.VBNet)
Dim node As INode = parser.Parse(testString)
PreprocessingDirective.VBToCSharp(parser.Specials)
node.AcceptVisitor(New VBNetConstructsConvertVisitor(), Nothing)
node.AcceptVisitor(New ToCSharpConvertVisitor(), Nothing)
Dim output As New CSharpOutputVisitor()
Using SpecialNodesInserter.Install(parser.Specials, output)
node.AcceptVisitor(output, Nothing)
End Using
Return output.Text
End Function(*he3x saya sudah mulai pake pluginnya loh untuk nulis 2 kode diatas)
Kemudian agar format dari tulisannya nampak menarik maka saya menggunakan API code formatter yang disediakan oleh bapak manoli disini. Jadi kode yang dieksekusi ketika tombol Generate ditekan adalah seperti ini :
C# private void button1_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
SourceFormat CSharpFormatter=new CSharpFormat();
SourceFormat VBFormatter= new VisualBasicFormat();
CSharpFormatter.EmbedStyleSheet = true;
VBFormatter.EmbedStyleSheet = true;
if (VBToCSharpSelect.Checked)
{
result = "<b>VB</b>"+VBFormatter.FormatCode(textBox1.Text) + "<br/><b>C#</b><br/>";
result += CSharpFormatter.FormatCode(FromVBTOSharp(textBox1.Text));
}else
{
result = "<b>C#</b>" + CSharpFormatter.FormatCode(textBox1.Text) + "<br/><b>VB</b><br/>";
result += VBFormatter.FormatCode(fromCSharpToVB(textBox1.Text));
}
Close();
}VB Private Sub button1_Click(sender As Object, e As EventArgs)
Me.DialogResult = DialogResult.OK
Dim CSharpFormatter As SourceFormat = New CSharpFormat()
Dim VBFormatter As SourceFormat = New VisualBasicFormat()
CSharpFormatter.EmbedStyleSheet = True
VBFormatter.EmbedStyleSheet = True
If VBToCSharpSelect.Checked Then
result = "<b>VB</b>" + VBFormatter.FormatCode(textBox1.Text) + "<br/><b>C#</b><br/>"
result += CSharpFormatter.FormatCode(FromVBTOSharp(textBox1.Text))
Else
result = "<b>C#</b>" + CSharpFormatter.FormatCode(textBox1.Text) + "<br/><b>VB</b><br/>"
result += VBFormatter.FormatCode(fromCSharpToVB(textBox1.Text))
End If
Close()
End Sub
He3x codingan telah selesai dan sekarang adalah saatnya menikmati kembali makan siang :)
PS: jika ada rekan-rekan yg tertarik untuk membaca source codenya maka silahkan download dimari