แจก Visual Studio Macro: Paste (as Double) Quote String

Post นี้แจก macro code สำหรับ visual studio ชื่อ PasteQuoteString
หน้าที่ของมันคือ ทำการ paste string ที่อยู่ใน clipboard ลงใน code ของเรา
โดยจะใส่ double quote ครอบไว้ให้ และใส่เครื่องหมาย string concatenate ให้ด้วย ในกรณีที่ string มีหลายบรรทัด

code สำหรับ macro เป็นดังนี้

Sub PasteQuoteString()
    Dim str As String = ClipboardAccess.ClipboardText
    str = System.Text.RegularExpressions.Regex.Replace(str, """", """""")
    str = System.Text.RegularExpressions.Regex.Replace(str, _
        "^(.*)$", """$1 "" & _", Text.RegularExpressions.RegexOptions.Multiline)
    str = System.Text.RegularExpressions.Regex.Replace(str, _
        "\r "" &", " "" &")
    DTE.ActiveDocument.Selection.Text = str.Substring(0, str.Length - 3) & vbCrLf
End Sub

#Region "Clipboard Access"
    Private Class ClipboardAccess

        Private Shared clipText As String

        Public Shared Property ClipboardText() As String
            Get
                RunThread(AddressOf GetClipboardText)
                Return clipText
            End Get
            Set(ByVal value As String)
                clipText = value
                RunThread(AddressOf CopyToClipboard)
            End Set
        End Property

        Private Shared Function RunThread(ByVal fct As Threading.ThreadStart)
            Dim thread As New Threading.Thread(fct)
            thread.ApartmentState = Threading.ApartmentState.STA

            thread.Start()
            thread.Join()
        End Function

        Private Shared Sub GetClipboardText()
            clipText = System.Windows.Forms.Clipboard.GetText()
        End Sub

        Private Shared Sub CopyToClipboard()
            'The second parameter is required
            System.Windows.Forms.Clipboard.SetDataObject(clipText, True)
        End Sub
    End Class
#End Region

เอาไปใช้งาน โดยใน Visual Studio ไปดูที่เมนู Tools –> Macros–> Macro IDE
แล้วใส่ code นี้เข้าไป (ใช้งานแบบเดียวกับ macro ใน MS Office นั่นแหละ)

macro นี้เกิดขึ้นมาจากปัญหาในการทำงาน คือเมื่อเวลาเราเขียน sql ขึ้นใน Sql Server Management Studio
แล้วต้องการ copy sql นั้นไปใส่ใน code เรา ซึ่ง sql นั้นยาวมาก จะคัดลอกไปแปะโดยตรง
ก็ต้องมานั่งเติมเครื่องหมาย double quote กันเยอะ เลยทำ macro มาช่วยในการเติมเครื่องหมายเหล่านี้

ตัวอย่างเช่น ถ้าเรา copy sql นี้

select *
from Table1
inner join Table2

แล้วไปเรียกใช้ macro PasteQuoteString ใน visual studio ก็จะได้ผลลัพธ์แบบนี้ขึ้นใน code

"select * " & _
"from Table1 " & _
"inner join Table2"

อ้อ ผมทำไว้สำหรับ vb syntax เท่านั้นนะครับ, C# ก็ไปลองดัดแปลงกันเองดู ไม่ยากเย็นอะไร

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: