summaryrefslogtreecommitdiff
path: root/namespace.py
diff options
context:
space:
mode:
Diffstat (limited to 'namespace.py')
-rwxr-xr-xnamespace.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/namespace.py b/namespace.py
new file mode 100755
index 0000000..d7d3165
--- /dev/null
+++ b/namespace.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+"""
+Wraps standard input with C++ namespaces and writes it to standard output. Rather niche tool unless you rely too much
+on pipes in your code editor.
+"""
+
+import argparse
+import sys
+
+
+def split(path):
+ """Splits namespace path into parts."""
+ return path.replace("::", "/").replace(":", "/").split("/")
+
+
+def wrap(in_, out, namespaces):
+ """Wraps input with C++ namespaces and writes it to output handle."""
+ for ns in namespaces:
+ out.write("namespace {}\n{}\n".format(ns, "{"))
+ out.write("\n\n")
+ for x in in_:
+ out.write(x)
+ out.write("\n\n")
+ for ns in reversed(namespaces):
+ out.write("{} // namespace {}\n".format("}", ns))
+
+
+def main():
+ parser = argparse.ArgumentParser()
+ parser.add_argument("namespaces")
+ args = parser.parse_args()
+ wrap(sys.stdin, sys.stdout, split(args.namespaces))
+
+
+if __name__ == '__main__':
+ main()