56 lines
1.8 KiB
Python
56 lines
1.8 KiB
Python
import shlex
|
|
import re
|
|
|
|
|
|
|
|
def GetFlatDivision(s,split_s,number,reto=lambda x:x.strip(),renter="\n\n"):
|
|
return "\n".join(list(map(reto,s.split(split_s)[number].replace(renter,"").split("\n"))))
|
|
|
|
def GetCarriageSpacesSmooth(s):
|
|
return '\n'.join([line.strip() for line in s.strip().split('\n')])
|
|
|
|
def GetBeforeAfterRuleLookup(s,before,after):
|
|
return "\n".join(list(map(lambda x:re.search(rf'\{before}(.*?)\{after}',x).group(),s.split("\n"))))
|
|
|
|
def GetRulesConvertedToJson(s,before,after):
|
|
result = {}
|
|
for match in re.finditer(rf'\{before}(.*?)\s(.*?){after}', s, re.DOTALL):
|
|
key = match.group(1)
|
|
values = match.group(2)
|
|
lexer = shlex.shlex(values, posix=True)
|
|
lexer.whitespace += ' '
|
|
lexer.whitespace_split = True
|
|
values = list(lexer)
|
|
result[key] = values
|
|
return result
|
|
|
|
def GetRulesConvertedToJson2(s):
|
|
result = {}
|
|
key, values = re.match(r'(\w+)\s(.+)', s).groups()
|
|
lexer = shlex.shlex(values, posix=True)
|
|
lexer.whitespace += ','
|
|
lexer.whitespace_split = True
|
|
lexer.quotes = "'"
|
|
result[key] = list(lexer)
|
|
return result
|
|
|
|
def AssemblyToJson(s,FunctionKeywordRules=r'.([\w]+):',MakeRules=lambda x:x):
|
|
output_dict = {}
|
|
current_key = ""
|
|
current_value = []
|
|
lines = s.split('\n')
|
|
for line in lines:
|
|
if re.match(FunctionKeywordRules, line):
|
|
if current_key:
|
|
output_dict[current_key] = current_value
|
|
current_value = []
|
|
current_key = line.strip().split(":")[0]
|
|
else:
|
|
if line.strip() != "":
|
|
current_value.append(MakeRules(line.strip().split(";")[0]))
|
|
if current_key:
|
|
output_dict[current_key.split(":")[0]] = current_value
|
|
return output_dict
|
|
|
|
def AssembleTextBreakdowns(s):
|
|
return [] |