Skip to content

Commit 842d8a9

Browse files
authored
get the first version of pdlparse done
1 parent 11989f8 commit 842d8a9

File tree

4 files changed

+255
-7
lines changed

4 files changed

+255
-7
lines changed

PDL/package/pdlparse/__init__.py

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from parse import scrap_library, get_variable, filter_file, get_strings, get_class, get_type, get_value, get_comments

PDL/package/pdlparse/parse.py

+250-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,254 @@
11
import os, sys
22

3-
def get_variable(file):
4-
with open(file, 'r') as Fin:
3+
'''
4+
__KEYWORDS__
5+
class - a place to store variables and data
6+
priv - declares a variable as exclusive to .pdl file
7+
new - creates a copy of variable similar to handle
8+
__TYPES__
9+
str - declares a variable as a string
10+
int - declares a variable as integer
11+
lst - uses brackets and commas to create list's
12+
flt - a floating point number
13+
raw - used to declare all back-slashes to be ignored
14+
bol - true, false, null
15+
__COMMENTS__
16+
// - line comment
17+
/* - start block
18+
*/ - end block
19+
'''
20+
21+
22+
class utility:
23+
def typeProcessor(assumed_type):
24+
if 'str' in assumed_type:
25+
return 'string'
26+
elif 'int' in assumed_type:
27+
return 'integer'
28+
elif 'lst' in assumed_type:
29+
return 'array'
30+
elif 'bol' in assumed_type:
31+
return 'boolean'
32+
elif 'raw' in assumed_type:
33+
return 'raw_string'
34+
elif 'flt' in assumed_type:
35+
return 'floating_point'
36+
else:
37+
raise Exception('ENGINE-ERROR: A fatal function was passed a incomprehensible argument')
38+
39+
def findClass(library, var, type, value):
40+
# Searches for variables class and returns it
41+
if not os.path.exists(library):
42+
raise FileNotFoundError(f'ERROR: Package pdlparse cannot find file {library}.')
43+
44+
with open(library, 'r+') as file:
45+
file_content = file.read()
46+
if var in file_content:
47+
for line in file_content.split('\n'):
48+
if '{' in line:
49+
class_index = file_content.splitlines().index(line)
50+
index = line.find('{')
51+
indextr = line.find('class')
52+
if var and type and value in line:
53+
line_index = file_content.splitlines().index(line)
54+
if line_index > class_index:
55+
line_diffrence = line_index - class_index
56+
else:
57+
line_diffrence = class_index - line_index
58+
target_line = file_content.splitlines()[line_index - line_diffrence]
59+
class_name = target_line[indextr:index - 1]
60+
61+
return class_name.replace('class ', '')
62+
63+
64+
def scrap_library(library):
65+
# Get all variables in library
66+
if not os.path.exists(library):
67+
raise FileNotFoundError(f'ERROR: Package pdlparse cannot find file {library}.')
68+
69+
with open(library, 'r+') as file:
70+
retlist = []
71+
file_content = file.read()
72+
for line in file_content.split('\n'):
73+
for fline in file_content.split('\n'):
74+
if '=' in fline:
75+
index = fline.find('=')
76+
if fline[index + 2:].isdigit() or "'" not in fline[index + 2:]:
77+
indexer = fline[index + 2:]
78+
else:
79+
indexer = fline[index + 3:]
80+
found = fline.find('=')
81+
value = indexer.replace("'", '')
82+
type = utility.typeProcessor(fline[0:5])
83+
raw_type = fline[0:5]
84+
var = fline[5:found - 1].replace(' ', '')
85+
class_name = utility.findClass(library, var, raw_type, value)
86+
retlist.append(f'{class_name}.{var} = {value}, {type}')
87+
return retlist
88+
89+
90+
def get_variable(library, variable):
91+
# Get a variables value based on its name
92+
if not os.path.exists(library):
93+
raise FileNotFoundError(f'ERROR: Package pdlparse cannot find file {library}.')
94+
95+
with open(library, 'r') as Fin:
96+
content = Fin.read()
97+
if variable in content:
98+
with open(library, 'r+') as file:
99+
file_content = file.read()
100+
for line in file_content.split('\n'):
101+
if variable in line:
102+
if '=' in line:
103+
index = line.find('=')
104+
value = line[index + 3:].replace("'", '')
105+
type = utility.typeProcessor(line[0:5])
106+
return str(f'{value}, {type}')
107+
else:
108+
raise Exception(f'ERROR: Package pdlparse cannot find {variable} in {library}.')
109+
110+
111+
def filter_file(library, word):
112+
# Remove given word from library
113+
if not os.path.exists(library):
114+
raise FileNotFoundError(f'ERROR: Package pdlparse cannot find file {library}.')
115+
with open(library, "r+") as Fin:
116+
content = Fin.read()
117+
if word in content:
118+
with open(library, "w+") as Fout:
119+
write_item = content.replace(word, "")
120+
Fout.write(write_item)
121+
else:
122+
raise Exception(f'ERROR: {word} cannot be found in {library}')
123+
124+
125+
def get_strings(library):
126+
# Get all strings from library
127+
if not os.path.exists(library):
128+
raise FileNotFoundError(f'ERROR: Package pdlparse cannot find file {library}.')
129+
130+
with open(library, 'r+') as file:
131+
retlist = []
132+
file_content = file.read()
133+
for line in file_content.split('\n'):
134+
if "'" and "str" in line:
135+
index = line.find("'")
136+
string = line[index:].replace("'", "")
137+
retlist.append(string)
138+
return retlist
139+
140+
141+
def get_class(library, target_class):
142+
# Get all variables in given class
143+
if not os.path.exists(library):
144+
raise FileNotFoundError(f'ERROR: Package pdlparse cannot find file {library}.')
145+
146+
with open(library, 'r') as Fin:
147+
content = Fin.read()
148+
if target_class in content:
149+
with open(library, 'r+') as file:
150+
file_content = file.read()
151+
for line in file_content.split('\n'):
152+
if target_class in line:
153+
if '{' in line:
154+
retlist = []
155+
for fline in file_content.split('\n'):
156+
if '=' in fline:
157+
index = fline.find('=')
158+
if fline[index + 2:].isdigit() or "'" not in fline[index + 2:]:
159+
indexer = fline[index + 2:]
160+
else:
161+
indexer = fline[index + 3:]
162+
found = fline.find('=')
163+
value = indexer.replace("'", '')
164+
type = utility.typeProcessor(fline[0:5])
165+
var = fline[5:found - 1].replace(' ', '')
166+
retlist.append(f'{var} = {value}, {type}')
167+
if '};' in fline:
168+
file.close()
169+
return retlist
170+
else:
171+
raise Exception(f'ERROR: Package pdlparse cannot find {target_class} in {library}.')
172+
173+
174+
def get_type(library, target_type):
175+
# Get all variables with given type
176+
if not os.path.exists(library):
177+
raise FileNotFoundError(f'ERROR: Package pdlparse cannot find file {library}.')
178+
179+
with open(library, 'r') as Fin:
180+
content = Fin.read()
181+
if target_type in content:
182+
with open(library, 'r+') as file:
183+
file_content = file.read()
184+
for line in file_content.split('\n'):
185+
if target_type in line:
186+
retlist = []
187+
for fline in file_content.split('\n'):
188+
if '=' in fline:
189+
index = fline.find('=')
190+
if fline[index + 2:].isdigit() or "'" not in fline[index + 2:]:
191+
indexer = fline[index + 2:]
192+
else:
193+
indexer = fline[index + 3:]
194+
found = fline.find('=')
195+
value = indexer.replace("'", '')
196+
var = fline[5:found - 1].replace(' ', '')
197+
if fline[0:5].replace(' ', '') == target_type:
198+
retlist.append(f'{var} = {value}')
199+
else:
200+
pass
201+
return retlist
202+
else:
203+
raise Exception(f'ERROR: Package pdlparse cannot find {target_type} in {library}.')
204+
205+
206+
def get_value(library, target_value):
207+
# Get information about a variable based on its value
208+
if not os.path.exists(library):
209+
raise FileNotFoundError(f'ERROR: Package pdlparse cannot find file {library}.')
210+
211+
with open(library, 'r') as Fin:
5212
content = Fin.read()
213+
if target_value in content:
214+
with open(library, 'r+') as file:
215+
file_content = file.read()
216+
for line in file_content.split('\n'):
217+
if target_value in line:
218+
retlist = []
219+
for fline in file_content.split('\n'):
220+
if '=' in fline:
221+
index = fline.find('=')
222+
if fline[index + 2:].isdigit() or "'" not in fline[index + 2:]:
223+
indexer = fline[index + 2:]
224+
else:
225+
indexer = fline[index + 3:]
226+
found = fline.find('=')
227+
value = indexer.replace("'", '')
228+
var = fline[5:found - 1].replace(' ', '')
229+
type = fline[0:5]
230+
class_name = utility.findClass(library, var, type, value)
231+
if value == target_value:
232+
retlist.append(f'{class_name}.{var} = {value}')
233+
else:
234+
pass
235+
return retlist
236+
else:
237+
raise Exception(f'ERROR: Package pdlparse cannot find {target_value} in {library}.')
238+
239+
240+
def get_comments(library):
241+
# Gets all comments from given library
242+
if not os.path.exists(library):
243+
raise FileNotFoundError(f'ERROR: Package pdlparse cannot find file {library}.')
244+
245+
with open(library, 'r+') as file:
246+
retlist = []
247+
file_content = file.read()
248+
for line in file_content.split('\n'):
249+
if "//" in line:
250+
index = line.find("//")
251+
string = line[index:].replace("// ", "")
252+
retlist.append(string)
253+
return retlist
6254

7-

PDL/package/setup.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
# https://www.freecodecamp.org/news/build-your-first-python-package/
22
from setuptools import setup, find_packages
33

4-
VERSION = '1.2'
5-
DESCRIPTION = 'A package for cryptography in python with unique functions'
4+
VERSION = '1.0'
5+
DESCRIPTION = 'A package for extracting data from pdl librarys in python'
66
LONG_DESCRIPTION = '''
7-
A python package for cryptography and data mixing from strings/files more on github.
7+
A python package for extracting and handling data from `.pdl` librarys more on github.
88
99
https://github.com/itzCozi/HashBrowns-Python
1010
'''

PDL/pdl-hl/syntaxes/pdl.tmLanguage.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
}]
2929
},
3030
"types": {
31-
"match": "\\b(str|int|list|bool|raw|float)\\b",
31+
"match": "\\b(str|int|lst|bol|raw|flt)\\b",
3232
"name": "constant.language.pdl"
3333
},
3434
"constants": {

0 commit comments

Comments
 (0)