tfun with applescript - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 5645c4afff3bfd3f1a92d01a4d31b25c6e5b9d89
 (DIR) parent 8bead1099899437fd522244e9ba1c7a287a0cf7a
 (HTM) Author: rsc <devnull@localhost>
       Date:   Tue, 11 Jan 2005 19:23:52 +0000
       
       fun with applescript
       
       Diffstat:
         M bin/9                               |       2 +-
         M bin/doctype                         |       2 +-
         A bin/man                             |     120 +++++++++++++++++++++++++++++++
         A bin/page                            |      53 ++++++++++++++++++++++++++++++
         M bin/web                             |      71 +++++++++++++++++++++++++++++--
       
       5 files changed, 242 insertions(+), 6 deletions(-)
       ---
 (DIR) diff --git a/bin/9 b/bin/9
       t@@ -1,6 +1,6 @@
        #!/bin/sh
        
       -export PLAN9=/usr/local/plan9
       +export PLAN9=/Users/rsc/plan9
        export PATH=$PLAN9/bin:$PATH
        
        case $# in
 (DIR) diff --git a/bin/doctype b/bin/doctype
       t@@ -1,4 +1,4 @@
       -#!/usr/bin/env $PLAN9/bin/rc
       +#!/usr/bin/env rc
        # doctype:  synthesize proper command line for troff
        
        troff=troff
 (DIR) diff --git a/bin/man b/bin/man
       t@@ -0,0 +1,120 @@
       +#!/usr/bin/env rc
       +
       +. $PLAN9/man/fonts
       +
       +cmd=n
       +sec=()
       +S=$PLAN9/man
       +d=0
       +
       +fn roff {
       +        preproc=()
       +        x=`{doctype $2}
       +        if (~ $1 t) {
       +                if(~ $x *grap*)
       +                        preproc=($preproc grap)
       +                if(~ $x *pic*)
       +                        preproc=($preproc pic)
       +                Nflag=-Tutf
       +        }
       +        if not {
       +                Nflag=-N
       +        }
       +        if(~ $x *eqn*)
       +                preproc=($preproc eqn)
       +        if(~ $x *tbl*)
       +                preproc=($preproc tbl)
       +        switch($#preproc) {
       +                case 0
       +                        {echo -n $FONTS; cat $2< /dev/null} | troff $Nflag -$MAN 
       +                case 1
       +                        {echo -n $FONTS; cat $2< /dev/null} | $preproc | troff $Nflag -$MAN
       +                case 2
       +                        {echo -n $FONTS; cat $2< /dev/null} | $preproc(1) | $preproc(2) | troff $Nflag -$MAN
       +                case 3
       +                        {echo -n $FONTS; cat $2< /dev/null} | $preproc(1) | $preproc(2) | $preproc(3) | | troff $Nflag -$MAN
       +                case *
       +                        {echo -n $FONTS; cat $2< /dev/null} | $preproc(1) | $preproc(2) | $preproc(3) | | $preproc(4) | troff $Nflag -$MAN
       +        }
       +}
       +
       +fn page {
       +        if(test -d /mnt/wsys/acme)
       +                /bin/page -w
       +        if not
       +                /bin/page
       +}
       +
       +
       +while(~ $d 0) {
       +        if(~ $#* 0) {
       +                echo 'Usage: man [-ntp] [-s sec] [0-9] [0-9] ... name1 name2 ...' >[1=2]
       +                exit
       +        }
       +        if(test -d $S/man$1){
       +                sec=($sec $1)
       +                shift
       +        }
       +        if not switch($1) {
       +                case -t ; cmd=t ; shift
       +                case -n ; cmd=n ; shift
       +                case -p ; cmd=p ; shift
       +                case -P ; cmd=P ; shift
       +                case * ; d=1
       +        }
       +}
       +if(~ $#sec 0) {
       +        sec=`{ls -pd $S/man[0-9]* | sed 's/man//'}
       +}
       +ix=$S/man$sec/INDEX
       +if(~ $#* 1) pat='^'^$1^' '
       +if not pat='^('^`{echo $* | 9sed 's/ /|/g'}^') '
       +fils=()
       +for(i in $S/man$sec){
       +        if(/bin/test -f $i/INDEX){
       +                try=`{grep $pat $i/INDEX | 9sed 's/^[^ ]* //'}
       +                if(! ~ $#try 0)
       +                        fils=($fils $i/$try)
       +        }
       +}
       +# bug: should also do following loop if not all pages found
       +if(~ $#fils 0) {
       +        # nothing in INDEX. try for file of given name
       +        for(i) {
       +                for(n in $sec) {
       +                        try=$S/man$n/$i.$n*
       +                        if (/bin/test -f $try)
       +                                fils=($fils $try)
       +                }
       +        }
       +        if(~ $#fils 0) {
       +                echo 'man: no manual page' >[1=2]
       +                exit 'no man'
       +        }
       +}
       +for(i in $fils) {
       +        if(! /bin/test -f $i)
       +                echo need $i >[1=2]
       +        if not {
       +                switch($cmd) {
       +                case t
       +                        roff t $i
       +
       +                case p
       +                        roff t $i | proof
       +
       +                case P
       +                        roff t $i |tr2post |psfonts >/tmp/man.$pid.ps
       +                        psv /tmp/man.$pid.ps
       +                        rm -f /tmp/man.$pid.ps
       +
       +                case n
       +                        roff n $i | 9sed '
       +                                ${
       +                                       /^$/p
       +                                }
       +                                //N
       +                                /^\n$/D'
       +                }
       +        }
       +}
 (DIR) diff --git a/bin/page b/bin/page
       t@@ -0,0 +1,53 @@
       +#!/bin/sh
       +
       +preview()
       +{
       +        list=""
       +        pwd=`pwd`
       +        for i in "$@"
       +        do
       +                if [ -n "$list" ]
       +                then
       +                        list="$list, "
       +                fi
       +                n=`cleanname -d $pwd $i | sed 's!/!:!g'`
       +                list="$list\"$n\""
       +        done
       +        # echo run $list
       +        echo 'tell application "Preview"
       +                activate
       +                open {'"$list"'}
       +        end tell' | osascript
       +}
       +
       +case $# in
       +0)
       +        cat >/var/tmp/page.$$.tmp
       +        *="/var/tmp/page.$$.tmp"
       +        ;;
       +*)
       +        ;;
       +esac
       +
       +case `uname` in
       +Darwin)
       +        preview "$@"
       +        ;;
       +*)
       +        case "`file $1`" in
       +        *PDF*)
       +                psv $1
       +                ;;
       +        *PS*)
       +                psv $1
       +                ;;
       +        *PostScript*)
       +                psv $1
       +                ;;
       +        *)
       +                qiv "$@"
       +                ;;
       +        esac
       +        ;;
       +esac
       +
 (DIR) diff --git a/bin/web b/bin/web
       t@@ -1,8 +1,58 @@
        #!/bin/sh
        
       -plumb1()
       +plumbfirefox()
       +{
       +        echo '
       +                tell application "Firefox"
       +                activate
       +                tell application "System Events"
       +                tell process "firefox"
       +                keystroke "t" using {command down}
       +                end tell
       +                end tell
       +                Get URL "'$1'"
       +                end tell
       +        ' | osascript
       +}
       +
       +plumbsafari()
       +{
       +        echo '
       +                tell application "Safari"
       +                activate
       +                tell application "System Events"
       +                tell process "safari"
       +                keystroke "t" using {command down}
       +                end tell
       +                end tell
       +                open location "'$1'"
       +                end tell
       +        ' | osascript
       +}
       +
       +plumbapple()
        {
       -        case x-$BROWSER in
       +        case ${BROWSER:-none} in
       +        firefox)
       +                plumbfirefox "$@"
       +                ;;
       +        safari)
       +                plumbsafari "$@"
       +                ;;
       +        none)
       +                if [ -d /Applications/Firefox.app ]
       +                then
       +                        plumbfirefox "$@"
       +                else
       +                        plumbsafari "$@"
       +                fi
       +                ;;
       +        esac
       +}
       +
       +plumbunix()
       +{
       +        case ${BROWSER:-firefox} in
                # Other browsers here
                # ...
                *opera*)
       t@@ -15,8 +65,8 @@ plumb1()
                        $BROWSER -remote 'openURL('$i',new-tab)'
                        ;;
                x-)
       -                # run firefox as default!
       -                firefox -remote 'openURL('$i',new-tab)'
       +                BROWSER=firefox
       +                $BROWSER -remote 'openURL('$i',new-tab)'
                        ;;
                *mozilla*)
                        $BROWSER -remote 'openURL('$i',new-tab)'
       t@@ -27,6 +77,19 @@ plumb1()
                esac
        }
        
       +plumb1()
       +{
       +        case `uname` in
       +        Darwin)
       +                plumbapple "$@"
       +                ;;
       +        *)
       +                plumbunix "$@"
       +                ;;
       +        esac
       +}
       +
       +
        if [ $# = 0 ]
        then
                plumb1 about:blank