ujo模式是一种易于阅读和编写的语言,用于定义ujo数据结构。
UJOScheme的Python项目详细描述
ujo方案
ujo模式是一种易于阅读和编写的语言,用于定义ujo数据。 结构。该定义被转换成文档和/或编译成二进制格式,以便快速可靠地检查数据集。
将ujo方案转换为降价文档
ujo schemes文件可以转换为标记文档ujs2md.py
用法:
usage: ujs2md.py [-o <output>] <source> positional arguments: source path to ujo scheme file or folder if providing a folder by default all files will be processed you might need to provide an extension by using the "-ext/--extension" option optional arguments: -h, --help show this help message and exit -o <output>, --output <output> output path for markdown -ext <extension>, --extension <extension> filter files by extension if providing a folder as <ujs_file> example: ".ujs" defaults to ".ujs"
示例:
python .\ujs2md.py -o testoutput -ext .ujs .\examples\ujs2md
课程名称
uio方案可以分为多个模块。每个模块在一个文件中描述。在 定义模块名称的文件开头。另外还有一个文档部分 可以添加特定模块。
modulemyModule;
使用doc关键字添加文档。
modulemyModule:doc"""This text is a descriptionof my module""";
类型
原子类型
原子类型定义了ujo中的基本数据字段。所有的数据结构都建立在原子类型之上。
<表><广告>int64
int32
int16
int8
uint64
uint32
uint16
uint8
float64
float32
float16
bool
日期
时间
时间戳
字符串
cstring
二进制
容器类型
容器类型用于组织值。容器中的值 可以是一个容器。这种嵌套允许定义复杂的 数据结构。
<表><广告>列表
地图
变量类型
<表><广告>变量
变量可以保存任何原子类型和容器类型的值。唯一的限制 变量类型定义的可能值是排除空值。
定义约束类型
基于原子类型和容器类型,可以通过应用约束定义新类型 关于它们的规则。
基于现有原子类型创建新类型而不受约束。新的 类型可以包含与原始类型相同的值。
new_type=int64;
新类型可以使用doc
new_type=int64:doc"This is my new type"
为了提高可读性,可以使用多行。
new_type=int64:doc"This is my new type";
约束规则
约束规则用于定义原子类型的约束。
定义特定值
故事点是一个灵活的指标,只包含特定的数字。
StoryPoints=uint16:in(1,2,3,5,8,13,20,40,100);SciConst=float32:in(3.14,9.81,343,2);
in
关键字也可用于定义字符串的特定单词。
CardColor=string:in("Heart","Spade","Diamond","Club");
定义值范围
范围包括从最低值到最高值的所有值。如果省略了最低或最高值,则使用所选原子类型的最小或最大可能值。此规则只能应用于数字类型。
usage: ujs2md.py [-o <output>] <source> positional arguments: source path to ujo scheme file or folder if providing a folder by default all files will be processed you might need to provide an extension by using the "-ext/--extension" option optional arguments: -h, --help show this help message and exit -o <output>, --output <output> output path for markdown -ext <extension>, --extension <extension> filter files by extension if providing a folder as <ujs_file> example: ".ujs" defaults to ".ujs"0
记录值
可以使用doc
记录值和范围
usage: ujs2md.py [-o <output>] <source> positional arguments: source path to ujo scheme file or folder if providing a folder by default all files will be processed you might need to provide an extension by using the "-ext/--extension" option optional arguments: -h, --help show this help message and exit -o <output>, --output <output> output path for markdown -ext <extension>, --extension <extension> filter files by extension if providing a folder as <ujs_file> example: ".ujs" defaults to ".ujs"1
强制设置值
默认情况下,值为ujo可以为空。如果数据集中不允许空值,则不允许空值
应用规则。
usage: ujs2md.py [-o <output>] <source> positional arguments: source path to ujo scheme file or folder if providing a folder by default all files will be processed you might need to provide an extension by using the "-ext/--extension" option optional arguments: -h, --help show this help message and exit -o <output>, --output <output> output path for markdown -ext <extension>, --extension <extension> filter files by extension if providing a folder as <ujs_file> example: ".ujs" defaults to ".ujs"2
如果值是必需的,则可以应用默认值。
usage: ujs2md.py [-o <output>] <source> positional arguments: source path to ujo scheme file or folder if providing a folder by default all files will be processed you might need to provide an extension by using the "-ext/--extension" option optional arguments: -h, --help show this help message and exit -o <output>, --output <output> output path for markdown -ext <extension>, --extension <extension> filter files by extension if providing a folder as <ujs_file> example: ".ujs" defaults to ".ujs"3
列表类型
列表是默认情况下可以包含所有有效UJO类型的值的容器类型。
特定类型的列表
可以从任何有效类型(包括容器类型)创建列表。下面是一个例子 创建Int64值的列表。只能存储Int64值和空值。
usage: ujs2md.py [-o <output>] <source> positional arguments: source path to ujo scheme file or folder if providing a folder by default all files will be processed you might need to provide an extension by using the "-ext/--extension" option optional arguments: -h, --help show this help message and exit -o <output>, --output <output> output path for markdown -ext <extension>, --extension <extension> filter files by extension if providing a folder as <ujs_file> example: ".ujs" defaults to ".ujs"4
如果我想从列表中排除空值,我可以应用相关的类型规则。
usage: ujs2md.py [-o <output>] <source> positional arguments: source path to ujo scheme file or folder if providing a folder by default all files will be processed you might need to provide an extension by using the "-ext/--extension" option optional arguments: -h, --help show this help message and exit -o <output>, --output <output> output path for markdown -ext <extension>, --extension <extension> filter files by extension if providing a folder as <ujs_file> example: ".ujs" defaults to ".ujs"5
也可以应用范围。
usage: ujs2md.py [-o <output>] <source> positional arguments: source path to ujo scheme file or folder if providing a folder by default all files will be processed you might need to provide an extension by using the "-ext/--extension" option optional arguments: -h, --help show this help message and exit -o <output>, --output <output> output path for markdown -ext <extension>, --extension <extension> filter files by extension if providing a folder as <ujs_file> example: ".ujs" defaults to ".ujs"6
可以首先定义约束类型并在列表定义中使用。
usage: ujs2md.py [-o <output>] <source> positional arguments: source path to ujo scheme file or folder if providing a folder by default all files will be processed you might need to provide an extension by using the "-ext/--extension" option optional arguments: -h, --help show this help message and exit -o <output>, --output <output> output path for markdown -ext <extension>, --extension <extension> filter files by extension if providing a folder as <ujs_file> example: ".ujs" defaults to ".ujs"7
可以应用doc
规则来记录新列表类型。
下面的示例对带有换行符的文本应用doc
规则。
usage: ujs2md.py [-o <output>] <source> positional arguments: source path to ujo scheme file or folder if providing a folder by default all files will be processed you might need to provide an extension by using the "-ext/--extension" option optional arguments: -h, --help show this help message and exit -o <output>, --output <output> output path for markdown -ext <extension>, --extension <extension> filter files by extension if providing a folder as <ujs_file> example: ".ujs" defaults to ".ujs"8
定义记录
记录是列表容器上的约束。它定义了 具有特定和固定类型的值。
usage: ujs2md.py [-o <output>] <source> positional arguments: source path to ujo scheme file or folder if providing a folder by default all files will be processed you might need to provide an extension by using the "-ext/--extension" option optional arguments: -h, --help show this help message and exit -o <output>, --output <output> output path for markdown -ext <extension>, --extension <extension> filter files by extension if providing a folder as <ujs_file> example: ".ujs" defaults to ".ujs"9
作为参考,也可能用于以后转换为json或xml数据a 名称可以应用于记录中的数据字段。
python .\ujs2md.py -o testoutput -ext .ujs .\examples\ujs2md0
可以对每个值应用约束规则,并且可以记录字段。
python .\ujs2md.py -o testoutput -ext .ujs .\examples\ujs2md1
扩展记录
可以扩展已定义的记录以包含更多字段。结果 记录将新字段追加到先前定义的记录部分。
python .\ujs2md.py -o testoutput -ext .ujs .\examples\ujs2md2
关联数组(map)
关联数组的约束应用于键和值。全原子 类型可以用作键。值可以是任何类型,包括容器。
使用固定键定义静态数组
使用每个映射的类型定义定义定义映射的键 键/值对。
python .\ujs2md.py -o testoutput -ext .ujs .\examples\ujs2md3
as<;type>;
定义是默认文本类型的转换
到特定的原子类型。演员是可选的。
下面的示例演示如何定义静态地图。
python .\ujs2md.py -o testoutput -ext .ujs .\examples\ujs2md4
使用自定义数据类型作为映射键
自定义数据类型可以用作映射的键。所有标量类型都可以是 使用。
示例:
python .\ujs2md.py -o testoutput -ext .ujs .\examples\ujs2md5
扩展静态地图
可以使用extend
关键字扩展静态地图定义。
python .\ujs2md.py -o testoutput -ext .ujs .\examples\ujs2md6
定义类型映射
可以定义映射中键和值的类型。以下 示例演示了使用int64键的映射的定义 但是所有类型的变量值。
python .\ujs2md.py -o testoutput -ext .ujs .\examples\ujs2md7
定义变量类型
type变量
是任何可用类型的通配符,无论是原子类型、自定义类型还是容器类型。
有时数据定义需要变量的灵活性,但仍然需要限制
类型的子集。
python .\ujs2md.py -o testoutput -ext .ujs .\examples\ujs2md8
可以添加每种类型的文档。
python .\ujs2md.py -o testoutput -ext .ujs .\examples\ujs2md9
也可以添加其他约束。