summaryrefslogtreecommitdiffstats
path: root/scripts/phpdoc.pl
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/phpdoc.pl')
-rw-r--r--scripts/phpdoc.pl134
1 files changed, 134 insertions, 0 deletions
diff --git a/scripts/phpdoc.pl b/scripts/phpdoc.pl
new file mode 100644
index 0000000..79018d2
--- /dev/null
+++ b/scripts/phpdoc.pl
@@ -0,0 +1,134 @@
+# Copyright (C) March, 19th 2002 Author FoxMaSk <odemah@phpfr.org>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+#Requirement : get the file funcsummary.txt from the CVS of http://php.net
+use strict;
+use Irssi;
+use vars qw($VERSION %IRSSI);
+
+$VERSION = "0.0.6";
+%IRSSI = (
+ authors => 'Foxmask',
+ contact => 'odemah@phpfr.org ',
+ name => 'PhpDoc',
+ description => 'Display all functions of the famous language PHP which is used in the funcsummary.txt file in the CVS of http://php.net',
+ license => 'GNU GPL',
+ url => 'http://team.gcu-squad.org/~odemah/'
+);
+
+#PARMS
+
+#file name that contains all function list and definition
+my $doc_file = "$ENV{HOME}/phpdoc/funcsummary.txt";
+my $cmd_php = "!man";
+my @channel_php = ();
+$channel_php[0] = "#phpfr";
+$channel_php[1] = "#phpfrance";
+my $mirror_php = "http://phpnet.phpfr.org/manual/fr/";
+#==========================END OF PARMS======================================
+
+#init array
+my @doc = ();
+my $x = 0;
+
+#The main function
+sub doc_find {
+ my ($server, $msg, $nick, $address, $target) = @_;
+
+ my $keyword="";
+ my $def="";
+ my $cmd="";
+
+ #split the *action* and the rest of the line
+ ($cmd,$keyword) = split / /,$msg,2;
+
+ #to query
+ if (lc($cmd) eq $cmd_php and (lc($target) eq $channel_php[0] or lc($target) eq $channel_php[1]) ) {
+ if ($keyword eq '') {
+ if ( $server->channel_find($target)->nick_find($nick)->{voice} or $server->channel_find($target)->nick_find($nick)->{op} ) {
+ $server->command("/msg -$server->{tag} $target $cmd_php: \002$cmd_php <function>\002 example $cmd_php mysql_connect");
+ } else {
+ $server->command("/msg $nick $cmd_php: \002$cmd_php <function>\002 example $cmd_php mysql_connect");
+ }
+ }
+ else {
+ for ($x=0;$x < @doc;$x++) {
+ #ignore comment
+ if ( $doc[$x] =~ /^(object|unknown|mixed|class|resource|void|bool|array|string|int) $keyword/) {
+ $def = $doc[$x];
+ chomp($def);
+ $def =~ s/\s+/ /g;
+ $keyword =~ s/_/-/g ;
+ $def .= ". More Details on ".$mirror_php ."function.".$keyword.".php";
+ last;
+ }
+ }
+
+ if ( $def ne '' ) {
+ $keyword =~ s/-/_/g ;
+ #if the user is voice or op ; display the description in the channel
+ if ( $server->channel_find($target)->nick_find($nick)->{voice} or $server->channel_find($target)->nick_find($nick)->{op} ) {
+ $server->command("/msg -$server->{tag} $target $def");
+ }
+ #else display it to the $nick only
+ else {
+ $server->command("/msg $nick \002$keyword\002=$def");
+ }
+ }
+ #definition not found ; so we tell it to $nick
+ else {
+ $server->command("/msg $nick $keyword does not exist");
+ Irssi::signal_stop();
+ }
+ }
+ }
+}
+
+
+#load datas from funcsummary.txt file
+sub load_doc {
+ my $doc_line="";
+ if (-e $doc_file) {
+ @doc = ();
+ Irssi::print("Loading doc from $doc_file");
+ local *DOC;
+ open(DOC,"$doc_file");
+ local $/ = "\n";
+ while (<DOC>) {
+ chomp();
+ #ignore comment and get all lines beginning with ... :
+ if ( /^(object|unknown|mixed|class|resource|void|bool|array|string|int)/) {
+ #getting the line description
+ $doc_line = $_;
+ chomp($doc_line);
+ #getting the line definition
+ $doc_line .= <DOC>;
+ chomp($doc_line);
+ push(@doc,$doc_line);
+ }
+ }
+ close DOC;
+ Irssi::print("Loaded " . scalar(@doc) . " record(s)");
+ } else {
+ Irssi::print("Cannot load $doc_file");
+ }
+}
+
+load_doc();
+
+Irssi::signal_add_last('message public', 'doc_find');
+Irssi::print("Php Doc Management $VERSION loaded!");
+