mireapandoc/filter.py

82 lines
3.3 KiB
Python
Raw Permalink Normal View History

2025-02-15 02:42:21 +03:00
# import json
# import sys
# import re
2025-02-12 21:12:27 +03:00
2025-02-15 02:42:21 +03:00
# body = json.loads(input())
# blocks = body['blocks']
2025-02-12 21:12:27 +03:00
2025-02-15 02:42:21 +03:00
# def eprint(*args, **kwargs):
# print(*args, file=sys.stderr, **kwargs)
2025-02-12 21:12:27 +03:00
2025-02-15 02:42:21 +03:00
# def str2pd(str_to_pandoc):
# def intersperse(lst, item):
# result = [item] * (len(lst) * 2 - 1)
# result[0::2] = lst
# return result
# return intersperse(list(map(
# lambda x: {'t': 'Str', 'c': x},
# list(filter(lambda x: x != '', re.split('[\t\n\r ]', str_to_pandoc))))),
# {'t': 'Space'})
2025-02-12 21:12:27 +03:00
2025-02-15 02:42:21 +03:00
# def upper_first_token(tokens):
# for token in tokens:
# if token['t'] == 'Str':
# token['c'] = token['c'][0].upper() + token['c'][1:]
# break
# return tokens
2025-02-12 21:12:27 +03:00
2025-02-15 02:42:21 +03:00
# def append_reference (mb_text_block, name, section0, num):
# if mb_text_block['t'] == 'Div':
# mb_text_block = mb_text_block['c'][-1][0]
# if mb_text_block['t'] == 'Para':
# for token in mb_text_block['c'][::-1]:
# if token['t'] == 'Str':
# token['c'] = token['c'].rstrip('.?!…\t ')
# break
2025-02-12 21:12:27 +03:00
2025-02-15 02:42:21 +03:00
# mb_text_block['c'] += [{'t' : 'Space'}] # a space after a paragraph and...
# + upper_first_token(str2pd(f'({name} {section0}.{num}):'))
# return True
# return False
2025-02-12 21:12:27 +03:00
2025-02-15 02:42:21 +03:00
# #for i, b in enumerate(blocks):
# i = 0
# image, formula, table, code, section = 0, 0, 0, 0, [0, 0, 0]
# E, W = "ОШИБКА: ", "ПРЕДУПРЕЖДЕНИЕ: "
# while i < len(blocks):
# b = blocks[i]
# btype = b['t']
2025-02-12 21:12:27 +03:00
2025-02-15 02:42:21 +03:00
# if btype == 'Table':
# if not append_reference(blocks[i-1], 'Таблица', section[0], table):
# eprint(E+"перед таблицей", b['c'],"нет абзаца, в который можно встроить ссылку на таблицу!")
2025-02-12 21:12:27 +03:00
2025-02-15 02:42:21 +03:00
# blocks[i+1] = {'t':'Div', 'c': [["",[],[['custom-style', 'aftertable']]], [blocks[i+1]]]}
2025-02-12 21:12:27 +03:00
2025-02-15 02:42:21 +03:00
# if btype == 'Figure':
# if not append_reference(blocks[i-1], 'Рисунок', section[0], image):
# eprint(E+"перед рисунком", b['c'], "нет абзаца, в который можно встроить ссылку на рисунок!")
2025-02-12 21:12:27 +03:00
2025-02-15 02:42:21 +03:00
# if btype == 'CodeBlock':
# if len(b['c'][0][2]) == 0:
# eprint(E+"нет подписи у листинга:\n", b['c'][1], "\nЧТОБЫ ДОБАВИТЬ ПОДПИСЬ, используйте ключ caption:\n~~~{.lang caption=\"Hello world\"}")
2025-02-12 21:12:27 +03:00
2025-02-15 02:42:21 +03:00
# if not('caption' in dict(b['c'][0][2])):
# eprint(E+"нет подписи у листинга:\n", b['c'][1], "\nЧТОБЫ ДОБАВИТЬ ПОДПИСЬ, используйте ключ caption:\n~~~{.lang caption=\"Hello world\"}")
2025-02-12 21:12:27 +03:00
2025-02-15 02:42:21 +03:00
# code += 1
# caption = f'Листинг {section[0]}.{code} — ' + dict(b['c'][0][2])['caption']
# if not append_reference(blocks[i-1], 'Листинг', section[0], code):
# eprint(E+"перед листингом", b['c'], "нет абзаца, в который можно встроить ссылку на листинг!")
2025-02-12 21:12:27 +03:00
2025-02-15 02:42:21 +03:00
# blocks.insert(i, {"t":"Div","c":[["",[],[["custom-style","Code Caption"]]], [{"t":"Para","c":str2pd(caption)}]]})
# i += 1
# blocks[i+1] = {'t':'Div', 'c': [["",[],[['custom-style', 'aftertable']]], [blocks[i+1]]]}
2025-02-12 21:12:27 +03:00
2025-02-15 02:42:21 +03:00
# i += 1
2025-02-12 21:12:27 +03:00
2025-02-15 02:42:21 +03:00
# body['blocks'] = blocks
# print(json.dumps(body))