Ana Sayfa | English Blog | Seminer TV | Dil Cookie Sil  Blog'u Mail ile takip et!  
Daron Yöndem - Web sayfalarında otomatik kod renklendirmek.
bir yazılımcının tasarıları...
 Thursday, January 01, 2009

Yılın ilk yazısında yıl boyunca tüm yazılarınızda kullanabileceğiniz bir kolaylıktan bahsetmek istiyorum; kod renklendirmek! Özellikle teknik makale yazanların en büyük dertlerinden biri de Visual Studio içerisinde kod renklendirmeleri gibi web sayfalarında da kodların renkli olarak gözükmesini sağlamaktır. Bu kapsamda bazıları kodların resim dosyaları olarak sitelerine koyar fakat bu durum okunabilirlilik açısından sorun yaratmasa da "kodları kopyalayamayan milyonlar" :) tarafından küfür yemenize ramak kaldı demektir!

Bugün aslında çok basit bir JavaScript kütüphanesinden bahsedeceğiz. Bu kütüphane sayesinde aşağıdaki dillerle yazılmış tüm kodları otomatik olarak sayfa içerisinden JavaScript ile renklendirebiliyorsunuz.

Dil Adı Dile ait MicroFormat
C++ cpp, c, c++
C# c#, c-sharp, csharp
CSS css
Delphi delphi, pascal
Java java
Java Script js, jscript, javascript
PHP php
Python py, python
Ruby rb, ruby, rails, ror
Sql sql
VB vb, vb.net
XML/HTML xml, html, xhtml, xslt

Yukarıdaki listede desteklenen dillerin yanında bir de MicroFormat tanımlarını bulabilirsiniz. Bunların ne şekilde kullanıldığına birazdan değineceğiz.

Color Coding için altyapı hazırlıkları...

İlk olarak sitenizdeki tüm kodları PRE tagları arasına almanız gerekiyor. Eğer kodlarınız içerisinde XML'de olduğu gibi < ve > işaretleri varsa bu sefer de bir textarea kullanabilirsiniz. Söz konusu tagların hepsine isim olarak aynı ismi vermeniz gerek. Ayrıca tagların CSS class isminin de yukarıdaki listede bulunan dillere göre MicroFormat'lardan alınması şart. Gelin hızlı bir örnekle nasıl bir şeyden bahsettiğimizi görelim.

<pre name="code" class="vb.net">

Dim x as string

</pre>

Gördüğünüz gibi PRE tagının ismi CODE ve class değeri de vb.net şeklinde ayarlanmış. Birazdan yazacağımız JavaScript kodunda sayfada adı code olan tüm tagların içeriğinin renklendirilmesini belirteceğiz ve renklendirme yapılırken her bir code adındaki tagın class ismine bakılarak hangi dilde kod yazıldığını anlaşılacak. Peki tüm bunları nasıl yapacağız?

İlk olarak buradan kullanacağımız tüm JavaScript dosyalarını indirebilirsiniz. Dosyalar içerisinde kodların görselliğini ayarlayacak bir CSS ve bir de clipboard kopyalama sistemi için Flash dosyası bulunuyor. Özellikle bilgisayarınıza tüm dosyaları indirdiğinizde scripts klasörüne bakarsanız aslında her dil için ayrı ayrı JavaScript dosyaları bulunduğunu görebilirsiniz. Paketteki shCore.js dosyası tüm renklendirme sisteminin ana dosyası. Diğer JS dosyaları ise ayrı ayrı dillere özel olarak hazırlanmış. Bu dosyalardan hangilerini istiyorsanız onları sayfanıza eklemeniz yeterli olacaktır.

<link type="text/css" rel="stylesheet" href="styles/SyntaxHighlighter.css"></link>

<script language="javascript" src="scripts/shCore.js"></script>

<script language="javascript" src="scripts/shBrushVb.js"></script>

<script language="javascript">window.onload = function ()

{    dp.SyntaxHighlighter.ClipboardSwf = '/scripts/clipboard.swf';   

dp.SyntaxHighlighter.HighlightAll('code');}</script>

Yukarıda gördüğünüz kodları sayfanıza yerleştirirseniz aslında tüm gerekli ayarları da tamamlamış oluyorsunuz. Böylece gerekli CSS sınıfları ve JavaScript kütüphaneleri sayfaya eklenmiş oldu. Son olarak sayfa açıldığında da hem ClipBoard için kullanacağımız Flash dosyasını hem de sayfada taranacak tagların isimlerini aktarmış olduk.

Renklendirilmiş kodumuz.
Renklendirilmiş kodumuz.

Yukarıda gördüğünüz son görsel şekil yazdığımız kodların sonucu ortaya çıkıyor. JavaScript kütüphanesi PRE taglarından böyle bir görsellik yaratıyor. Eğer isterseniz bu görsellik içerisinde bazı noktaları da PRE taglarına ek parametreler ekleyerek tanımlayabilirsiniz.

<pre name="code" class="vb.net:nocontrols:firstline[10]">">

Dim x as string

</pre>

Yukarıdaki kod içerisinde class değerinde kullandığımız dili tanımladıktan sonra üst üste iki nokta koyarak diğer parametrelerimizi de yazabiliyoruz. Bu parametrelerden nocontrols parametresi görsel arayüzde üstteki düğmelerin gözükmemesini sağlarken firstline ise kod görünümüzdeki ilk satırın satır numarasını belirliyor.

Hepinize yeni yılda bol paylaşımlı günler dilerim ;)

Thursday, January 01, 2009 7:13:42 PM (GTB Standard Time, UTC+02:00)  #    Comments [3]    | 
Copyright © 2010 Daron Yöndem. Tüm hakları saklıdır.