kavramı, ingilizcede 'swearing' ve Türkçe meaili küfürbaz olan kelimenin kısaltılmasından geliyor. Daha önce sadece küfür koruması amaclı yayımlamış oldugum $sw identifierin ilerlemiş versionu diyebiliriz.
Ve bu tarz soru ve söylemlere cevaben; SW'nin diger spam/küfür korumalarından farkı, döngü içerisine girmeden çok daha hızlı search yapabilmesi ve tamamen
gibi kullanılabilir olmasıdır. Bu durum bize çok daha hassas/esnek ve hızlı sonuçları vermektedir.
Bu muhabbeti fazla uzatmadan kullanımı hakkında bilgi verelim.
Bu özellik alfabe dışındaki karakterlerin kullanımı ile yapılan küfürleri/reklamları engellemek amacı ile eklenmiştir. Yukarıda aliasa gönderilen ikinci kısımdaki argümanlar (Nc) bizim almak istedigimiz sonuçlara yön verir. Bunu örnek ile açıkayacak olursak
parametresi aliasa bana text içindeki alfabe dışındaki absurd karakterlerin sayısını döndermesini söylüyor.
Burada göründügü gibi iki'2' argümanı ile aliasa bana TEXT içerisindeki alfabe dışındaki ikinci karakteri çevir diyor, eger üç'3' olsaydı deger
olarak dönerdi.
Göründügü gibi 'c' argümanı ile aliasa gönderilen TEXT içerisindeki alfabe dışındaki karakterler temizlenerek tekrar bize döndürülmüş.
Aliasa ikinci bir argüman gönderilmemiş ve bize dönen degerde sadece TEXT argümanı içerisindeki alfabe dışındaki karakterler var.
başlıklı konudaki fikri üzerine yeni bir özellik daha eklenmiştir.
Elimizde 's{é][r{c}\æ/n' şeklinde bir karakter katarımız var. Biz bu karakter katarını Türkçe alfabesine göre düzelemek istiyoruz, o zaman
Sonuç sercan olacaktır. Görüldügü üzere ([,],{,},\,/) karakterleri temizlenip Türkçe alfabesinde yer almayan '
' harflerine çevrilmiştir. Tabi bu karakterlerin Türkçe'de hangi karaktere karşılık geldiğini bizim belirtmemiz gerekir, bildigimiz üzere bilgisayar buna kendisi karar verebilecek kadar akıllı değildir
Umarım anlaşılır olmuştur. Bu eklentide SW'nin yazılım amacına uygun biçimde yazımıştır yani döngüye girmeden işlem yapıyor.
Kod: Kodu kopyalamak için üzerine çift tıklayın!
;##########################
;# Coded Date 02/05/2008
;# Swearing -> SW ;)
;# Coded by SpecifiC
;# mail/MSN:
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
alias sw {
if $isid {
;### # # # # # # # # # # # # # # # # # # # ###
;### Alfabe dışındaki karakterler ###
;### ###
;### $sw(TEXT,Nc).asc veya $sw(TEXT).asc ###
;### N paremetresi '0'(sıfır) degerinde ###
;### ise TEXT içerisindeki alfabe dışın- ###
;### daki karakterlerin sayısını verir. ###
;### Eğer '0'(sıfır)dan büyük bir değer ###
;### ise o sıradaki karakteri deger ola- ###
;### rak çevirir. ###
;### ###
;### exp: ###
;### echo $sw(T^EX%T&,0).asc sonuç => 3 ###
;### echo $sw(T^EX%T&,2).asc sonuç => % ###
;### echo $sw(T^EX%T&,c).asc sonuç => TEXT ###
;### echo $sw(T^EX%T&).asc sonuç => ^%& ###
;### ###
if $regex($prop,^asc$) {
if ($len($2) == 0) {
return $regsubex($1,/(\w+|\s|ı|İ|Ü|ü|Ö|ö|Ç|ç|Ş|ş)/g,$null)
}
elseif $regex($2,^0$) {
return $len($regsubex($1,/(\w+|\s|ı|İ|Ü|ü|Ö|ö|Ç|ç|Ş|ş)/g,$null))
}
elseif ($regsubex($2,/(\D+)/g,$null) > 0) {
var %n = $v1
if ($regex(ASCII_C,$regsubex($1,/(\s|ı|İ|Ü|ü|Ö|ö|Ç|ç|Ş|ş)/g,$null),/(\W+)/g) > %n) {
return $regml(ASCII_C,%n)
}
else {
return 0
}
}
elseif $regex($2,^c$) {
;replaced $regsubex($1,/(\W)/g,$iif(\1 != $chr(32),$null,\1))
return $regsubex($1,/(\W)/g,$iif(!$istok($+($chr(32),|ı|Ü|ü|Ç|ç|Ö|ö|Ş|ş|İ),\1,124),$null,\1))
}
elseif $regex($2,^r$) {
var %sw.text = $1
;# No loop ;)
%sw.text = $regsubex(%sw.text,/(.)/g,$iif($hget(sw.data,\1),$v1,\1))
%sw.text = $regsubex(%sw.text,/(\W)/g,$iif(!$istok($+($chr(32),|ı|Ü|ü|Ç|ç|Ö|ö|Ş|ş|İ),\1,124),$null,\1))
return $regsubex(%sw.text,/(.)\1+/g,\1))
}
else {
echo $color(info) -a * [Geçersiz parametre : $+($chr(36),sw,$chr(40),<TEXT>,$chr(44),$2,$chr(41))$+ .asc]
}
}
;### # # # # # # # # # # # # # # # # # # # ###
;### Tekrar koruması ###
;### $sw(TEXT,SN,LINE,<FLAG>).rep ###
;### flag: 'r' bu flag ile veri gönderil- ###
;### diginde 'seelllaamm' şeklindeki cüm- ###
;### leyi 'selam' olarak dikkate alır. ###
;### exp: ###
;### $sw(Test test test,2,3,r).rep ###
;### ###
if $regex($prop,^rep$) {
if $1 && $2 && $3 {
var %sn = $regsubex($2,/(\D+)/g,$null), %line = $regsubex($3,/(\D+)/g,$null)
if $regex($4,^r$) || $4 == $null {
var %rgx = $iif($4 == $null,$1,$regsubex($1,/(.)\1+/g,\1)))
hinc $+(-mu,%sn) sw.replace $md5($+($nick,$chan,%rgx,%sn,%line)) 1
if (%line == $hget(sw.replace,$md5($+($nick,$chan,%rgx,%sn,%line)))) {
.hdel sw.replace $md5($+($nick,$chan,%rgx,%sn,%line))
return $true
}
else {
return $false
}
}
else {
echo $color(info) -a * [Geçersiz parametre]
}
}
}
;### # # # # # # # # # # # # # # # # # # # ###
;### Flood Protect ###
;### $sw(SN,LINE).flood ###
;### ###
if $regex($prop,^flood$) {
if $regex($1,\d) && $regex($2,\d) {
var %s = $regsubex($1,/(\D+)/g,$null), %line = $regsubex($2,/(\D+)/g,$null)
hinc $+(-mu,%s) sw.flood $md5($+($nick,$chan,%s,%line)) 1
if (%line == $hget(sw.flood,$md5($+($nick,$chan,%s,%line)))) {
.hdel sw.flood $md5($+($nick,$chan,%s,%line))
return $true
}
else {
return $false
}
}
else {
echo $color(info) -a * [Geçersiz parametre]
}
}
;### $sw(TEXT,r,biçim).spm
if $regex($prop,^spm$) {
;### Searching Regex
var %d = $hget(sw.data,0).item, %t = $regsubex($1,/(.)\1+/g,\1))
while %d {
if $regex($hget(sw.data,%d).item,^(data_)\d+) {
var %data = $replace($hget(sw.data,$hget(sw.data,%d).item),$chr(7),$chr(124))
if $regex(%t,$+(/,%data,/gi)) {
var %c = $3
return $iif($regex($2,^r$),$iif($3 && $regex($3,[[:cntrl:]]),$regsubex(%t,$+(/,$chr(40),%data,$chr(41),/gi),$+(%c,\1,$chr(15))),$regsubex(%t,$+(/,$chr(40),%data,$chr(41),/gi),$+($chr(3),4,$chr(2),\1,$chr(15)))),$true)
halt
}
}
dec %d
}
return $iif($regex($2,^r$),$iif($3 && $regex($3,[[:cntrl:]]),$regsubex(%t,$+(/,$chr(40),%data,$chr(41),/gi),$+(%c,\1,$chr(15))),$regsubex(%t,$+(/,$chr(40),%data,$chr(41),/gi),$+($chr(3),4,$chr(2),\1,$chr(15)))),$false)
;### Searching End
}
}
else {
if $regex($1,^-[lasrd]+$) {
;### Flag -a
if $regex($1,^-a$) {
;var %exsess = $regsubex($2,/^(\()(.+)(\))$/g,\2)
var %exsess = $2
var %crop_wr = $iif($regex(%exsess,((.)*(\()(.)+(\|)(.)+(\))(.)*)),$true,$false), %replaced = $replace(%exsess,$chr(40),$chr(7),$chr(41),$chr(8))
var %crop_pc_n = $iif($regex(%replaced,$+(/,$chr(7),/g)) == $regex(%replaced,$+(/,$chr(8),/g)) && $regex(%exsess,((.)*(\()(.)+(\|)(.)+(\))(.)*)) && !$regex(%exsess,((.)*(\()(\))(.)*)),$true,$false)
if %crop_wr == $false || %crop_pc_n == $false && $regex(%exsess,[()|]) {
echo $color(info) -a * Hatalı Exsepssion: $2
halt
}
var %i = 0
;### Searching ###########################
var %d = $hget(sw.data,0).item
while %d {
if $istok($hget(sw.data,$hget(sw.data,%d).item),%exsess,7) == $true {
goto hata
break
}
dec %d
}
;### Searching End #######################
:loop
%i = %i + 1
if $len($hget(sw.data,$+(data_,%i))) > 800 { goto loop }
.hadd -m sw.data $+(data_,%i) $addtok($hget(sw.data,$+(data_,%i)),%exsess,7)
echo $color(info) -a * Eklendi: %exsess
halt
:hata
echo $color(info) -a * Zaten mevcut
halt
}
;### Flag -s
if $regex($1,^-((l*)(s)(l*))$) {
echo $color(info) -a * Data Base Taranıyor
echo $color(info) -a $str($chr(160),1) Aranan Kelime: $2-
var %h = $hget(sw.data,0).item, %s = 0
while %h {
if $regex($hget(sw.data,%h).item,^(data_)\d+) {
var %nt = $numtok($hget(sw.data,%h).data,7)
while %nt {
if $regex($2-,$+(/,$gettok($hget(sw.data,%h).data,%nt,7),/gi)) {
%s = %s + 1
echo $color(info) -a $str($chr(160),4) %s -> $gettok($hget(sw.data,%h).data,%nt,7)
}
dec %nt
}
}
dec %h
}
if (%s == 0) { echo $color(info) -a $str($chr(160),4) Sonuç bulunamadı (!) }
echo $color(info) -a * Arama Sona Erdi
}
;### Falg -l
if $regex($1,^-(s?)l(s?)$) {
echo $color(info) -a * Data Base Listeleniyor
var %h = $hget(sw.data,0).item, %s = 0
while %h {
if $regex($hget(sw.data,%h).item,^(data_)\d+) {
var %nt = $numtok($hget(sw.data,%h).data,7)
while %nt {
if $gettok($hget(sw.data,%h).data,%nt,7) {
%s = %s + 1
echo $color(info) -a $str($chr(160),4) %s -> $gettok($hget(sw.data,%h).data,%nt,7)
}
dec %nt
}
}
dec %h
}
if (%s == 0) { echo $color(info) -a $str($chr(160),4) Data Yok (!) }
echo $color(info) -a * Listeleme Sona Erdi
}
;### Flag -r
if $regex($1,^-r$) {
var %d = $hget(sw.data,0).item, %done
while %d {
if $istok($hget(sw.data,$hget(sw.data,%d).item),$2,7) == $true {
.hadd sw.data $hget(sw.data,%d).item $remtok($hget(sw.data,%d).data,$2,7)
%done = $true
}
dec %d
}
if %done { echo $color(info) -a * Silindi: $2 } | else { echo $color(info) -a * Eşleşen data bulunamadı }
}
;### Flag -da AND -dr
if $regex($1,^-((a|r|l)?)d((a|r|l)?)) {
var %item = $iif($len($strip($2)) == 1,$strip($2),$null), %data = $iif($len($strip($3)) == 1,$strip($3),$null)
if %item && %data || $regex($1,l) {
if $regex($1,a) {
if !$hget(sw.data,%item) {
.hadd -m sw.data %item %data
echo $color(info) -a * Eklendi: %item > %data
}
else {
echo $color(info) -a * Zaten mevcut
}
}
if $regex($1,r) {
if $hget(sw.data,%item) {
.hdel sw.data %item
echo $color(info) -a * Silindi: %item
}
else {
echo $color(info) -a * Zaten mevcut değil.
}
}
if $regex($1,l) {
echo $color(info) -a * Data Base Listeleniyor: (Değiştirilen karakterler)
var %i = $hget(sw.data,0).item
while %i {
if ($len($hget(sw.data,%i).item) == 1) {
echo $color(info) -a $str($chr(160),4) $hget(sw.data,%i).item -> $hget(sw.data,%i).data
}
dec %i
}
echo $color(info) -a * Liste Sonu
}
}
else {
echo $color(info) -a * Geçerli bir veri giriniz.
echo $color(info) -a * ÖRN: /sw -da <karakter> <yeni karakter>
echo $color(info) -a * ÖRN: /sw -da é e
}
}
;### DIR
if !$isfile($scriptdirswdata) { mkdir $+(",$scriptdirswdata,") }
.hsave sw.data $+(",$scriptdirswdata\swdata.db,")
}
else {
echo $color(info) -a * Böyle bir flag mevcut değil!
}
}
}
;### Starting
on *:start: {
if $isfile($scriptdirswdata\swdata.db) { if !$hget(sw.data) { .hmake sw.data 1000 } | hload sw.data $+(",$scriptdirswdata\swdata.db,") }
}