让我们设置场景。这是一个文本文件:
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
每个段落可以包含更多的段落,但让我们保持简单。
我们希望通过以下简单规则以程序方式构建类似的文本文件:
- 节始终存在,至少包含一段
- 可以根据一个或多个条件显示或不显示任何段落。条件被定义为根据上下文计算的代码(例如,想想Python中的
eval
函数( - 将在运行时提供上下文
- 段落可以以数字开头。因此,我们不能将数字作为段落的一部分(段落可以存在也可以不存在,它们的数字必须遵循正确的顺序:1、2、3等(
要构建的文本类型包括使用条款、隐私政策等。为了简化,法律文本或多或少包含基于web表单响应的内容。
编辑:文本是与表单分开生成的。我们只有回应。
因此,我的方法是将文本块(段落(存储为数据库的列。每列连同:
- 在其截面内的位置
- 要作为条件评估的代码。如上所述,将在运行时提供用于评估代码的上下文
由于我们可以有一个或多个条件来评估,以确定一块文本是否会包含在最终文本中,所以我不确定该使用哪种数据结构。
关系数据库列的数量将是动态的,因为在每种情况下都存在初始数量不受限制的待评估条件。
NoSQL数据库,将结构存储为JSON,包含文本+条件数组?
有其他方法吗
我用不同的方法解决了这个问题。
我们在前端通过拖动&将2种类型的小部件放入画布(表示文本文件的内容(:
- 简单文本块
- 条件小部件:它们将根据运行时前端评估的条件显示/隐藏文本块(这是关键(。类似于Angular
ng-if
的东西
然后我们编译全文,也在前端。
因此,后端只存储大块的文本。无需将条件逻辑转换为数据库。现在甚至听起来很傻。。。