1

Тема: [C++] вивід змісту файла формату dsl зі збереженням розмітки

Є файл у форматі dsl(звичайний словник).
Треба вивести його вміст через Qt6 WebEngineView зі збереженням розмітки.
Коли виводжу його просто як текст, то розмітка не працює. Теж виводиться як звичайний текст.
Потрібно, щоб усе dsl форматування файлу працювало як слід.
Як це зробити? Як зазвичай працюють з такими файлами?

2

Re: [C++] вивід змісту файла формату dsl зі збереженням розмітки

Якщо читати як бінарний файл? Побітно.

3

Re: [C++] вивід змісту файла формату dsl зі збереженням розмітки

Droid 77 написав:

Якщо читати як бінарний файл? Побітно.

Як це допоможе з внутрішньою розміткою файлу?
Там форматування схоже на html. Просто прочитати файл не проблема.
Треба якось змусити працювати це форматування, бо доведеться реґексом кожен файл змінювати,
а я хотів би зберегти цей формат файлів.

4

Re: [C++] вивід змісту файла формату dsl зі збереженням розмітки

Не мав справ з таким, але якщо мова про Lingvo dsl, то варто спитати гугл на зразок "Lingvo dsl to html".
Можна знайти необхідну с++ лібу, я бачив декілька на гітхабі за цим запитом.
І якщо буде коректна конвертація в html - то виводити вже в такому форматі буде простіше, наприклад на QTextBrowser.

А сам Qt (webengine, ...) мабуть нічого не знає про dsl формат.
Це моя власна думка та припущення, можу й помилятися.

Подякували: Teg Miles1

5

Re: [C++] вивід змісту файла формату dsl зі збереженням розмітки

Яка кінцева мета?
Написати перекладача?
Як так, то є цікаві лекції:
https://nua.kharkov.ua/wp-content/uploa … chkova.pdf
Навіть цікаво стало..

6 Востаннє редагувалося Droid 77 (23.11.2023 20:59:19)

Re: [C++] вивід змісту файла формату dsl зі збереженням розмітки

asdf написав:

Не мав справ з таким, але якщо мова про Lingvo dsl, то варто спитати гугл на зразок "Lingvo dsl to html".
Можна знайти необхідну с++ лібу, я бачив декілька на гітхабі за цим запитом.
І якщо буде коректна конвертація в html - то виводити вже в такому форматі буде простіше, наприклад на QTextBrowser.

А сам Qt (webengine, ...) мабуть нічого не знає про dsl формат.
Це моя власна думка та припущення, можу й помилятися.

Я вперше стикнувся з такм форматом, та вже за декілька хвилин зрозумів що це формат який складається з декількох файлів. Використовується в словниках (перекладачах).

Нещодавно писав щось подібне ( а саме конвертор символів ) через цикл wile.

7

Re: [C++] вивід змісту файла формату dsl зі збереженням розмітки

Потребує бінарне читання.
Один до одногою (один в один).

8

Re: [C++] вивід змісту файла формату dsl зі збереженням розмітки

asdf написав:

Не мав справ з таким, але якщо мова про Lingvo dsl, то варто спитати гугл на зразок "Lingvo dsl to html".
Можна знайти необхідну с++ лібу, я бачив декілька на гітхабі за цим запитом.
І якщо буде коректна конвертація в html - то виводити вже в такому форматі буде простіше, наприклад на QTextBrowser.

А сам Qt (webengine, ...) мабуть нічого не знає про dsl формат.
Це моя власна думка та припущення, можу й помилятися.

Я теж про це думав, але гадав, що, може, є простіший варіант. Просто бібліотеку якусь підключити абощо.

9

Re: [C++] вивід змісту файла формату dsl зі збереженням розмітки

Droid 77 написав:

Яка кінцева мета?
Написати перекладача?
Як так, то є цікаві лекції:
https://nua.kharkov.ua/wp-content/uploa … chkova.pdf
Навіть цікаво стало..

Мета — переписати Movar на C++ та розширити його можливості.
Зараз він працює лише з txt форматом, хотілося б розширити до dsl та dict хоча б.
Щодо книги, вона ж російською мовою. Я краще англійською щось схоже знайду й почитаю.

10

Re: [C++] вивід змісту файла формату dsl зі збереженням розмітки

Droid 77 написав:

Потребує бінарне читання.
Один до одногою (один в один).

Droid 77, прочитали наприклад, через QDataStream, а далі? Я не ТС якщо шо, мені просто цікаво теж :)

Vitaliy_Danmer,  можливо щось таке є, але конвертери в html я знайшов одразу.

Взагалі мої відповіді в цій темі -скоріше зі знаком питання... Не маю жодної уяви про формат, ніколи не бачив його та не працював з ним.

11 Востаннє редагувалося Droid 77 (23.11.2023 21:24:47)

Re: [C++] вивід змісту файла формату dsl зі збереженням розмітки

asdf написав:
Droid 77 написав:

Потребує бінарне читання.
Один до одногою (один в один).

Droid 77, прочитали наприклад, через QDataStream, а далі? Я не ТС якщо шо, мені просто цікаво теж :)

Vitaliy_Danmer,  можливо щось таке є, але конвертери в html я знайшов одразу.

Взагалі мої відповіді в цій темі -скоріше зі знаком питання... Не маю жодної уяви про формат, ніколи не бачив його та не працював з ним.

Теж не працював зі словниками перекладачами.
Та те що використовується декілька файлів це логічно для словника перекладача.
На мою думку дуже складно.
Доцільніше було-би використовувати якусь БД, якщо це користувач ПК. Як це автономний робот, то цей формат буде доречним. Контроллеру простіше працювати з діктами ніж з БД.

12

Re: [C++] вивід змісту файла формату dsl зі збереженням розмітки

Тому ще раз запитую, яка мета?

13

Re: [C++] вивід змісту файла формату dsl зі збереженням розмітки

Droid 77 написав:

Доцільніше було-би використовувати якусь БД.

Теж варіант.

14

Re: [C++] вивід змісту файла формату dsl зі збереженням розмітки

Droid 77 написав:

Тому ще раз запитую, яка мета?

Програма, що працює з електронними словниками.
Щось на зразок Lingvo чи Goldendict.

15 Востаннє редагувалося Droid 77 (23.11.2023 21:48:24)

Re: [C++] вивід змісту файла формату dsl зі збереженням розмітки

Як це машина з обмеженими ресурсами, тоді є сенс працювати з текстами.
Коли це персональний ПК, варто використовувати з БД.

16

Re: [C++] вивід змісту файла формату dsl зі збереженням розмітки

Droid 77 написав:

Як це машина з обмеженими ресурсами, тоді є сенс працювати з текстами.
Коли це персональний ПК, варто використовувати з БД.

Я орієнтуюсь на обмежені ресурси (старі комп'ютери), тому будуть тексти.

Розібрався, що таке цей dsl формат від Lingvo.
У їхній програмі вони виводять статтю словника в звичайний текстовий віджет на зразок QTextEdit.
Тому вони вирішили за допомогою Domain specific language створити розмітку для тексту по аналогії з html.
Якщо виводити їхні словники в своїй програмі через текстовий віджет,
то треба або писати модуль, який змусить цю розмітку працювати,
або просто видалити всю цю розмітку в звичайному текстовому редакторі через "Знайти й замінити".
При цьому при виводі через звичайний текстовий віджет форматування тексту
буде як у файлі (абзаци, відступ і т.д), але без додаткового оздоблення цієї dsl розмітки.
Якщо ж виводити через вебвіджет (QWebEngineView, наприклад),
то краще замінити їхню розмітку на html (де це можливо) за допомогою
того ж "Знайти й замінити". Бо при виводі через вебвіджет відступи й абзаци
текстового файлу не зберігаються і все зіб'ється в купу, якщо просто видалити.

Подякували: asdf1