#![warn(missing_docs)]
use serde::{Deserialize, Serialize};
use std::collections::BTreeMap;
use url::Url;
#[derive(Debug, Clone, PartialEq, Eq, Ord, PartialOrd, Serialize, Deserialize)]
pub struct GmManual {
pub functions: BTreeMap<String, GmManualFunction>,
pub variables: BTreeMap<String, GmManualVariable>,
pub constants: BTreeMap<String, GmManualConstant>,
}
#[derive(Debug, Clone, PartialEq, Eq, Ord, PartialOrd, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GmManualFunction {
pub name: String,
pub parameters: Vec<GmManualFunctionParameter>,
pub required_parameters: usize,
pub is_variadic: bool,
pub example: String,
pub description: String,
pub returns: String,
pub link: Url,
}
#[derive(Debug, Clone, PartialEq, Eq, Ord, PartialOrd, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GmManualVariable {
pub name: String,
pub example: String,
pub description: String,
pub returns: String,
pub link: Url,
}
#[derive(Debug, Clone, PartialEq, Eq, Ord, PartialOrd, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GmManualFunctionParameter {
pub parameter: String,
pub description: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Ord, PartialOrd, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GmManualConstant {
pub name: String,
pub description: String,
pub link: Url,
pub secondary_descriptors: Option<BTreeMap<String, String>>,
}