Current directory :
Root directory

Tree directory :
sef@njs.netlab.cz
  Filter :
  Language :  
 
# $Id: socials.tcl,v 1.4 2003/12/03 20:21:46 aleksey Exp $
 
namespace eval socials {
    set social_list {}
}
 
proc socials::load {filename {enc utf-8}} {
    variable social
 
    set f [file join [file dirname [info script]] $filename]
    set fd [open $f]
    fconfigure $fd -encoding $enc
 
    while {1} {
	set s [gets $fd]
	if {$s == "" && [eof $fd]} break
	set s [string trim $s]
	if {$s == "#SOCIALS" || $s == ""} continue
	if {$s == "#0"} break
 
	set names [split $s]
	set names [lmatch -regexp $names {[^\d]}]
	#puts $names
	add $names
 
	foreach kind {char_no_arg others_no_arg char_found others_found \
			  vict_found char_not_found char_auto others_auto} {
	    set s [string trim [gets $fd]]
	    if {$s == {$}} {
		continue
	    } elseif {$s == "#"} {
		break
	    }
	    assign $names $kind $s
	}
    }
 
    close $fd
}
 
 
proc socials::add {names} {
    variable social
    variable social_list
 
    foreach name $names {
	lappend social_list $name
    }
    foreach kind {char_no_arg others_no_arg char_found others_found \
		      vict_found char_not_found char_auto others_auto} {
	assign $names $kind ""
    }
}
 
proc socials::assign {names kind val} {
    variable social
    foreach name $names {
	set social($kind,$name) $val
    }
}
 
 
socials::load socials.cz
#puts [array get socials::social]
 
proc socials::substitute {s from to} {
    regsub -all {\$n\d?} $s /me s
    regsub -all {\$e\d?} $s /me s
    #regsub -all {\$e\d?} $s $from s
    regsub -all {\$N\d?} $s $to s
    regsub -all {\$E\d?} $s $to s
    return $s
}
 
proc socials::interp {soc from to} {
    variable social
 
    if {$to == ""} {
	return [substitute $social(others_no_arg,$soc) $from $to]
    } else {
	return [substitute $social(others_found,$soc) $from $to]
    }
}
 
#puts [socials::interp giggle asd ""]
#puts [socials::interp ползать asd qwe]
 
proc socials::commands_comps {chatid compsvar wordstart line} {
    variable social_list
    upvar 0 $compsvar comps
 
    if {!$wordstart} {
	foreach soc $social_list {
	    lappend comps "/$soc "
	}
    }
    #debugmsg completion "SOC: $comps"
}
 
hook::add generate_completions_hook \
    [namespace current]::socials::commands_comps 51
 
#puts [llength $socials::social_list]
 
proc socials::handle_commands {chatid user body type} {
    variable social_list
    variable social
 
    #if {$type != "groupchat"} return
    if {[string index $body 0] != "/"} return
 
    set we [string wordend $body 1]
    set command [string trim [crange $body 1 $we]]
    set to [string trim [crange $body $we end]]
 
    if {[lcontain $social_list $command]} {
	set from [chat::get_nick [chat::our_jid $chatid] groupchat]
	if {$to == $from} {
	    set s [substitute $social(others_auto,$command) $from $to]
	} elseif {$to == ""} {
	    set s [substitute $social(others_no_arg,$command) $from $to]
	    if {$s == ""} {
		set se [substitute $social(char_no_arg,$command) $from $to]
		chat::add_message $chatid $chatid error $se {}
	    }
	} else {
	    set s [substitute $social(others_found,$command) $from $to]
	}
 
	if {$s != ""} {
	    #hook::run chat_send_message_hook $chatid $user $s $type
	    ::plugins::send_message $chatid $user $s $type
	    ::plugins::draw_message $chatid $user $s $type
	}
	return stop
    }
}
 
hook::add chat_send_message_hook \
    [namespace current]::socials::handle_commands 50
 
VIP: No | Used: 622M/101M | 0.035 sec / GZIP-2