From 779694a768bca0d5ea066cc626a8656cd7407bcf Mon Sep 17 00:00:00 2001 From: Jacek Kowalski <Jacek@jacekk.info> Date: Mon, 09 Jul 2012 17:50:31 +0000 Subject: [PATCH] Przeportowanie modułu synonimy do nowej wersji API --- /dev/null | 98 ------------------------ modules/70_synonimy/init.php | 38 +++++++++ modules/70_synonimy/handler.php | 68 +++++++++++++++++ 3 files changed, 106 insertions(+), 98 deletions(-) diff --git a/modules/70_synonimy.php b/modules/70_synonimy.php deleted file mode 100644 index 59c8d5e..0000000 --- a/modules/70_synonimy.php +++ /dev/null @@ -1,98 +0,0 @@ -<?php -class synonimy implements module { - static function register_cmd() { - return array( - 'synonimy' => 'cmd_synonimy', - 'synonim' => 'cmd_synonimy', - 'syn' => 'cmd_synonimy', - 's' => 'cmd_synonimy', - ); - } - - static function help($cmd = NULL) { - if($cmd === NULL) { - GGapi::putRichText('synonimy ', TRUE); - GGapi::putRichText('słowo', FALSE, TRUE); - GGapi::putRichText("\n".' Synonimy słowa '); - GGapi::putRichText('słowo'."\n", FALSE, TRUE); - } - else - { - GGapi::putRichText('synonimy ', TRUE); - GGapi::putRichText('słowo', FALSE, TRUE); - GGapi::putRichText(' (aliasy: '); - GGapi::putRichText('s, syn, synonim', TRUE); - GGapi::putRichText(')'."\n".' Podaje synonimy słowa '); - GGapi::putRichText('słowo'."\n\n", FALSE, TRUE); - GGapi::putRichText('Przykład', FALSE, FALSE, TRUE); - GGapi::putRichText("\n".'synonimy abecadło'."\n".'synonimy wyspa'); - } - } - - static function cmd_synonimy($nazwa, $args) { - if(!$args) { - GGapi::putText('Funkcja '); - GGapi::putRichText('synonimy', TRUE); - GGapi::putRichText(' wymaga argumentu '); - GGapi::putRichText('słowo'."\n\n", FALSE, TRUE); - GGapi::putRichText('Przykład', FALSE, FALSE, TRUE); - GGapi::putRichText("\n".'synonimy abecadło'."\n".'synonimy wyspa'); - - return; - } - - $args = funcs::utfToAscii(trim($args)); - - $fp = fopen('./data/synonimy/thesaurus.res', 'r'); - list($rows, $len) = explode('x', trim(fgets($fp, 50))); - $start = ftell($fp); - - $l = 0; - $p = $rows-1; - - while($l<$p) { - //echo 'L: '.$l.' - P: '.$p."\n"; - $s = floor(($l+$p)/2); - - $poz = $start + ($s*$len); - fseek($fp, $poz); - - $line = fread($fp, $len); - - $word = strtok($line, ';'); - $cmp = strcmp($word, $args); - - if($cmp >= 0) { - //echo 'Right'."\n"; - $p = $s; - } - else - { - //echo 'Left'."\n"; - $l = $s+1; - } - } - - $poz = $start + ($l*$len); - fseek($fp, $poz); - - $i = 1; - $return = ''; - while(TRUE) { - $line = fread($fp, $len); - $word = strtok($line, ';'); - - if($word != $args) break; - $return .= "\n".($i++).'. '.rtrim(substr(strstr($line, ';'), 1)); - } - - if(!empty($return)) { - GGapi::putText('Znalezione synonimy:'.$return); - } - else - { - GGapi::putText('Nie znaleziono synonimów podanego słowa'); - } - } -} -?> \ No newline at end of file diff --git a/modules/70_synonimy/handler.php b/modules/70_synonimy/handler.php new file mode 100644 index 0000000..7cbf08b --- /dev/null +++ b/modules/70_synonimy/handler.php @@ -0,0 +1,68 @@ +<?php +class bot_synonimy_module implements BotModule { + function handle($msg, $params) { + $args = trim($msg->args); + + if(empty($args)) { + return new BotMsg('Funkcja <b>synonimy</b> wymaga argumentu.<br />' + . '<br />'."\n" + . '<u>Przykład:</u><br />'."\n" + . 'synonimy abecadło<br />'."\n" + . 'synonimy wyspa'); + } + + $args = funcs::utfToAscii($args); + + $fp = fopen('./data/synonimy/thesaurus.res', 'r'); + list($rows, $len) = explode('x', trim(fgets($fp, 50))); + $start = ftell($fp); + + $l = 0; + $p = $rows-1; + + while($l<$p) { + //echo 'L: '.$l.' - P: '.$p."\n"; + $s = floor(($l+$p)/2); + + $poz = $start + ($s*$len); + fseek($fp, $poz); + + $line = fread($fp, $len); + + $word = strtok($line, ';'); + $cmp = strcmp($word, $args); + + if($cmp >= 0) { + //echo 'Right'."\n"; + $p = $s; + } + else + { + //echo 'Left'."\n"; + $l = $s+1; + } + } + + $poz = $start + ($l*$len); + fseek($fp, $poz); + + $i = 1; + $return = ''; + while(TRUE) { + $line = fread($fp, $len); + $word = strtok($line, ';'); + + if($word != $args) break; + $return .= '<br />'."\n".($i++).'. '.rtrim(substr(strstr($line, ';'), 1)); + } + + if(!empty($return)) { + return new BotMsg('Znalezione synonimy:'.$return); + } + else + { + return new BotMsg('Nie znaleziono synonimów podanego słowa'); + } + } +} +?> \ No newline at end of file diff --git a/modules/70_synonimy/init.php b/modules/70_synonimy/init.php new file mode 100644 index 0000000..15eabc6 --- /dev/null +++ b/modules/70_synonimy/init.php @@ -0,0 +1,38 @@ +<?php +class bot_synonimy_init implements BotModuleInit { + function register() { + $handler = array( + array( + 'file' => 'handler.php', + 'class' => 'bot_synonimy_module', + 'method' => 'handle', + ) + ); + + return array( + 'synonimy' => $handler, + 'synonim' => $handler, + 'syn' => $handler, + 's' => $handler, + ); + } + + function help($params = NULL) { + if($params === NULL) { + return new BotMsg('<b>synonimy</b> <i>słowo</i><br />'."\n" + . ' Synonimy słowa <i>słowo</i>.<br />'."\n"); + } + else + { + return new BotMsg('<b>synonimy</b> <i>słowo</i> (aliasy: <b>s, syn, synonim</b>)<br />'."\n" + . ' Podaje synonimy słowa <i>słowo</i> (w mianowniku liczby pojedynczej).<br />'."\n" + . '<br />'."\n" + . '<u>Przykład:</u><br />'."\n" + . 'synonimy abecadło<br />'."\n" + . 'synonimy wyspa'); + } + } +} + +return 'bot_synonimy_init'; +?> \ No newline at end of file -- Gitblit v1.9.1