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 0000000000..45a25257f8 --- /dev/null +++ b/lib/python/qmk/comment_remover.py @@ -0,0 +1,20 @@ +"""Removes C/C++ style comments from text. + +Gratefully adapted from https://stackoverflow.com/a/241506 +""" +import re + +comment_pattern = re.compile(r'//.*?$|/\*.*?\*/|\'(?:\\.|[^\\\'])*\'|"(?:\\.|[^\\"])*"', re.DOTALL | re.MULTILINE) + + +def _comment_stripper(match): + """Removes C/C++ style comments from a regex match. + """ + s = match.group(0) + return ' ' if s.startswith('/') else s + + +def comment_remover(text): + """Remove C/C++ style comments from text. + """ + return re.sub(comment_pattern, _comment_stripper, text) |