Make 3 dop, F**K YEAH!
This commit is contained in:
parent
b825fede85
commit
69c42cd91a
99
3.py
Normal file
99
3.py
Normal file
@ -0,0 +1,99 @@
|
||||
TAB_SIZE = 2
|
||||
tab = 0
|
||||
tabArray = 0
|
||||
result = '{\n'
|
||||
brackets = []
|
||||
array = 0
|
||||
simpleArray = False
|
||||
|
||||
|
||||
def append_to_result(string):
|
||||
global result, tab
|
||||
result += f'{" " * (tabArray + tab + 2)}{string}'
|
||||
|
||||
|
||||
def compute_tab_size(yamlFile):
|
||||
for i in yamlFile[1:]:
|
||||
deltaTab = len(i) - len(i.lstrip())
|
||||
if deltaTab != 0:
|
||||
return deltaTab
|
||||
return 0
|
||||
|
||||
|
||||
with open('input.yaml', encoding='UTF-8') as inpt:
|
||||
inpt = inpt.readlines()
|
||||
TAB_SIZE = compute_tab_size(inpt)
|
||||
|
||||
for key, i in enumerate(inpt):
|
||||
if i.lstrip()[0] == '#':
|
||||
continue
|
||||
|
||||
if i.count(':') == 0 and i.strip()[0] == '-':
|
||||
append_to_result(f'{transform(i.strip()[2:])},\n')
|
||||
simpleArray = True
|
||||
continue
|
||||
if simpleArray:
|
||||
result = result[:len(result) - 2] + '\n'
|
||||
append_to_result(brackets.pop() + ',\n')
|
||||
simpleArray = False
|
||||
|
||||
i = [i.split('#')[0].split(':')[0], ':'.join(i.split('#')[0].split(':')[1:])]
|
||||
|
||||
# Обработка табов
|
||||
deltaTab = len(i[0]) - len(i[0].lstrip())
|
||||
if tab != deltaTab:
|
||||
if tab < deltaTab:
|
||||
tab = deltaTab
|
||||
else:
|
||||
result = result[:len(result) - 2] + '\n'
|
||||
append_to_result(brackets.pop() + ',\n')
|
||||
if abs(deltaTab - tab)//TAB_SIZE > 1:
|
||||
result = result[:len(result) - 2] + '\n'
|
||||
append_to_result(brackets.pop() + ',\n')
|
||||
tab = deltaTab
|
||||
|
||||
# Обработка массивов
|
||||
if i[0].strip()[0] == '-':
|
||||
i[0] = i[0].lstrip()[1:].strip()
|
||||
append_to_result('{\n')
|
||||
brackets.append('}')
|
||||
tab += TAB_SIZE
|
||||
|
||||
# Обработка вложенных объектов
|
||||
if i[1].strip() == '':
|
||||
br = ''
|
||||
if inpt[key+1].split(':')[0].strip()[0] == '-':
|
||||
br = '[]'
|
||||
else:
|
||||
br = '{}'
|
||||
append_to_result(f'"{i[0].strip()}": {br[0]}\n')
|
||||
brackets.append(br[1])
|
||||
else:
|
||||
def transform(s: str):
|
||||
try:
|
||||
return int(s)
|
||||
except:
|
||||
try:
|
||||
return float(s)
|
||||
except:
|
||||
if s.strip() in ["y", "Y", "yes", "Yes", "YES", "n", "N", "no", "No", "NO", "true", "True", "TRUE"]:
|
||||
return "true"
|
||||
elif s.strip() in ["false", "False", "FALSE", "on", "On", "ON", "off", "Off", "OFF"]:
|
||||
return "false"
|
||||
return '"' + s.replace("\\", "\\\\").replace("\"", "\\\"").strip() + '"'
|
||||
|
||||
|
||||
i = list(map(transform, i))
|
||||
append_to_result(f'{i[0]}: {i[1]},\n')
|
||||
if brackets is not None:
|
||||
for _ in range(len(brackets)):
|
||||
tab -= TAB_SIZE
|
||||
result = result[:len(result) - 2] + '\n'
|
||||
i = brackets.pop()
|
||||
append_to_result(i + ',\n')
|
||||
|
||||
result = result[:len(result) - 2] + '\n'
|
||||
result += '}'
|
||||
with open('output.json', 'w', encoding='UTF-8') as output:
|
||||
output.write(result)
|
||||
print(result)
|
||||
20
input.yaml
20
input.yaml
@ -1,17 +1,29 @@
|
||||
lessons:
|
||||
- subject: История России и мира в ХХ веке
|
||||
hella: 7,3
|
||||
chto:
|
||||
- a
|
||||
- b
|
||||
- c
|
||||
- d
|
||||
Hello: true
|
||||
weekday: Четверг
|
||||
time: 10:00-11:30
|
||||
group: ИРИ 2.2
|
||||
audience: Ауд. 1410, Кронверкский пр., д.49, лит.А
|
||||
teacher: Айба Тамара Гурамовна
|
||||
type: Практ\nика
|
||||
type: Практика
|
||||
format: Очно
|
||||
- subject: История России и мира в ХХ веке
|
||||
weekday: Четверг
|
||||
time: 15:20-16:50
|
||||
group: ИРИ 2
|
||||
audience: Ауд. Lemon Classroom (1419), Кронверкский пр., д.49, лит.А
|
||||
teacher: Пригодич Никита Дмитриевич
|
||||
type: Лекция
|
||||
format: Очно - дистанционный "],
|
||||
format: Очно - дистанционный,
|
||||
wawa:
|
||||
- mama: mia
|
||||
ech: toumio
|
||||
- mama: mia
|
||||
ech: toumio
|
||||
- mama: mia
|
||||
ech: toumio
|
||||
@ -1,12 +1,2 @@
|
||||
subject: История России и мира в ХХ веке
|
||||
w2eekday: Четверг
|
||||
s3ubject: История России и мира в ХХ веке
|
||||
w4eekday: Четверг
|
||||
su5bject: История России и мира в ХХ веке
|
||||
w5eekday:
|
||||
subject: История России и мира в ХХ веке
|
||||
w2eekday: Четверг
|
||||
s3ubject: История России и мира в ХХ веке
|
||||
w4eekday: Четверг
|
||||
su5bject: История России и мира в ХХ веке
|
||||
hellow: world
|
||||
weekday: Четверг
|
||||
34
output.json
34
output.json
@ -2,23 +2,43 @@
|
||||
"lessons": [
|
||||
{
|
||||
"subject": "История России и мира в ХХ веке",
|
||||
"hella": "7,3",
|
||||
"chto": [
|
||||
"a",
|
||||
"b",
|
||||
"c",
|
||||
"d"
|
||||
],
|
||||
"Hello": true,
|
||||
"weekday": "Четверг",
|
||||
"time": "10:00-11:30",
|
||||
"group": "ИРИ 2.2",
|
||||
"audience": "Ауд. 1410, Кронверкский пр., д.49, лит.А",
|
||||
"teacher": "Айб\\а Тамара Гурамовна",
|
||||
"teacher": "Айба Тамара Гурамовна",
|
||||
"type": "Практика",
|
||||
"format": "Очно"
|
||||
},
|
||||
},
|
||||
{
|
||||
"subject": "История России и мира в ХХ веке",
|
||||
"wee{kday": "Четверг",
|
||||
"t}ime": "15:20-16:50",
|
||||
"group": "ИРИ 2",
|
||||
"weekday": "Четверг",
|
||||
"time": "15:20-16:50",
|
||||
"audience": "Ауд. Lemon Classroom (1419), Кронверкский пр., д.49, лит.А",
|
||||
"teacher": "Пригодич Никита Дмитриевич",
|
||||
"type": "Лекция",
|
||||
"format": "Очно - дистанционный \"],"
|
||||
"format": "Очно - дистанционный,",
|
||||
"wawa": [
|
||||
{
|
||||
"mama": "mia",
|
||||
"ech": "toumio"
|
||||
},
|
||||
{
|
||||
"mama": "mia",
|
||||
"ech": "toumio"
|
||||
},
|
||||
{
|
||||
"mama": "mia",
|
||||
"ech": "toumio"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user