stk-code_catmod/tools/whitespaces.py
2014-06-04 18:27:32 +02:00

75 lines
2.4 KiB
Python
Executable File

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# 2014, By konstin (http://github/konstin)
#
# Removes all trailing whitespaces and replaces all tabs with four spacesin the
# files with a given extension in a recursivly searched directory.
# It can also count the number of code lines excluding comments and blank
# lines.
#
# Tested with python 2.7 and python 3
import os
def main():
# -------------- config --------------
extensions = ["cpp", "hpp", "c" , "h"]
directory = "../src"
# Counts files and lines if enabled
statistics = True
# ------------------------------------
if statistics:
lines_total = 0
lines_code = 0
file_counter = 0
for dirpath, dirnames, filenames in os.walk(directory):
for filename in filenames:
if statistics:
file_counter += 1
if (filename.rfind(".") != -1 and
filename[ filename.rfind(".")+1 : ] in extensions):
# reading
src_file = open(dirpath + "/" + filename, "r")
lines = src_file.readlines()
if statistics:
lines_total += len(lines)
modified = False
for i in range(len(lines)):
oldLine = lines[i]
# replacing tabs with four spaces
lines[i] = lines[i].replace("\t", " ")
if lines[i].rstrip() != "": # don't de-indent empty lines
lines[i] = lines[i].rstrip() + "\n"
if statistics:
if lines[i].lstrip().startswith("//"):
lines_code += 1
if not modified and oldLine != lines[i]:
modified = True
src_file.close()
# writing back
if modified:
src_file = open(dirpath + "/" + filename, "w")
src_file.write("".join(lines))
src_file.close()
if statistics:
print("Total number of files in " + directory + ": "
+ str(file_counter))
print("Lines in total in: " + str(lines_total))
print("↳ excluding comments and blank lines: " + str(lines_code)+ "\n")
print("Finished.")
if __name__ == '__main__':
main()