summaryrefslogtreecommitdiff
path: root/bin/migrate_vimki
blob: 15242e693440c718f31f13a4784e3c2f9e4dd2a9 (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
#!/bin/sh

# Migrate Wiki content from vimki to vimki2 format.

fixfile() {
	awk '
	{
		for (i = 1; i <= NR; i++) {
			if (match($i, /^[A-Z][A-Z_0-9]*[a-z][a-z0-9]*[_A-Z]/) == 0) continue
			s = $i
			l = ""
			while (match(s, /^[A-Z][A-Z_0-9]*[a-z]+/) != 0) {
				l = l substr(s, 1, RLENGTH) " "
				s = substr(s, RLENGTH+1)
			}
			p = match(s, /[^A-Za-z0-9_]/)
			if (p != 0) {
				s2 = substr(s, 1, p-1) "]" substr(s, p)
				s = s2
			} else s = s "]"
			l = "[" l s
			gsub(/[ \t_]+/, " ", l)
			sub(/ *]/, "]", l)
			$i = tolower(l)
		}
		print
	}
	' "${1:-HomePage}"
}

fixname() {
	echo "$1" | awk '{
		s = $0
		l = ""
		while (match(s, /^[A-Z][A-Z_0-9]*[a-z]+/) != 0) {
			l = l substr(s, 1, RLENGTH) " "
			s = substr(s, RLENGTH+1)
		}
		p = match(s, /[^A-Za-z0-9_]/)
		if (p != 0) {
			s2 = substr(s, 1, p-1) "]" substr(s, p)
			s = s2
		}
		l = l s
		gsub(/[ \t_]+/, " ", l)
		sub(/ *$/, "", l)
		print tolower(l)

	}'
}

mkdir -p $HOME/Wiki2
cd $HOME/Wiki
for file in *; do
	new=$(fixname "$file")
	echo "$new"
	fixfile "$file" > "$HOME/Wiki2/$new"
done