Plugin for Windows Live Writer : VBToCSharp Converter

imageTertarik 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

 
Share this post: | | | |
Published Thursday, January 21, 2010 5:26 PM by ronald
Filed under:

Comments

# re: Plugin for Windows Live Writer : VBToCSharp Converter

Thursday, January 21, 2010 5:51 PM by Narenda Wicaksono

mantabs Gan!

# re: Plugin for Windows Live Writer : VBToCSharp Converter

Thursday, January 21, 2010 9:49 PM by Umi Fadilah

knapa lo seneng bgt sama "ALAY" yah.. kekeke..

# re: Plugin for Windows Live Writer : VBToCSharp Converter

Saturday, January 23, 2010 3:16 PM by sonny210183

nah di web jg saya pernah liat ada translator dari vb ke c# lalu dgn yg ini sama ya?

# re: Plugin for Windows Live Writer : VBToCSharp Converter

Sunday, January 24, 2010 5:25 PM by ronald

@sonny

sama kok, bedanya ini aku tempelin sebagai plugin di windows live writer

Powered by Community Server (Commercial Edition), by Telligent Systems