R

R Dilinde Mustache Template Sistemi Kullanımı

Güncelleme:
Template sistemlerine (engine ve dil bağlamında) R dilinde {{Mustache}} kullanımıyla devam ediyorum. Esasında paketin (package) adı whisker ve kendisi bir mustache implementasyonu. TDK, implementasyon kelimesine ...
GÖRSEL
Template sistemlerine (engine ve dil bağlamında) R dilinde {{Mustache}} kullanımıyla devam ediyorum. Esasında paketin (package) adı whisker ve kendisi bir mustache implementasyonu. TDK, implementasyon kelimesine karşılık olarak kullanak ifadesini önermekte, gerçekleştirim olarak da duyarsanız şaşırmayın. Her neyse! Özetlemek gerekirse, whisker mustache template (şablon) yapısının R programlama diline entegre edilmiş hali.

Rlang Whisker Kullanımı

Örnekler öncesinde, eğer ilgili template sistemine aşina değilseniz Mustache yazım kurallarıyla ilgili olarak Mustache.js yazıma göz atmanızda fayda var. Whisker bu template yapısını temel olarak alan bir R paketi. R dilinde farklı özelliklere sahip template yapıları mevcut; knitr bulardan en bilineni. Bu alternatifler içerisinde whisker daha temel ihtiyaçlara yönelik olarak değerlendirilebilecek oldukça pratik bir çözüm. Ancak, aktif olarak geliştirildiğini söylemek güç. Github sayfasındaki son commit 2015 yılına ait.

R Dilinde Mustache (Whisker) Template Dilinin Kullanımı

İlk olarak ilgili paketi CRAN üzerinden indirelim.
install.packages("whisker")

İlgili paket yüklendiğine göre basit bir örnek işlem gerçekleştirebiliriz. Kullanabileceğimiz fonksiyonlar iteratelist(x, name = "name", value = "value"), rowSplit(x, ...), whisker.escape(x) ve whisker.render(template, data = parent.frame(), partials = list(), debug = FALSE). Örneğimiz yine ekrana {{name}} {{surname}} yer tutucuları üzerinden Hayden Mcguire yazdırmak olsun. Böylelikle kullanım benzerlikleri/farklılıklarının daha da netleşeceğini düşünüyorum.

Sabit alanımız şöyle: Hello! My name is {{name}} {{surname}}.

Sabit alan içerisindeki {{name}} {{surname}} alanlarına veriyi en pratik şekilde iletelim:

library(whisker)
 
template <- "Hello! My name is {{name}} {{surname}}"
data <- list(name = "Chris", surname = "Mcguire")
text <- whisker.render(template, data)
cat(text)

Örnekte görüldüğü üzere template içeriğinde yer alan yer tutuculara data üzerinden verileri iletmekteyiz. İletilen içerik ise whisker.render() tarafından gönderilen değer ile değiştirilmekte ve cat() ile son olarak dönen içeriği ekrana yansıtmaktayız.

Örneği biraz değiştirelim. Elimizin altında şablon olarak kullanabileceğimiz bir HTML dosyası olsun ve adını first.html koyalım. İçeriği şöyle olsun:

{{#status}}<h1>Hello! My name is {{name}} {{surname}}</h1>{{/status}}

R kodumuzu güncelleyelim ve status adında bir kontrol ekleyelim. Kodumuz {{name}} ve {{surname}} içeriğini status = TRUE olması durumunda gönderdiğimiz değerlerle değiştirsin ve sonuç her ne olursa olsun last.html dosyası oluşturarak kayıt etsin.

library(whisker)
 
template <- readLines("./first.html")
data <- list(name = "Chris", surname = "Mcguire", status = FALSE)
 
writeLines(whisker.render(template, data), "./last.html")</p>
 
<p class="ui text">Tüm işlemimiz bu kadar. Son olarak <code>$name</code> ve <code>$value</code> değerlerini ardışık olarak (iterate) alalım.</p>
 
<pre lang="rsplus">library(whisker)
 
x <- list(name="Chris", surname="Mcguire", age="30")
iteratelist(x)

Kodu uyguladığımızda bize name, surname ve age değerleri şu şekilde yinelenerek dönecektir:

[[1]]
[[1]]$name
[1] "name"
 
[[1]]$value
[1] "John"
 
 
[[2]]
[[2]]$name
[1] "surname"
 
[[2]]$value
[1] "30"
 
 
[[3]]
[[3]]$name
[1] "age"
 
[[3]]$value
[1] "30"
Yukarıdaki gibi temel işlemler gerçekleştirebileceğimiz whisker template paketi ile ilgili ek örnekler için GitHub sayfasını inceleyebilirsiniz.

HABERDAR OL

Yeni eklenen projeler, eğitimler, içerikler ve yayınlanan videolar e-posta adresine gelsin.