import re
import tkinter as tk
from tkinter import filedialog, messagebox, scrolledtext
def remove_comments(code, language):
if language == 'python':
code = re.sub(r'#.*', '', code)
elif language == 'c++':
code = re.sub(r'//.*', '', code)
code = re.sub(r'/\*.*?\*/', '', code, flags=re.DOTALL)
elif language == 'java':
code = re.sub(r'//.*', '', code)
code = re.sub(r'/\*.*?\*/', '', code, flags=re.DOTALL)
elif language == 'matlab':
code = re.sub(r'%.*', '', code)
return code
def process_text():
input_text = input_text_area.get("1.0", tk.END)
language = language_var.get()
output_text = remove_comments(input_text, language)
output_text_area.delete("1.0", tk.END)
output_text_area.insert(tk.END, output_text)
def process_file():
file_path = filedialog.askopenfilename(filetypes=[("All Files", "*.*")])
if not file_path:
return
with open(file_path, 'r') as file:
input_text = file.read()
language = language_var.get()
output_text = remove_comments(input_text, language)
save_path = filedialog.asksaveasfilename(defaultextension=".txt", filetypes=[("All Files", "*.*")])
if save_path:
with open(save_path, 'w') as file:
file.write(output_text)
messagebox.showinfo("Success", "File processed and saved successfully!")
root = tk.Tk()
root.title("Code Comment Remover")
language_var = tk.StringVar(value='python')
language_label = tk.Label(root, text="Select Language:")
language_label.grid(row=0, column=0, padx=10, pady=10)
language_menu = tk.OptionMenu(root, language_var, 'python', 'c++', 'java', 'matlab')
language_menu.grid(row=0, column=1, padx=10, pady=10)
input_text_area = scrolledtext.ScrolledText(root, wrap=tk.WORD, width=50, height=20)
input_text_area.grid(row=1, column=0, padx=10, pady=10)
output_text_area = scrolledtext.ScrolledText(root, wrap=tk.WORD, width=50, height=20)
output_text_area.grid(row=1, column=1, padx=10, pady=10)
process_text_button = tk.Button(root, text="Process Text", command=process_text)
process_text_button.grid(row=2, column=0, padx=10, pady=10)
process_file_button = tk.Button(root, text="Process File", command=process_file)
process_file_button.grid(row=2, column=1, padx=10, pady=10)
root.mainloop()