aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/deps/pybind11/remove_comments.py
diff options
context:
space:
mode:
Diffstat (limited to 'host/lib/deps/pybind11/remove_comments.py')
-rw-r--r--host/lib/deps/pybind11/remove_comments.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/host/lib/deps/pybind11/remove_comments.py b/host/lib/deps/pybind11/remove_comments.py
new file mode 100644
index 000000000..987c41e9d
--- /dev/null
+++ b/host/lib/deps/pybind11/remove_comments.py
@@ -0,0 +1,55 @@
+#!/usr/bin/python3
+"""
+Simple program to remove all comments from pybind11 files.
+It will retain the copyright header.
+"""
+import re
+import os
+
+# Note: This is the default header of the PyBind11 files, not of this file!
+DEFAULT_HEADER="""/*
+ Copyright (c) 2016 Wenzel Jakob <wenzel.jakob@epfl.ch>
+
+ All rights reserved. Use of this source code is governed by a
+ BSD-style license that can be found in the LICENSE file.
+*/
+"""
+
+def comment_remover(text):
+ """
+ From:
+ https://stackoverflow.com/questions/241327/python-snippet-to-remove-c-and-c-comments
+ """
+ def replacer(match):
+ s = match.group(0)
+ if s.startswith('/'):
+ return " " # note: a space and not an empty string
+ else:
+ return s
+ pattern = re.compile(
+ r'//.*?$|/\*.*?\*/|\'(?:\\.|[^\\\'])*\'|"(?:\\.|[^\\"])*"',
+ re.DOTALL | re.MULTILINE
+ )
+ return re.sub(pattern, replacer, text)
+
+def remove_trailing_whitespace(text):
+ """ Remove, uh, trailing whitespace. """
+ pattern = re.compile(r' +$',
+ re.DOTALL | re.MULTILINE
+ )
+ return re.sub(pattern, '', text)
+
+
+def main():
+ """ Go Go Go! """
+ for root, _, files in os.walk("include/pybind11"):
+ for fname in files:
+ path = os.path.join(root, fname)
+ print("Modifying {}...".format(path))
+ new_file = comment_remover(open(os.path.join(root, fname)).read())
+ new_file = remove_trailing_whitespace(new_file)
+ open(os.path.join(root, fname), 'w').write(
+ DEFAULT_HEADER + new_file)
+
+if __name__ == "__main__":
+ main()