about summary refs log tree commit diff homepage
path: root/atom-encode-ids
diff options
context:
space:
mode:
Diffstat (limited to 'atom-encode-ids')
-rwxr-xr-xatom-encode-ids16
1 files changed, 16 insertions, 0 deletions
diff --git a/atom-encode-ids b/atom-encode-ids
new file mode 100755
index 0000000..79ac509
--- /dev/null
+++ b/atom-encode-ids
@@ -0,0 +1,16 @@
+#!/usr/bin/env python3
+import re
+from urllib.parse import quote
+from sys import stdin, stdout
+
+ID_LINE = re.compile(r'(?P<open> +<id>)(?P<url>.+)(?P<close></id>)\n')
+
+
+def encode_id(line: str) -> str:
+    match = re.fullmatch(ID_LINE, line)
+    if match is None: return line
+    return '{open}{iri}{close}\n'.format(iri=quote(match.group('url'), ':/#'),
+                                         **match.groupdict())
+
+
+stdout.writelines(map(encode_id, stdin.readlines()))