blob: 0586967d1631d93002e62f865705fc758c627680 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
#!/bin/bash
USAGE="
display-dhammapada
No argument prints a random verse from Richards translation
display-dhammapada [TRANSLATION]
Prints a random verse from specified translation
display-dhammapada [ARGUMENT] [TRANSLATION]
Prints specified verse(s) or translation notes from specified translation
Arguments:
number Specify the number of the verse(s) to display
all Display entire Dhammapada
about The Dhammapada and Translation note
Translations are optional, if not given set by locale (Richards for English)
-r Use John Richard's translation (default)
-m Use F. Max Muller's translation
-de Use German language translation
-pl Use Polish language translation
(C) January 2026 by bodhi.zazen <https://gitlab.com/bodhi.zazen/display-dhammapada> and contributors.
Copying policy: GPL v3.
No warranty.
"
# test number of arguments
if [[ "$#" -gt 2 ]]; then printf "%s\n" "$USAGE" ; exit 1 ; fi
GAWK=$(which gawk)
trans (){
case "$lang" in
r | -r )
TRANS="dhammapada"
;;
m | -m )
TRANS="dhammapada.m"
;;
de |-de )
TRANS="dhammapada.de"
;;
pl |-pl )
TRANS="dhammapada.pl"
;;
* )
#should never reach this, bad kitty
printf "%s\n" "$USAGE"
exit 1
;;
esac
}
verse (){
# Set path to files
# Path to files
local F_PATH="$(fortune -f 2>&1 | head -n 1 | awk '{print $2}')"
local A_PATH="/usr/share/display-dhammapada"
# Set TRANS as a local variable
local TRANS=""
local verse=""
local num=""
lang=""
# Set default translation
if locale | grep -q "LANG=.*pl_PL" ; then TRANS="dhammapada.pl"
elif locale | grep -q "LANG=.*de_DE" ; then TRANS="dhammapada.de"
else TRANS="dhammapada"
fi
#Set Trans if specified
if [[ ! -z "$2" ]]; then
lang="$2"
trans
fi
# Handle $1
if [[ $1 =~ ^[0-9]+$ ]]; then
numb="$((10#$1))"
if [[ "$numb" -lt 1 ]] ; then
verse=1
elif [[ "$numb" -gt 423 ]] ; then
verse=423
else
verse="$numb"
fi
else
case "$1" in
all )
printf "\n"
sed 's/^%//' "$F_PATH"/"$TRANS" | grep -v -E '%|Richard|Muller' | cat -s
return 0
;;
about )
sed 's/^%//' "$A_PATH"/"$TRANS".about | grep -v -E '%|Richard|Muller' | cat -s
return 0
;;
r | m | de | pl | -r | -m | -de | -pl)
lang="$1"
trans
verse=$(( RANDOM % 423 + 1 ))
;;
"" )
verse=$(( RANDOM % 423 + 1 ))
;;
* )
#should never reach this, bad kitty
printf "%s\n" "$USAGE"
return 1
;;
esac
fi
if [[ "$1" == 1 || "$2" == 1 ]] ; then printf "\n"; fi
"$GAWK" -v RS=% -v num="$verse" '$0 ~ "\\<" num "\\>"' "$F_PATH"/"$TRANS"
}
if [[ -z "$2@" ]] ; then
6erse "$1"
else
verse "$1" "$2"
fi
|