summaryrefslogtreecommitdiff
path: root/sort-xrefs.py
diff options
context:
space:
mode:
Diffstat (limited to 'sort-xrefs.py')
-rwxr-xr-xsort-xrefs.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/sort-xrefs.py b/sort-xrefs.py
new file mode 100755
index 0000000000..f9c1f1fa90
--- /dev/null
+++ b/sort-xrefs.py
@@ -0,0 +1,24 @@
+#!/usr/bin/env python3
+
+import re
+import sys
+
+# group 0: The whole shebang
+# group 1 or group 2: The page name (sans fonts, if any)
+# group 3: The section
+REFERENCE = re.compile(r'(?:\\fB([a-zA-Z0-9_.-]+)\\fR|([a-zA-Z0-9_.-]+))\(([0-9][A-Za-z]*)\)')
+def match_section(match):
+ return match.group(3).upper()
+
+def match_page(match):
+ return match.group(1) or match.group(2)
+
+def sort_key(line):
+ match = REFERENCE.match(line) # If this fails we're hosed
+ assert(match)
+ return [match_section(match), match_page(match)]
+
+
+lines = [f.rstrip(',\n') for f in sys.stdin]
+lines.sort(key=sort_key)
+print(',\n'.join(lines))