k***@hotmail.com
2008-08-17 15:14:30 UTC
lisp ile ilgili sayfalarda web tasarýmýnda nasýl kullanýlabileceðine dair birçok konu okudum (asýl esin kaynaðým lisp ile web programlamaya dalýþ). ancak diðerlerinin açýk kodlarýný okurken biraz bana garip geldi. bende 3 basit komut yazdým. ilk iki komut sadece web sayfalarýnda deðil xml oluþturmada da kullanýlabilir diye düþünüyorum. taglarýn ve parametre adlarýnýn çift týrnak içinde yazýlmasý garip gelebilir. ben de ilk etapta onlarý çift týrnaksýz veya sembolleþtirmeden yazayým diye düþündüm. sonra farkettim ki bunlarýn veri olarak girilmesi hem lispin mantýðýna uygun, hemde bu taglarýn ve parametre adlarýnýn istenildiðinde kodu deðiþtirmeden deðiþtirilebilmesinin saðladýðý kolaylýktan dolayý bu þekilde býraktým. aþaðýdaki gibi bir web sayfasýnýn bir kalýp olarak oluþturulup üzerinde kalýp bozulmadan istenilen deðiþikliðin yapýlabileceðini düþünüyorum.
þu an en büyük sorunum bu kodlarý yazarken "\"" karþýlýðýnýn " olmasý gerekirken \" olmasýdýr. maalesef birçok common lisp ortamýnda denedim olmadý. buna ihtiyacýmýn sebebi xml formatýnda tag parametresinin isim="içerik" yapýsýnda olmasý zorunluluðu. bununla ilgili sorunuma cevap verirseniz sevinirim.
;içeriði olan taglar için: html body title body p gibi
(defun % (tag parametre &rest icerik) (format nil "<~a ~{~a=\"~a\" ~}>~{~a~}</~a>~%" tag parametre icerik tag) )
;içeriði olmayan taglar için: input img gibi
(defun %- (tag parametre) (format nil "<~a ~{~a=\"~a\" ~}/>~%" tag parametre) )
;basit css tanýmlamasý
(defun %% (tag parametre) (format nil "~a {~%~a:~a;~%~}~%" tag parametre) )
;örnek bir web sayfasý
; genel kalýp (% tag '(parametreler) içerik)
; tag parametreler ve içerik deðiþkenle veri aktarmadýðý sürece çift týrnak içinde
; yazýlmalýdýr. parametreler ikiþerli olarak düþünülmelidir. birinci parametre
; parametre adý ikinci parametre parametre içeriði üçüncü parametre 2.parametrenin
; adý dördüncü parametre 2. parametrenin içeriði ve bu þekilde devam eder.
; içerik tek parça olmak zorunda deðildir. o yüzden rest kullandým bu da body gibi
; taglarýn birçok iç tagýna sahip olmasýný saðlýyor. text/html çýktýsýnýn þu anki en
; büyük sorunu örneðin body tagýnda geçen bgcolor="blue" olmasý gerekirken
; bgcolor=\"blue\" olmasý bunu istersem hiç çift týrnak koymayarak ta halledebilirim
; ama öyle kalmasýný tercih ettim.
(% "html" '()
(% "head" '()
(% "title" '() "Deneme sayfasý" )
(%- "meta" '( "http-equiv" "content-type"
"content" "text/html; charset=windows-1254"))
)
(% "body" '("bgcolor" "blue" "alink" "black")
(% "h1" '() "Bu sayfanýn konusu yok")
(% "p" '("align" "left")
"bu deneme sayfasýnýn ilk satýrý")
(% "p" '()
"bu deneme sayfasýnýn ikinci satýrý")
)
)
þu an en büyük sorunum bu kodlarý yazarken "\"" karþýlýðýnýn " olmasý gerekirken \" olmasýdýr. maalesef birçok common lisp ortamýnda denedim olmadý. buna ihtiyacýmýn sebebi xml formatýnda tag parametresinin isim="içerik" yapýsýnda olmasý zorunluluðu. bununla ilgili sorunuma cevap verirseniz sevinirim.
;içeriði olan taglar için: html body title body p gibi
(defun % (tag parametre &rest icerik) (format nil "<~a ~{~a=\"~a\" ~}>~{~a~}</~a>~%" tag parametre icerik tag) )
;içeriði olmayan taglar için: input img gibi
(defun %- (tag parametre) (format nil "<~a ~{~a=\"~a\" ~}/>~%" tag parametre) )
;basit css tanýmlamasý
(defun %% (tag parametre) (format nil "~a {~%~a:~a;~%~}~%" tag parametre) )
;örnek bir web sayfasý
; genel kalýp (% tag '(parametreler) içerik)
; tag parametreler ve içerik deðiþkenle veri aktarmadýðý sürece çift týrnak içinde
; yazýlmalýdýr. parametreler ikiþerli olarak düþünülmelidir. birinci parametre
; parametre adý ikinci parametre parametre içeriði üçüncü parametre 2.parametrenin
; adý dördüncü parametre 2. parametrenin içeriði ve bu þekilde devam eder.
; içerik tek parça olmak zorunda deðildir. o yüzden rest kullandým bu da body gibi
; taglarýn birçok iç tagýna sahip olmasýný saðlýyor. text/html çýktýsýnýn þu anki en
; büyük sorunu örneðin body tagýnda geçen bgcolor="blue" olmasý gerekirken
; bgcolor=\"blue\" olmasý bunu istersem hiç çift týrnak koymayarak ta halledebilirim
; ama öyle kalmasýný tercih ettim.
(% "html" '()
(% "head" '()
(% "title" '() "Deneme sayfasý" )
(%- "meta" '( "http-equiv" "content-type"
"content" "text/html; charset=windows-1254"))
)
(% "body" '("bgcolor" "blue" "alink" "black")
(% "h1" '() "Bu sayfanýn konusu yok")
(% "p" '("align" "left")
"bu deneme sayfasýnýn ilk satýrý")
(% "p" '()
"bu deneme sayfasýnýn ikinci satýrý")
)
)