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[ "$1" ] && exec 0< "$1"
6
7var=0 com=0 nam=''
8
9printf '! model\n'
10while read -r l || [ "$l" ]; do case $l in
11 *'<name>'*) n=${l#*>} n=${n%<*};;
12 *'<description>'*) l=${l#*>}; printf ' %-15s %s\n' "$n" "${l%<*}" ;;
13 *'</modelList>'*) break
14esac; done
15
16printf '\n! layout\n'
17while read -r l || [ "$l" ]; do case $l in
18 *'<variantList>'*) var=1;;
19 *'</variantList>'*) var=0;;
20 *'</layoutList>'*) break;;
21
22 *'<name>'*)
23 l="${l#*>}"
24 [ "$var" -eq 0 ] && ln=${l%<*} || n=${l%<*}
25 ;;
26
27 *'<description>'*)
28 l=${l#*>}
29
30 case $var in
31 0) printf ' %-15s %s\n' "${ln}" "${l%<*}" ;;
32 *) nam="${nam%x} $(printf '%-15s %s: %s\nx' "$n" "$ln" "${l%<*}")"
33 esac
34 ;;
35esac; done
36
37printf '\n! variant\n%s\n! option\n' "${nam%x}"
38while read -r l || [ "$l" ]; do case $l in
39 *'-->'*) com=0;;
40 *'<!--'*) com=1;;
41 *'</optionList>'*) break;;
42 *'<name>'*) n=${l#*>} n=${n%<*} ;;
43
44 *'<description>'*)
45 l=${l#*>}
46
47 [ "$com" -ne 0 ] || printf ' %-20s %s\n' "$n" "${l%<*}"
48 ;;
49esac; done