Flesh out syntax part of documentation
Signed-off-by: Marcel Müller <neikos@neikos.email>
This commit is contained in:
parent
560d37f633
commit
79a037b749
2 changed files with 71 additions and 2 deletions
69
src/lib.rs
69
src/lib.rs
|
|
@ -27,6 +27,75 @@
|
||||||
cfg_attr(doc, doc = ::document_features::document_features!())
|
cfg_attr(doc, doc = ::document_features::document_features!())
|
||||||
)]
|
)]
|
||||||
//!
|
//!
|
||||||
|
//! ## Syntax
|
||||||
|
//!
|
||||||
|
//! Nomo tries to keep a consistent syntax across its features.
|
||||||
|
//! The main concepts are:
|
||||||
|
//!
|
||||||
|
//! [`nomo`](crate) uses `{{ }}` as its identifiers. Each of them forms a 'block'.
|
||||||
|
//!
|
||||||
|
//! There are two kinds of blocks:
|
||||||
|
//!
|
||||||
|
//! - `{{= <expr> }}` Interpolations
|
||||||
|
//! - `{{ <control> }}` everything else
|
||||||
|
//!
|
||||||
|
//! ### Expressions
|
||||||
|
//!
|
||||||
|
//! An expression in [`nomo`](crate) is anything that produces a value. Notably, control structures
|
||||||
|
//! _do not_ create values. This is different to rust.
|
||||||
|
//!
|
||||||
|
//! So for example this does not work:
|
||||||
|
//!
|
||||||
|
//! ```nomo
|
||||||
|
//! {{= if is_active "Active" else "Inactive" end }}
|
||||||
|
//! ```
|
||||||
|
//!
|
||||||
|
//! If you wish to conditionally output something, you would write:
|
||||||
|
//!
|
||||||
|
//! ```nomo
|
||||||
|
//! {{ if is_active }}
|
||||||
|
//! Active
|
||||||
|
//! {{ else }}
|
||||||
|
//! Inactive
|
||||||
|
//! {{ end }}
|
||||||
|
//! ```
|
||||||
|
//!
|
||||||
|
//! In expressions you can write:
|
||||||
|
//! - Mathematical expressions (`+-*/`)
|
||||||
|
//! - Logical/Binary expressions (`&&`, `||`, `>`, ...)
|
||||||
|
//! - Literals (`12`, `292.21`, `"Hello"`)
|
||||||
|
//!
|
||||||
|
//! ### Interpolations
|
||||||
|
//!
|
||||||
|
//! Interpolations is how one prints out data. A [`NomoValue`] can be printed if it is a:
|
||||||
|
//!
|
||||||
|
//! - String
|
||||||
|
//! - Integer/SignedInteger
|
||||||
|
//! - Bool
|
||||||
|
//! - Float
|
||||||
|
//!
|
||||||
|
//! All other values will result in an error.
|
||||||
|
//!
|
||||||
|
//! ### Control Structures
|
||||||
|
//!
|
||||||
|
//! [`Nomo`](crate) supports several control structures:
|
||||||
|
//!
|
||||||
|
//! **Conditions `if/else`**:
|
||||||
|
//!
|
||||||
|
//! ```nomo
|
||||||
|
//! {{ if <expr> }}
|
||||||
|
//! {{ else if <expr> }}
|
||||||
|
//! {{ else }}
|
||||||
|
//! {{ end }}
|
||||||
|
//! ```
|
||||||
|
//!
|
||||||
|
//! **Loops `for .. in`**
|
||||||
|
//!
|
||||||
|
//! ```nomo
|
||||||
|
//! {{ for <identifier> in <expr> }}
|
||||||
|
//! {{ else }}
|
||||||
|
//! {{ end }}
|
||||||
|
//! ```
|
||||||
|
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -246,12 +246,12 @@ impl NomoValue {
|
||||||
pub(crate) fn try_to_string(&self) -> Option<String> {
|
pub(crate) fn try_to_string(&self) -> Option<String> {
|
||||||
match self {
|
match self {
|
||||||
NomoValue::String { value } => Some(value.to_string()),
|
NomoValue::String { value } => Some(value.to_string()),
|
||||||
NomoValue::Array { .. } => None,
|
|
||||||
NomoValue::Bool { value } => Some(value.to_string()),
|
NomoValue::Bool { value } => Some(value.to_string()),
|
||||||
NomoValue::Object { .. } => None,
|
|
||||||
NomoValue::Integer { value } => Some(value.to_string()),
|
NomoValue::Integer { value } => Some(value.to_string()),
|
||||||
NomoValue::SignedInteger { value } => Some(value.to_string()),
|
NomoValue::SignedInteger { value } => Some(value.to_string()),
|
||||||
NomoValue::Float { value } => Some(value.to_string()),
|
NomoValue::Float { value } => Some(value.to_string()),
|
||||||
|
NomoValue::Array { .. } => None,
|
||||||
|
NomoValue::Object { .. } => None,
|
||||||
NomoValue::Iterator { .. } => None,
|
NomoValue::Iterator { .. } => None,
|
||||||
NomoValue::Undefined => None,
|
NomoValue::Undefined => None,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue