Specification
This is the specification of the interface definition language for Grams Subjects, it includes the theoritical definition of the lanuage as well as usage examples per topic.
Conventions used in this section
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119. This specification makes use of the Augmented Backus-Naur Form (ABNF) RFC 5234 notation, including the core rules defined here.
Please report technical errors and ambiguities in this specification to the Smithy GitHub repository at https://github.com/smithy-lang/smithy. This specification is open source; contributions are welcome.
📄️ The Subject Model
Dive deep into the heart of Grams: Subjects. These dynamic entities represent the very essence of decentralized subject-oriented programming in the Grams ecosystem, architecturally designed to interlace seamlessly with the diverse world of Solidity and beyond.
🗃️ Types
3 مواد
🗃️ Traits
5 مواد
📄️ Subjects IDL
Subject models are defined using either the Subjects interface definition language (IDL) or the JSON abstract syntax tree (AST). This document defines the syntax and ABNF grammar for defining models using the Subjects IDL.
📄️ JSON AST
Subject models written using the Subjects IDL have an isomorphic JSON abstract syntax tree (AST) representation that can be used to more easily integrate Subjects into languages and tools that do not have a Subjects IDL parser.
📄️ Selectors
Subjects selector is a domain specific language (DSL) used to match shapes within a model. Selectors are used to build custom validators and to specify where it is valid to apply a trait.
📄️ Model Validation
Subjects provide a customizable validation system that can be used by application designers and organizations to ensure that their shapes adhere to their own standards and best practices.