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