commit
a6ace93b51
@ -0,0 +1,27 @@
|
||||
### phl-org
|
||||
|
||||
This is a simple shell script to maintain a phlog (i.e., a
|
||||
gopher-based-blog) using org-mode.
|
||||
|
||||
The idea is to organise each of your phlog post as an org-mode entry.
|
||||
A post will start on the first line beginning with a "* " (star-space),
|
||||
and last until another line beginning with "* " is found.
|
||||
|
||||
Each post will be put in a separate directory, named after the title
|
||||
(with spaces replaced with "_").
|
||||
|
||||
`phl-org.sh` will also create a gophermap for your phlog.
|
||||
|
||||
The program currently uses `par` as a filter to indent and justify your
|
||||
phlogs. Change the variable `FILTER` to use your own preferred
|
||||
formatting options/tools.
|
||||
|
||||
#### Example:
|
||||
|
||||
A sample of an org-mode file to be fed to `phl-org.sh` is provided in
|
||||
`phlog.org`. To generate the phlogs and the corresponding gophermap you
|
||||
just type:
|
||||
|
||||
$ phl-org.sh phlog.org
|
||||
|
||||
|
@ -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
|
@ -0,0 +1,27 @@
|
||||
|
||||
|
||||
|
||||
* Second post <2017-11-12 Sun 22:38>
|
||||
|
||||
This is the second post. The system seems to work by now.
|
||||
|
||||
The shell script works without major problems and generates
|
||||
a visually pleasant kind of posts, mainly due to the usage
|
||||
of 'par' to justify paragraphs.
|
||||
|
||||
|
||||
* First experiments with phl-org <2017-11-12 Sun 20:37>
|
||||
|
||||
I decided I will make some experiments with phlogging.
|
||||
|
||||
My intention is to use Emacs' org-mode. The idea is to organise each long
|
||||
post as an org-mode entry. A post will start on the first line
|
||||
beginning with a "* " (star-space), and last until another line
|
||||
beginning with "* " is found.
|
||||
|
||||
Each post will be put in a separate directory, named after the title
|
||||
(with spaces replaced with "_").
|
||||
|
||||
The org-mode buffer will be processes by a simple shell script, called
|
||||
'phl-org.sh', which creates the necessary directories (one for each
|
||||
post), and refreshes the gophermap.
|
Loading…
Reference in new issue