Gtk-Perl

 view release on metacpan or  search on metacpan

tools/gendefs.pl  view on Meta::CPAN

#!/usr/bin/perl -w

package gendefs;

sub gendefs {
	local(@ARGV) = @_;

# Minimal LISP lexer/parser. No quote escapes currently handled.
sub parse_lisp
{
	local($_) = @_;
	my(@result) = ();
	my($node) = \@result;
	my(@parent) = ();
	while ( m/(\()|(\))|("(.*?)")|(;.*?$)|([^\(\)\s]+)/gm) {
		if (defined($1)) {
			my($new) = [];
			push @$node, $new;
			push @parent, $node;
			$node = $new;
		} elsif (defined($2)) {
			$node = pop @parent;
		} elsif (defined($3)) {
			push @$node, $4;
		} elsif (defined($6)) {
			push @$node, $6;
		}
	}
	@result;
}

sub perlize {
	local($_) = $_[0];
#	if (!/^(Gtk|Gdk)/) {
#		s/^([A-Z][a-z]*)/Gtk$1::/;
#	}
#	s/^Gtk/Gtk::/;
#	s/^Gtk::Gdk/Gtk::Gdk::/;
#	s/^Gdk/Gtk::Gdk::/;
	foreach $p (@prefix) {
		my($f, $t) = @{$p};
		next if /^${t}::/;
		s/^$f/${t}::/;
	}
	$_;
}

sub xsize {
	local($_) = @_;
	s/::/__/g;
	$_;
}

sub typeize {
	local($_) = @_;
	#my ($old) = $_;
	#s/([A-Z])/_$1/g;
	s/([A-Z][a-z])/_$1/g;
	s/([a-z])([A-Z])/$1_$2/g;
	$_ = uc $_;
	s/_([A-Z])_/_$1/g;
	s/^_GTK//;
	# exceptions
	#s/GNOME_MD_I/GNOME_MDI_/;
	#warn "BOO: $_\n" if "GTK_TYPE$_" ne oldtypeize($old);
	return "GTK_TYPE".$_;



( run in 0.349 second using v1.01-cache-2.11-cpan-bbe5e583499 )