Coding Horror

programming and human factors

Client-Side code highlighting

When I visited Alex Gorbatchev's blog, I noticed he had a unique client-side code highlighting solution in place, one I hadn't seen anywhere else. That's something I've wanted on my blog for a while; the vanilla <PRE> sections I've been using are servicable, but primitive. Although I loves me some regex, I don't know squat about PERL so I've been hesitant to hack anything fancier into my Movable Type install.

After I asked Alex about his solution, he was nice enough to package up his JavaScript syntax highlighter as dp.SyntaxHighlighter. It's really quite slick, and it works with all kinds of code: C#, VB.NET, JavaScript, PHP, SQL, and XML. Here's a VB.NET sample:

  
Public Function GetGoogleWordFrequency(ByVal strWord As String) As Integer  
Dim strUrl As String = "http://www.google.com/search?num=1&q="; & _  
Web.HttpUtility.UrlEncode(strWord)  
Dim wc As New WebClientGzip  
Dim strPageContents As String = wc.DownloadDataGzip(strUrl)  
Dim m As Match  
m = Regex.Match(strPageContents, _  
"results.*?d+.*?d+.*?of about.*?(?<TotalResults>[d,]+)", _
RegexOptions.IgnoreCase)  
If Not m Is Nothing Then  
Dim strResults As String = m.Groups("TotalResults").ToString  
If strResults.Length > 0 Then  
Return Convert.ToInt32(strResults.Replace(",", ""))  
End If  
End If  
Return -1  
End Function  

Alex tested this JavaScript on FireFox and IE6, and is looking for compatibility feedback on other browsers.

Written by Jeff Atwood

Indoor enthusiast. Co-founder of Stack Overflow and Discourse. Disclaimer: I have no idea what I'm talking about. Find me here: http://twitter.com/codinghorror