#!/usr/bin/python3
# ====================================================================
# PY file line counter
# ====================================================================
import os
import re
import sys
import user_interface as ui
blank_line_count = 0
code_line_count = 0
comment_line_count = 0
function_count = 0
read_line_count = 0
file_type_regexp = re.compile(r'\.py$',re.IGNORECASE)
function_regexp = re.compile(r'^def ')
# --------------------------------------------------------------------
# ---- main
# --------------------------------------------------------------------
while True:
print()
fn = ui.get_user_input('Enter PY file name: ')
if not fn:
##print('\nExit Program\n')
##sys.exit()
break
if not re.search(file_type_regexp,fn):
print('\nfile is not a PY file - program exit\n')
sys.exit()
with open(fn,'r') as fin:
for line in fin:
read_line_count += 1
line = line.strip()
if line == '':
blank_line_count += 1
continue
if line[0] == '#':
comment_line_count += 1
continue
if re.search(function_regexp,line):
function_count += 1
code_line_count += 1
print()
print(f'---- file stats --------------------------')
print(f'file name : {os.path.basename(fn)}')
print(f'lines read : {read_line_count:<4}')
print(f'function count: {function_count:<4}')
pcent = round((blank_line_count/read_line_count)*100,1)
print(f'blank lines : {blank_line_count:<4} %{pcent}')
pcent = round((code_line_count/read_line_count)*100,1)
print(f'code lines : {code_line_count:<4} %{pcent}')
pcent = round((comment_line_count/read_line_count)*100.0,1)
print(f'comment lines : {comment_line_count:<4} %{pcent}')
print()
print()