-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathutils.py
executable file
·84 lines (74 loc) · 3.22 KB
/
utils.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
from pygments import highlight
from pygments.lexers import get_lexer_by_name
from pygments.formatters import Terminal256Formatter
from termcolor import colored
import os
import re
BANNER = r'''
___ ___ ___ ___ ___
/\ \ /\__\ /\ \ /\ \ /\__\
/::\ \ /::| | \:\ \ /::\ \ /::| |
/:/\:\ \ /:|:| | \:\ \ /:/\:\ \ /:|:| |
/::\~\:\ \ /:/|:| |__ /::\ \ /:/ \:\ \ /:/|:| |__
/:/\:\ \:\__\ /:/ |:| /\__\ /:/\:\__\ /:/__/ \:\__\ /:/ |:| /\__\
\/__\:\/:/ / \/__|:|/:/ / /:/ \/__/ \:\ \ /:/ / \/__|:|/:/ /
\::/ / |:/:/ / /:/ / \:\ /:/ / |:/:/ /
/:/ / |::/ / \/__/ \:\/:/ / |::/ /
/:/ / /:/ / \::/ / /:/ /
\/__/ \/__/ \/__/ \/__/
'''
def show_banner():
os.system("clear")
print(colored(BANNER, "cyan", attrs=["bold"]))
print()
print()
def highlight_code(code, language):
if language == "python":
lexer = get_lexer_by_name("python")
formatter = Terminal256Formatter(style="monokai")
highlighted_code = highlight(code, lexer, formatter)
highlighted_code = highlighted_code.replace("True", colored("True", "magenta"))
highlighted_code = highlighted_code.replace("False", colored("False", "red"))
highlighted_code = highlighted_code.replace("None", colored("None", "yellow"))
highlighted_code = highlighted_code.replace("(", colored("(", "yellow"))
highlighted_code = highlighted_code.replace(")", colored(")", "yellow"))
highlighted_code = highlighted_code.replace("{", colored("{", "yellow"))
highlighted_code = highlighted_code.replace("}", colored("}", "yellow"))
elif language == "rust":
lexer = get_lexer_by_name("rust")
formatter = Terminal256Formatter(style="monokai")
highlighted_code = highlight(code, lexer, formatter)
highlighted_code = highlighted_code.replace("&", "&")
highlighted_code = highlighted_code.replace("'", "'")
highlighted_code = highlighted_code.replace(">", ">")
highlighted_code = highlighted_code.replace("<", "<")
highlighted_code = highlighted_code.replace(""", "\"")
else:
lexer = get_lexer_by_name(language)
formatter = Terminal256Formatter(style="monokai")
highlighted_code = highlight(code, lexer, formatter)
return highlighted_code
class DataSnippet:
def __init__(self, data_type, name, content):
self.data_type = data_type
self.name = name
self.content = content
class CodeSnippet:
def __init__(self, language, name, content):
self.language = language
self.name = name
self.content = content
def get_code_language(code):
match = re.match(r"^```(\w+)\n", code)
if match:
return match.group(1)
else:
return 'python'
def remove_code_markers(snippet):
lines = snippet.split("\n")
if len(lines) < 3:
return snippet # Invalid code snippet format
if lines[0].startswith("```") and snippet.endswith("```"):
return "\n".join(lines[1:]).replace("```", "")
def add_code_markers(language, snippet):
return f"```{language}\n{snippet}\n```"