#!/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()