Какова лучшая структура данных для хранения фрагментов текста, которые могут быть условно показаны как часть текстового файла? - PullRequest
0 голосов
/ 14 ноября 2018

Давайте настроим сценарий. Это текстовый файл:

INTRODUCTION

Paragraph 01
Paragraph 02
Paragraph 03

SECTION XXXXXX

Paragraph 01
Paragraph 02

SECTION YYYYYY

Paragraph 01

SECTION ZZZZZZ

Paragraph 01
Paragraph 02
Paragraph 03

Каждый абзац может содержать больше абзацев внутри, но давайте сделаем все просто.

Мы хотим программно создавать подобные текстовые файлы, следуя простым правилам:

  • Разделы всегда присутствуют , содержащие хотя бы один абзац
  • Любой параграф может быть показан или не основан на одном или нескольких условиях . Условия определяются как код, оцениваемый по контексту (например, подумайте о функции eval в Python).
  • Контекст будет предоставлен во время выполнения
  • Абзацы могут начинаться с цифры . Таким образом, мы не можем поместить числа как часть абзаца (абзацы могут присутствовать или нет, и их номера должны следовать в правильной последовательности: 1, 2, 3 и т. Д.)

Типы создаваемых текстов: условия использования, политика конфиденциальности и т. Д. В качестве упрощения юридические тексты, содержащие более или менее содержание, основанные на ответах веб-форм .

РЕДАКТИРОВАТЬ: текст создается отдельно от форм. У нас есть только ответы.

Итак, мой подход - хранить куски текста (абзацы) в виде столбцов базы данных . Каждый столбец вместе с:

  • Положение внутри своей секции
  • Код для оценки в качестве условия. Как было сказано, контекст для оценки этого кода будет предоставлен во время выполнения.

Поскольку у нас может быть одно или несколько условий для оценки, чтобы определить, будет ли фрагмент текста включен или нет в окончательный текст, я не уверен в том, какую структуру данных использовать.

Реляционная база данных? Количество столбцов будет динамическим из-за наличия изначально неограниченного количества условий, которые должны оцениваться в каждом случае.

База данных NoSQL? , хранящая структуру в виде JSON, содержащая текст + массив условий?

Любой другой подход?

1 Ответ

0 голосов
/ 16 ноября 2018

Я решил проблему другим подходом.

Мы строим текстовый файл во внешнем интерфейсе, перетаскивая 2 вида виджетов на холст (представляющий содержимое текстового файла):

  • Простые текстовые блоки
  • Условные виджеты: они будут отображать / скрывать текстовые блоки на основе условия, оцененного во внешнем интерфейсе во время выполнения (это ключ).Что-то похожее на Angular ng-if.

Затем мы компилируем полный текст, также во внешнем интерфейсе.

Итак, бэкэнд просто хранит куски текста.Нет необходимости переводить условную логику в базу данных.Теперь это даже звучит глупо ...

...