tools/extract
changeset 2 65780c394ae8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/extract	Wed Nov 19 21:41:17 2014 +0100
@@ -0,0 +1,23 @@
+#! /usr/bin/perl
+use 5.014;
+use strict;
+use warnings;
+use List::MoreUtils qw(uniq);
+
+my $what = shift // die "$0: Usage {main} [spec.xfpt]\n";
+
+@ARGV = "$ENV{HOME}/src/exim/doc/doc-docbook/spec.xfpt"
+  if not @ARGV;
+
+my $pattern = do {
+    given ($what) {
+        when ('main')  { qr/^\.option\s(")?(?<item>\S+)(?(1)\1)\smain/ }
+        when ('vars')  { qr/^\.vitem\s&(?<item>\$\w+)/ }
+        when ('ops')   { qr/^\.vitem\s&\*(?<item>\$\{\w+:)/ }
+        when ('conds') { qr/^\.vitem\s&\*(?<item>\w+)\&~\{/ }
+        when ('funcs') { qr/^\.vitem\s(")?&\*(?<item>\$\{\w+)\{/ }
+        default        { die "$0: unknown search pattern\n" }
+    }
+};
+
+say join "\n", sort uniq map { /$pattern/ ? $+{item} : () } <>;