JRuby’nin 1.0.2 numaralı sürümü bugün duyuruldu [ »» ]

İyileştirmeler içeren yeni sürüm 1.2.5 numaralı Rails sürümünü de desteklemeye başladı. “Practical JRuby on Rails Web 2.0 Projects: Bringing Ruby on Rails to Java” adlı kitapta geçen günlerde yayımlanmıştı. JRuby’yi zevkle izlemeye devam ediyoruz.

Yükleme dosyalarına buradan ulaşabiliriz.

Bundan önceki yazımda JRuby ile Zemberek kütüphanesinin nasıl kullanılabileceğini basitçe görmüştük. Yazıda yer alan örneklere göz attığımızda Zemberek kütüphanesini kullanırken Java’da izlenen yolu birebir izledik.

Yani bir kelimeye ait önerileri bulmak için şu kodu kullandık.

oneriler = zembo.oner(yazi)
oneriler.each_with_index do |oneri, i|
  ...
  ...

Oysa bu kod Ruby programcıları için pek de güzel sayılmayacaktır.
Şöyle bir erişimin daha güzel olacağı aşikar.

# Meraba önerilerini döndürür
oneriler = "Meraba".oneriler
 
# Meraba'nın yazımı doğru mu?
puts "Meraba".yazim_dogru?
 
# Merhaba'yı heceler, heceleri kullanıma sunar
"Merhaba".hecele { |hece| print "#{hece}-" }

Bunları yapmak için öncelikle ufak bir sınıf ve modül yazmalı daha sonra bunu String sınıfına dahil etmeliyiz.

ZemberekJRuby sınıfı

# Basit Zemberek JRuby Kullanımı
#
# Murat ÇELİKER, murat.celiker@gmail.com
# http://ikinoktayazilim.com/wordpress/
#
 
require 'java'
require 'singleton'
 
# Basit Zemberek Ayrıştırıcımız
# Yalnızca bazı methodlar yer almaktadır
#
class ZemberekJRuby
 
 
include Singleton
 
 
# zemberek kütüphanemizi dahil edelim
 
require 'zemberek-tum-2.0.jar'
 
 
# zemberek sınıflarımızı dahil edelim
 
include_class 'net.zemberek.erisim.Zemberek'
 
include_class 'net.zemberek.tr.yapi.TurkiyeTurkcesi'
 
 
# bir tane zemberek oluşturalım
 
def initialize
   
@zembo = Zemberek.new(TurkiyeTurkcesi.new)
 
end
 
 
# kelimeDenetle çevirisi
 
def kelime_denetle(kelime)
   
@zembo.kelimeDenetle(kelime)
 
end
 
 
# hecele çevirisi
 
def kelime_hecele(kelime)
   
@zembo.hecele(kelime)
 
end
 
 
# oner çevirisi
 
def kelime_oner(kelime)
   
@zembo.oner(kelime)
 
end
 
end

Gördüğünüz gibi basit bir Zemberek JRuby sınıfı yazdık. Singleton kullanarak yalnızca bir kez oluşturulmasını da sağladık. Şimdi artık modülümüzü de yazıp String sınıfına dahil edip daha bi rubysel kullanım yapabiliriz.

TurkceJRb::Katar

# Katar değiştiricimiz
#
# örn: "deneme".denetle
#
module TurkceJRb
 
 
module Katar
   
   
def yazim_dogru?
     
ZemberekJRuby.instance.kelime_denetle(self)
   
end
 
   
def hecele
     
heceler = ZemberekJRuby.instance.kelime_hecele(self)
     
if block_given?
       
heceler.each { |hece| yield(hece) }
     
else
       
return heceler
     
end
   
end
 
   
def oneriler
       
oneri_listesi = ZemberekJRuby.instance.kelime_oner(self)
       
if block_given?
       
oneri_listesi.each { |oneri| yield(oneri) }
     
else
       
return oneri_listesi
     
end
   
end
 
 
end
 
end

Katar sınıfını dahil edelim

# String sınıfına eklemeler yapalım
#
class String
 
include TurkceJRb::Katar
end

Yeni Örneğimiz

İlk yazıdaki örneğimiz artık şu hale geldi:

# örneğimizi katar sınıfı methodlarına çevirelim
#
# String.oneriler , String.denetle gibi
#
yazi = ARGV.shift || 'meraba'
 
if yazi.yazim_dogru?
 
puts "#{yazi} dogru yazilmis"
 
yazi.hecele { |hece| print "#{hece}-" }
else
 
oneriler = yazi.oneriler
 
 
# önerilerimizi ekrana yazdıralım
 
puts "#{yazi} icin size #{oneriler.length} tane onerim var:"
 
oneriler.each_with_index do |oneri, i|
   
puts "Oneri #{i+1}: #{oneri}"
 
end 
 
 
# yahut
 
yazi.oneriler { |oneri| puts "#{oneri}" }
 
 
end

Dosyanın tamamına ait kaynak kod yazının devamında yer almaktadır.

Devamını Okumak İstiyorum

zemberek-jruby-nb.png

Zemberek ülkemizde yazılım adına yapılan en önemli çalışmalardan biridir bana göre. Eğer Pardus ya da OpenOffice kullandıysanız zemberek’in ne denli düzgün çalıştığına şahit olmuşsunuzdur.

Bu yazıda, JRuby[1] üzerinden Zemberek kütüphanelerine erişim konusuna değineceğim.
Sisteminizde JRuby’nin kurulu olduğu varsayılmıştır.
[1] JRuby %100 java ile yazılmış Ruby yorumlayıcısıdır.

Zemberek & JRuby

Öncelikle Zemberek ile çalışabilmek için Zemberek kütüphanelerine sahip olmamız gerekmektedir. Bu kütüphaneye ait dosyaları buradan bulabilir ya da zembereğin tüm modüllerini tek jar dosyası altında toplayan zemberek-tum-2.0.jar dosyasını indirebilirsiniz.

Bu dosyayı Java’nın hali hazırda bulabileceği bir yere kaydedebilir ya da oluşturacağımız dosya ile aynı yere kaydedebilirsiniz. (JRuby’ye require ile kolayca belirtmek için)

Dosyamızı kaydettikten sonra editörümüzü açıp zemberek kullanımına geçebiliriz.

zem.rb

İlk önce JRuby’ye zemberek kütüphanesini dahil etmesini söyleyelim.

require 'java'
 
# zemberek kütüphanemizi dahil edelim
require 'zemberek-tum-2.0.jar'

Zemberek kütüphanesinde kullanacağımız sınıfları projemize dahil edelim.

include_class 'net.zemberek.erisim.Zemberek'
include_class 'net.zemberek.tr.yapi.TurkiyeTurkcesi'

Zemberek için nesnemizi oluşturalım

zembo = Zemberek.new(TurkiyeTurkcesi.new)

Artık şöyle bir kullanım yapabiliriz.

# yazı belirtelim
yazi = ARGV.shift || 'meraba'
 
# belirtlen yazı için öneriler isteyelim
oneriler = zembo.oner(yazi)
 
# önerilerimizi ekrana yazdıralım
puts "#{yazi} icin size #{oneriler.length} tane onerim var:"
oneriler.each_with_index do |oneri, i|
 
puts "Oneri #{i+1}: #{oneri}"
end

Yazının devamında dosyaya ait kaynak kodları bulabilirsiniz.

Devamını Okumak İstiyorum

Sayfada yayımlanan yazılar aksi belirtmedildiği sürece Murat Arif Çeliker'e aittir. Yorumlar, yorumu yapan kullanıcıların kendi görüşleridir.
açılış - deneyhane - tasarılar - hakkımda - iletişim -

Sitede altyapı olarak Wordpress kullanılmıştır.