#!/bin/sh ## ## HTML tag to line up ## ## author : "Chilbong Kim" http://linuxchannel.net/ ## changes : ## - 2004.11.09 : support null space ## - 2004.10.28 : support cygwin ## - 2004.10.14 : support FreeBSD ## - 2003.04.22 : add comments and usage ## - 2003.04.20 : new build ## ## download : ## - don't download 'html2arr.sh' ## - http://ftp.linuxchannel.net/devel/html2arr/html2arr.sh.tar.gz ## ## usage(example) : ## shell> tar zxvf html2arr.sh.tar.gz ## shell> mv html2arr.sh /usr/local/bin/html2arr ## shell> chmod a+x /usr/local/bin/html2arr ## shell> html2arr index.html ## or ## shell> html2arr index.html login.php xxx.htm usage() { echo 'HTML
tag to lineup' >&2 echo "usage : `basename $0` [-s|--status] filename.html [filname.html ...]" >&2 exit 1 } mktab() { N=$1 MAKETAB='' while [ "$N" -gt "1" ] ; do MAKETAB="`echo -e "\t"`$MAKETAB" N=`expr $N - 1` done echo "$MAKETAB" } mkspace() { N=$1 MAKESPACE='' while [ "$N" -gt "1" ] ; do MAKESPACE=" $MAKESPACE" N=`expr $N - 1` done echo "$MAKESPACE" } mklinesplit() { echo "$1" | sed \ -e "s;^[[:space:]]*;;" \ -e "s;>[[:space:]]*\(\1;g" \ -e "s;>[[:space:]]*\(\1;g" \ -e "s;>[[:space:]]*\(\1;g" \ -e "s;\(<;\1 ><;g" \ -e "s;\(<;\1 ><;g" \ -e "s;\(<;\1 ><;g" \ | tr " " "\n" } lineup() { LINE=$1 MAKETAB=`mktab "$I"` for T in $LINE ; do if [ -n "`echo $T | grep -i '> $FILE if [ -n "`echo $T | grep -i '/dev/null | tr " " "\n"` TOTAL=`echo "$CONTENTS" | wc -l | sed -e 's; ;;g'` ## make new file ## cat /dev/null > $FILE for LINE in $CONTENTS ; do [ "X$LINE" = "X_____CRLF" ] && { [ -n "$STATUS" ] && echo "$L / $TOTAL $I $SKIP" >&2 [ "X$CRLF" = "Xnskip" ] && echo "" >> $FILE CRLF='skip' L=`expr $L + 1` continue } [ -n "`echo $LINE | grep -Ei '<(SCRIPT|STYLE)'`" ] && SKIP='skip' [ -n "`echo $LINE | grep -Ei '^[[:space:]]*<(\?|%)'`" ] && SKIP='skip' ## print of status ## [ -n "$STATUS" ] && echo "$L / $TOTAL $I $SKIP" >&2 if [ "X$SKIP" = "Xskip" ] ; then echo "$LINE" | sed -e "s;${SPACE};${TAB};g" >> $FILE elif [ "X$SKIP" = "Xnskip" ] ; then [ -n "`echo $LINE | grep -i '> $FILE } fi [ -n "`echo $LINE | grep -Ei ''`" ] && SKIP='nskip' CRLF='nskip' L=`expr $L + 1` done } [ X"$1" = "X" ] && usage [ X"$1" = X"-s" -o X"$1" = X"--status" ] && { STATUS=1; shift; } TAB=`echo -e "\t"` SPACE=`mkspace 8` IFS=' ' for F in $* ; do [ -s "$F" ] && [ X$(file "$F" 2>/dev/null | grep -i 'text') != "X" ] && ( cp -f "$F" "$F.bak" tag2arr "$F" ) done exit 0