]> git.armaanb.net Git - asd-repo.git/blobdiff - xorg/xkeyboard-config/files/xml2lst
Restructure repository
[asd-repo.git] / xorg / xkeyboard-config / files / xml2lst
diff --git a/xorg/xkeyboard-config/files/xml2lst b/xorg/xkeyboard-config/files/xml2lst
new file mode 100755 (executable)
index 0000000..7679504
--- /dev/null
@@ -0,0 +1,47 @@
+#!/bin/sh
+# converts the <rules>.xml file to the old format <rules>.lst file
+# Usage: xml2lst < filename.xml > filename.lst
+
+var=0 com=0 nam=''
+
+printf '! model\n'
+while read -r l || [ "$l" ]; do case $l in
+    *'<name>'*)         n=${l#*>} n=${n%<*};;
+    *'<description>'*)  l=${l#*>}; printf '  %-15s %s\n' "$n" "${l%<*}" ;;
+    *'</modelList>'*)   break
+esac; done
+
+printf '\n! layout\n'
+while read -r l || [ "$l" ]; do case $l in
+    *'<variantList>'*)  var=1;;
+    *'</variantList>'*) var=0;;
+    *'</layoutList>'*)  break;;
+
+    *'<name>'*)
+        l="${l#*>}"
+        [ "$var" -eq 0 ] && ln=${l%<*} || n=${l%<*}
+    ;;
+
+    *'<description>'*)
+        l=${l#*>}
+
+        case $var in
+            0) printf '  %-15s %s\n' "${ln}" "${l%<*}" ;;
+            *) nam="${nam%x}  $(printf '%-15s %s: %s\nx' "$n" "$ln" "${l%<*}")"
+        esac
+    ;;
+esac; done
+
+printf '\n! variant\n%s\n! option\n' "${nam%x}"
+while read -r l || [ "$l" ]; do case $l in
+    *'-->'*)            com=0;;
+    *'<!--'*)           com=1;;
+    *'</optionList>'*)  break;;
+    *'<name>'*)         n=${l#*>} n=${n%<*} ;;
+
+    *'<description>'*)
+        l=${l#*>}
+
+        [ "$com" -ne 0 ] || printf '  %-20s %s\n' "$n" "${l%<*}"
+    ;;
+esac; done