Jacek Kowalski
2012-06-30 64d3114c3eeb933152732e024b81b2a94c8db87f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php
class ort implements module {
    static function register_cmd() {
        return array(
            'o' => 'cmd_ort',
            'ort' => 'cmd_ort',
        );
    }
    
    static function help($cmd=NULL) {
        if($cmd === NULL) {
            GGapi::putRichText('ort ', TRUE);
            GGapi::putRichText('słowo', FALSE, TRUE);
            GGapi::putRichText("\n".'   Słownik ortograficzny'."\n");
        }
        else
        {
            GGapi::putRichText('ort ', TRUE);
            GGapi::putRichText('słowo', FALSE, TRUE);
            GGapi::putRichText(' (alias: ');
            GGapi::putRichText('o', TRUE);
            GGapi::putRichText(')'."\n".'   Sprawdza w słowniku ortograficznym ');
            GGapi::putRichText('słowo', FALSE, TRUE);
        }
    }
    
    static function cmd_ort($name, $arg) {
        if(empty($arg)) {
            GGapi::putText('Funkcja ');
            GGapi::putRichText('ort', TRUE);
            GGapi::putRichText(' wymaga argumentu ');
            GGapi::putRichText('slowo'."\n\n", FALSE, TRUE);
            GGapi::putRichText('Przykłady', FALSE, FALSE, TRUE);
            GGapi::putRichText("\n".'ort grzegżółka'."\n".'ort warsawa');
            
            return;
        }
        
        $proc = proc_open('aspell --lang=pl --encoding=utf-8 --ignore-case=true pipe', array(array('pipe', 'r'), array('pipe', 'w'), array('file', '/dev/null', 'w')), $pipe);
        
        fwrite($pipe[0], trim($arg)."\n");
        fclose($pipe[0]);
        
        $status = proc_get_status($proc);
        while($status['running']) {
            usleep(1);
            $status = proc_get_status($proc);
        }
        
        fgets($pipe[1], 1024);
        $spell = fread($pipe[1], 4096);
        
        if(substr($spell, 0, 1)=='*') {
            GGapi::putRichText('Pisownia poprawna', FALSE, FALSE, FALSE, 0, 150, 0);
        }
        elseif(substr($spell, 0, 1)=='#') {
            GGapi::putText('Brak propozycji poprawnej pisowni');
        }
        else
        {
            $spell = explode(': ', $spell, 2);
            $spell = explode(',', $spell[1]);
            
            $txt = 'Prawdopobnie chodziło ci o:';
            foreach($spell as $val) {
                $txt .= "\n".'- '.trim($val);
            }
            
            GGapi::putText($txt);
        }
        
        fclose($pipe[1]);
        proc_close($proc);
    }
}
?>