aboutsummaryrefslogtreecommitdiffstats
path: root/docs/parse_xsfuncs.pl
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xdocs/parse_xsfuncs.pl55
1 files changed, 55 insertions, 0 deletions
diff --git a/docs/parse_xsfuncs.pl b/docs/parse_xsfuncs.pl
new file mode 100755
index 0000000..4ce196f
--- /dev/null
+++ b/docs/parse_xsfuncs.pl
@@ -0,0 +1,55 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+
+use Glib::ParseXSDoc;
+use File::Find;
+use Data::Dumper;
+
+my $home = $ENV{HOME};
+my $src_dir = "$home/sources/irssi/src/perl";
+$ENV{FORCE_DATA_DUMPER} = 1;
+print "=over\n\n";
+
+find(\&process_file, $src_dir);
+
+print "=back\n\n";
+
+sub process_file {
+ my $filename = $_;
+ return unless $filename =~ /\.xs$/;
+
+ my $filepath = $File::Find::name;
+# print "Processing file: $filepath\n";
+
+ my $parser = Glib::ParseXSDoc->new; #xsdocparse($filepath);
+
+ $parser->parse_file($filepath);
+ $parser->canonicalize_xsubs;
+ $parser->swizzle_pods;
+ $parser->preprocess_pods;
+ $parser->clean_out_empty_pods;
+
+ #print Dumper($parser->{data}), $/;
+ my $data = $parser->{data};
+ foreach my $package (keys %$data) {
+ #print "Package: $package\n";
+ my $subs = $data->{$package}->{xsubs};
+ foreach my $sub (@$subs) {
+ my $sub_name = $sub->{symname};
+ next if $sub_name =~ m/::$/;
+ print_msglevel($sub_name);
+ #print $sub->{symname}, $/;
+ }
+ }
+}
+
+sub print_msglevel {
+ my ($sym) = @_;
+ if ($sym =~ m/::MSGLEVEL/) {
+ $sym =~ s/^Irssi:://;
+ print "=item C<$sym>\n\n";
+ }
+}
+