summaryrefslogtreecommitdiff
path: root/phl-org.sh
diff options
context:
space:
mode:
Diffstat (limited to 'phl-org.sh')
-rwxr-xr-xphl-org.sh87
1 files changed, 87 insertions, 0 deletions
diff --git a/phl-org.sh b/phl-org.sh
new file mode 100755
index 0000000..f8d04c2
--- /dev/null
+++ b/phl-org.sh
@@ -0,0 +1,87 @@
+#!/usr/bin/env sh
+
+#
+# phl-org: manage a phlog with org-mode
+#
+# KatolaZ <katolaz@freaknet.org> (2018)
+#
+
+INFILE=${1:-/dev/stdin}
+DESTDIR=${2:-"."}
+pad=" "
+FILTER="par 68ftp4"
+headpad="+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
+
+## if you are under *BSD, you'd probably use SED=gsed
+##
+#SED=gsed
+
+SED=sed
+
+## function
+write_gophermap(){
+
+ buff=$1
+ curdir=$2
+ curfile=$3
+ INDEX=$4
+ if [ ! -d "$curdir" ]; then
+ mkdir "$curdir";
+ fi
+ echo $buff | eval "$FILTER" > "$curfile"
+ echo "1$curdir\t$curdir" >> $INDEX
+}
+
+
+##function
+gophermap_header(){
+
+ GOPHERMAP=$1
+
+ cat <<EOF>$GOPHERMAP
++++++++++++++++++++++++++++++
++ This is my gopherhole +
++++++++++++++++++++++++++++++
+
+
+EOF
+
+}
+
+
+
+## function
+org2phlog(){
+
+ FILEIN=$1
+ INDEX=$2
+ curfile=""
+ buff=""
+ IFS="
+"
+ while read line; do
+
+ #echo $wholeline | ${SED} -r -e '/^\* /p'
+ if [ -n "$(echo $line | ${SED} -r -n -e '/^\* /p')" ]; then
+ if [ -n "$curfile" ]; then
+ write_gophermap $buff $curfile "$curfile/gophermap" $INDEX
+ fi
+ buff="$headpad\n\n$pad$line\n\n$headpad"
+ curfile=$(echo $line | ${SED} -r -e 's/^\* //g' -e 's/\ /_/g;s/\t/_/g;s/</-/g;s/>/-/g;s/://g')
+ if [ -z "$curfile" ]; then
+ curfile="(blank)"
+ fi
+ curfile="$curfile"
+ else
+ buff="${buff}\n $line"
+ fi
+ done<$FILEIN
+ if [ -n "$curfile" ]; then
+ write_gophermap $buff $curfile "$curfile/gophermap" $INDEX
+ fi
+}
+
+#echo "INFILE: $INFILE"
+
+gophermap_header ./gophermap
+org2phlog $INFILE ./gophermap