From d4e3732207b735a164e15a6805bb408c625bb2da Mon Sep 17 00:00:00 2001 From: rcyeske Date: Wed, 5 Dec 2001 00:43:55 +0000 Subject: *** empty log message *** --- contrib/genrpbindings | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100755 contrib/genrpbindings diff --git a/contrib/genrpbindings b/contrib/genrpbindings new file mode 100755 index 0000000..021d854 --- /dev/null +++ b/contrib/genrpbindings @@ -0,0 +1,93 @@ +#!/usr/bin/perl -w +# genrpbindings -- generate ratpoison bindings for various languages +# +# Ryan Yeske +# Tue Dec 4 16:15:53 PST 2001 +# +# currently generates bindings for: +# * Perl (Ratpoison.pm) +# * Emacs Lisp (ratpoison-cmd.el) +# +# add more languages! +# +# Bindings are just very thin wrappers, no argument checking is done. +# All of the functions return a string. +# +# Example: ratpoison --command='echo hello world' +# +# #!perl +# use Ratpoison; +# Ratpoison::echo ("hello world") +# +# ;;; elisp +# (require 'ratpoison-cmd) +# (ratpoison-echo "hello world") + +$\="\n"; + +# set this to your rp binary +$RATPOISON="/usr/local/bin/ratpoison"; + +# open source file +$ACTIONS_C="../src/actions.c"; +open ACTIONS_C or die "Can't open $ACTIONS_C"; + +# open target files +$PERL_FILE="./Ratpoison.pm"; +$ELISP_FILE="./ratpoison-cmd.el"; +open PERL, ">$PERL_FILE" or die "Can't create $PERL_FILE"; +open ELISP, ">$ELISP_FILE" or die "Can't create $ELISP_FILE"; + +# PERL preamble +print PERL 'package Ratpoison;'; +print PERL '$RATPOISON="',$RATPOISON,'";'; +print PERL 'sub rp_cmd { return `$RATPOISON -c "@_"`; }'; + +# ELISP preamble +print ELISP '(defvar ratpoison-program "',$RATPOISON,'")'; +print ELISP < (point-max) 1) + (- (point-max) 1) + (point-max))))) +PREAMBLE + +# bindings +while () { + if (m!/\*\@begin !) { + while () + { + last if (m!/\*\@end !); + if (/{\"(.+)\".+},/) { + $nbindings++; + print PERL "sub abort { return rp_cmd (\"$1\"); }"; + print ELISP "(defun-ratpoison $1)"; + } + } + } +} +print "$nbindings bindings."; + +# PERL postamble + +# ELISP postamble +print ELISP '(provide \'ratpoison-cmd)'; + +close PERL; +print "Created $PERL_FILE"; +close ELISP; +print "Created $ELISP_FILE"; -- cgit v1.2.3