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中的基本数据字段。所有的数据结构都建立在原子类型之上。

<表><广告>关键字说明 < /广告><正文>int6464位整数int3232位整数int1616位整数int88位整数uint6464位无符号整数uint3232位无符号整数uint1616位无符号整数uint88位无符号整数float64双精度浮点float32单精度浮点float16半精度浮点bool布尔值(真/假)日期年月日 时间时:分:秒日期时间 时间和日期的组合时间戳时间、日期和毫秒的组合字符串UTF8字符串cstringC字符串以\x00结尾二进制非类型化二进制对象

容器类型

容器类型用于组织值。容器中的值 可以是一个容器。这种嵌套允许定义复杂的 数据结构。

<表><广告>关键字说明 < /广告><正文>列表值列表地图键/值对列表

变量类型

<表><广告>关键字说明 < /广告><正文>变量所有原子类型和容器类型

变量可以保存任何原子类型和容器类型的值。唯一的限制 变量类型定义的可能值是排除空值。

定义约束类型

基于原子类型和容器类型,可以通过应用约束定义新类型 关于它们的规则。

基于现有原子类型创建新类型而不受约束。新的 类型可以包含与原始类型相同的值。

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\ujs2md
0

可以对每个值应用约束规则,并且可以记录字段。

python .\ujs2md.py -o testoutput -ext .ujs .\examples\ujs2md
1

扩展记录

可以扩展已定义的记录以包含更多字段。结果 记录将新字段追加到先前定义的记录部分。

python .\ujs2md.py -o testoutput -ext .ujs .\examples\ujs2md
2

关联数组(map)

关联数组的约束应用于键和值。全原子 类型可以用作键。值可以是任何类型,包括容器。

使用固定键定义静态数组

使用每个映射的类型定义定义定义映射的键 键/值对。

python .\ujs2md.py -o testoutput -ext .ujs .\examples\ujs2md
3

as<;type>;定义是默认文本类型的转换 到特定的原子类型。演员是可选的。

下面的示例演示如何定义静态地图。

python .\ujs2md.py -o testoutput -ext .ujs .\examples\ujs2md
4

使用自定义数据类型作为映射键

自定义数据类型可以用作映射的键。所有标量类型都可以是 使用。

示例:

python .\ujs2md.py -o testoutput -ext .ujs .\examples\ujs2md
5

扩展静态地图

可以使用extend关键字扩展静态地图定义。

python .\ujs2md.py -o testoutput -ext .ujs .\examples\ujs2md
6

定义类型映射

可以定义映射中键和值的类型。以下 示例演示了使用int64键的映射的定义 但是所有类型的变量值。

python .\ujs2md.py -o testoutput -ext .ujs .\examples\ujs2md
7

定义变量类型

type变量是任何可用类型的通配符,无论是原子类型、自定义类型还是容器类型。 有时数据定义需要变量的灵活性,但仍然需要限制 类型的子集。

python .\ujs2md.py -o testoutput -ext .ujs .\examples\ujs2md
8

可以添加每种类型的文档。

python .\ujs2md.py -o testoutput -ext .ujs .\examples\ujs2md
9

也可以添加其他约束。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java CopyOnWriteArrayList可以用于可变对象吗?   只有静态方法的java加载类   java试图在加载时在自己身上绘制一个窗口   java将json作为字符串传递   java未从SMS检索器API接收SMS内容,尽管设备正在接收消息   java如何将部分XML复制到新的XML文件?   java如何在2D平面上随机生成一组站点,这些站点之间的空间大致相同?   JavaSpringMVC控制器bean配置   在Java中调用构造函数中的数组   如何在语音事件后持续发送请求类型:单次语音结束谷歌语音云Java   比较Java中的两个csv文件   java如何从包含构造函数的类调用方法?   java Android试图创建“先保存文件”吗?“对话   java如何避免Spring托管bean和Pojo依赖于同一服务时出现单例