///|
test {
let document = @json_ast.parse(
(
#|{"smithy":"2.0","shapes":{"example.weather#CityName":{"type":"string"}}}
),
)
inspect(document.smithy, content="2.0")
let shape = document.shapes.unwrap().get("example.weather#CityName").unwrap()
inspect(shape.kind.keyword(), content="string")
assert_eq(@json_ast.parse(@json_ast.stringify(document)), document)
}///|
test {
let names = @json_ast.JsonShape::new(
List(Some(@json_ast.JsonMember::new("smithy.api#String"))),
)
let document = @json_ast.JsonAst::new(shapes={
"example.weather#Names": names,
})
assert_eq(@json_ast.decode(@json_ast.encode(document)), document)
}impl ToJson for JsonMemberimpl FromJson for JsonMemberpub(all) struct JsonOperation {
input : JsonReference?
output : JsonReference?
errors : Array[JsonReference]?
} derive(Eq, Debug)fn JsonOperation::new(input? : JsonReference, output? : JsonReference, errors? : Array[JsonReference]) -> JsonOperationimpl ToJson for JsonReferenceimpl FromJson for JsonReferencepub(all) struct JsonResource {
identifiers : Map[String, JsonReference]?
properties : Map[String, JsonReference]?
create : JsonReference?
put : JsonReference?
read : JsonReference?
update : JsonReference?
delete : JsonReference?
list : JsonReference?
operations : Array[JsonReference]?
collectionOperations : Array[JsonReference]?
resources : Array[JsonReference]?
} derive(Eq, Debug)fn JsonResource::new(identifiers? : Map[String, JsonReference], properties? : Map[String, JsonReference], create? : JsonReference, put? : JsonReference, read? : JsonReference, update? : JsonReference, delete? : JsonReference, list? : JsonReference, operations? : Array[JsonReference], collectionOperations? : Array[JsonReference], resources? : Array[JsonReference]) -> JsonResourcepub(all) struct JsonService {
version : String?
operations : Array[JsonReference]?
resources : Array[JsonReference]?
errors : Array[JsonReference]?
rename : Map[String, String]?
} derive(Eq, Debug)fn JsonService::new(version? : String, operations? : Array[JsonReference], resources? : Array[JsonReference], errors? : Array[JsonReference], rename? : Map[String, String]) -> JsonServicepub(all) struct JsonShape {
kind : JsonShapeKind
traits : Map[String, Json]?
mixins : Array[JsonReference]?
} derive(Eq, Debug)fn JsonShape::new(kind : JsonShapeKind, traits? : Map[String, Json], mixins? : Array[JsonReference]) -> JsonShapepub(all) enum JsonShapeKind {
Simple(SimpleType)
List(JsonMember?)
Set(JsonMember?)
Map(key~ : JsonMember?, value~ : JsonMember?)
Structure(Map[String, JsonMember]?)
Union(Map[String, JsonMember]?)
Enum(Map[String, JsonMember]?)
IntEnum(Map[String, JsonMember]?)
Operation(JsonOperation)
Service(JsonService)
Resource(JsonResource)
Apply
} derive(Eq, Debug)Install
Download zipSmithy syntax for MoonBit: lossless IDL parser, traversal, diagnostics and typed JSON AST codec