]> git.armaanb.net Git - asd-repo.git/blob - xorg/xkeyboard-config/files/xml2lst
Restructure repository
[asd-repo.git] / xorg / xkeyboard-config / files / xml2lst
1 #!/bin/sh
2 # converts the <rules>.xml file to the old format <rules>.lst file
3 # Usage: xml2lst < filename.xml > filename.lst
4
5 var=0 com=0 nam=''
6
7 printf '! model\n'
8 while read -r l || [ "$l" ]; do case $l in
9     *'<name>'*)         n=${l#*>} n=${n%<*};;
10     *'<description>'*)  l=${l#*>}; printf '  %-15s %s\n' "$n" "${l%<*}" ;;
11     *'</modelList>'*)   break
12 esac; done
13
14 printf '\n! layout\n'
15 while read -r l || [ "$l" ]; do case $l in
16     *'<variantList>'*)  var=1;;
17     *'</variantList>'*) var=0;;
18     *'</layoutList>'*)  break;;
19
20     *'<name>'*)
21         l="${l#*>}"
22         [ "$var" -eq 0 ] && ln=${l%<*} || n=${l%<*}
23     ;;
24
25     *'<description>'*)
26         l=${l#*>}
27
28         case $var in
29             0) printf '  %-15s %s\n' "${ln}" "${l%<*}" ;;
30             *) nam="${nam%x}  $(printf '%-15s %s: %s\nx' "$n" "$ln" "${l%<*}")"
31         esac
32     ;;
33 esac; done
34
35 printf '\n! variant\n%s\n! option\n' "${nam%x}"
36 while read -r l || [ "$l" ]; do case $l in
37     *'-->'*)            com=0;;
38     *'<!--'*)           com=1;;
39     *'</optionList>'*)  break;;
40     *'<name>'*)         n=${l#*>} n=${n%<*} ;;
41
42     *'<description>'*)
43         l=${l#*>}
44
45         [ "$com" -ne 0 ] || printf '  %-20s %s\n' "$n" "${l%<*}"
46     ;;
47 esac; done