diff options
Diffstat (limited to 'lib/python/qmk/comment_remover.py')
-rw-r--r-- | lib/python/qmk/comment_remover.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/python/qmk/comment_remover.py b/lib/python/qmk/comment_remover.py new file mode 100644 index 000000000..45a25257f --- /dev/null +++ b/lib/python/qmk/comment_remover.py | |||
@@ -0,0 +1,20 @@ | |||
1 | """Removes C/C++ style comments from text. | ||
2 | |||
3 | Gratefully adapted from https://stackoverflow.com/a/241506 | ||
4 | """ | ||
5 | import re | ||
6 | |||
7 | comment_pattern = re.compile(r'//.*?$|/\*.*?\*/|\'(?:\\.|[^\\\'])*\'|"(?:\\.|[^\\"])*"', re.DOTALL | re.MULTILINE) | ||
8 | |||
9 | |||
10 | def _comment_stripper(match): | ||
11 | """Removes C/C++ style comments from a regex match. | ||
12 | """ | ||
13 | s = match.group(0) | ||
14 | return ' ' if s.startswith('/') else s | ||
15 | |||
16 | |||
17 | def comment_remover(text): | ||
18 | """Remove C/C++ style comments from text. | ||
19 | """ | ||
20 | return re.sub(comment_pattern, _comment_stripper, text) | ||