#aws-smithy #idl #model #selector #parser #language #native

atelier_smithy

Rust 本地 Smithy 语言格式,用于 AWS Smithy IDL

19 个版本

0.2.13 2021 年 6 月 25 日
0.2.12 2021 年 6 月 25 日
0.2.9 2021 年 5 月 21 日
0.2.6 2021 年 4 月 30 日
0.1.1 2020 年 6 月 30 日

#6 in #selector

Download history 941/week @ 2024-03-13 672/week @ 2024-03-20 666/week @ 2024-03-27 840/week @ 2024-04-03 616/week @ 2024-04-10 653/week @ 2024-04-17 578/week @ 2024-04-24 521/week @ 2024-05-01 713/week @ 2024-05-08 666/week @ 2024-05-15 584/week @ 2024-05-22 875/week @ 2024-05-29 1197/week @ 2024-06-05 1145/week @ 2024-06-12 664/week @ 2024-06-19 1124/week @ 2024-06-26

4,280 每月下载量
38 个 crate(直接使用 3 个) 中使用

MIT 许可证

485KB
10K SLoC

Atelier: crate atelier_smithy

提供在自身原生语言表示中读取和写入 Smithy 模型的能力。

crates.io docs.rs

该 crate 提供了两个底层解析器,parse_modelparse_selector,分别对应核心 ModelSelector 类型。它们是解耦的,以允许工具用例中不需要或甚至不希望解析所有选择器表达式,以及那些选择器表达式可能在非模型场景中有用的用例。

此 crate 还为 Smithy IDL 文件提供了核心 ModelReaderModelWriter 特质的实现。

示例

以下示例演示了如何使用 SmithyReader 将文件解析为内存中的模型。

use atelier_core::io::read_model_from_file;
use atelier_smithy::SmithyReader;
use std::path::PathBuf;

let path = PathBufBuf::from("tests/good/waiters.smithy");
let mut reader = SmithyReader::default();
let result = read_model_from_file(&mut reader, path);
assert!(result.is_ok());

示例 - 选择器

以下示例解析了简单的选择器表达式 "*",表示任何形状,并将其解析为其内存中的模型。

use atelier_smithy::parse_selector;

let result = parse_selector("*");
assert!(result.is_ok());

变更

版本 0.2.13

  • 实现了使用模型组装器从多个命名空间文件构建模型时 cargo-atelier 的 lint 和 validate 应该正常工作的 功能
    • 修复了 Smithy 写入器在写入值(在特性和元数据中)时的错误。

版本 0.2.12

  • 将 MemberShape 上的 ID 从 ShapeID 更改为 Identifier。这符合 Smithy IDL 的正式 BNF 和 JSON AST 使用。

版本 0.2.11

  • 修复了行写入器的转义错误,这使得跨平台比较变得痛苦。

版本 0.2.10

  • 修复了测试用例中的拼写错误。

版本 0.2.9

  • 从核心:重新组织错误,使命名和消息一致,并删除未使用的。

版本 0.2.8

  • 支持核心模型构建器,现在使用 TryFrom 而不是 From。
  • 支持在抽象模型中的服务形状中添加的 "renames" 集合。
  • 所有注释特征使用空对象作为值,而不是None。
  • 使用新的共享atelier-test crate。

版本 0.2.7

  • 支持核心模型构建器,现在使用 TryFrom 而不是 From。
  • 使用新的共享atelier-test crate。

版本 0.2.6

  • 由于核心中的特征API更改而更新。

版本 0.2.5

  • 更新Smithy语法和解析器以匹配规范中的更改
    • 将逗号 "," 字符转换为空白字符,使其成为成员分隔符的可选选项
    • 移除了 br 规则,以确保成员在不同的行上定义
    • 简化了具有空/有内容的对的一组规则
  • 添加了两个额外的测试示例文件

版本 0.2.4

  • 跟踪从 atelier_core crate 到 ShapeType 的更改。

版本 0.2.3

  • 添加了对解析选择表达式的支持。

版本 0.2.2

  • 修复:测试用例编译错误。

版本 0.2.1

  • 基于新的核心特征 HasIdentityHasTraits 的更改。

版本 0.2.0

  • 在Smithy团队就语义模型与Smithy团队的分离达成一致后,进行了主要重构。

版本 0.1.5

  • ModelReaderModelWriter 更改了API。
    • 移除了 representation 方法
    • 添加了 FILE_EXTENSION 常量。
  • 将内部模块组织更改为与json crate相匹配。

版本 0.1.4

  • 验证了Smithy文件的往返,即读取到模型然后再写回来。

版本 0.1.3

  • ModelReaderModelWriter 周围的核心API中的更改。

版本 0.1.2

  • 将大多数字符串移动到使用 core::syntax
  • 修复了多个文档字符串的问题。
  • 修复了空白文档特征的问题。
  • 修复了空特征体语法问题。

版本 0.1.1

  • 能够解析基本示例。

版本 0.1.0

  • 首次发布。
  • 能够编写示例天气服务,使用构建器API构建。

待办事项

  1. 需要有一个解析器。

依赖关系

~7–10MB
~189K SLoC