mirror of
https://github.com/hinto-janai/cuprate.git
synced 2025-01-11 05:15:20 +00:00
fix macro generation, doc test
This commit is contained in:
parent
9fa5d24e3a
commit
b41b7dd557
4 changed files with 82 additions and 14 deletions
|
@ -9,7 +9,7 @@ repository = "https://github.com/Cuprate/cuprate/tree/main/rpc/monero-rpc-types
|
||||||
keywords = ["monero", "rpc", "types"]
|
keywords = ["monero", "rpc", "types"]
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["dep:serde"]
|
default = ["serde"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
monero-serai = { workspace = true }
|
monero-serai = { workspace = true }
|
||||||
|
|
|
@ -1,8 +1,20 @@
|
||||||
//! TODO
|
//! TODO
|
||||||
|
//!
|
||||||
|
//! <https://github.com/monero-project/monero/blob/cc73fe71162d564ffda8e549b79a350bca53c454/src/rpc/daemon_messages.h>.
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------- Import
|
//---------------------------------------------------------------------------------------------------- Import
|
||||||
|
use crate::macros::define_monero_rpc_type_struct;
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------- TODO
|
//---------------------------------------------------------------------------------------------------- TODO
|
||||||
|
define_monero_rpc_type_struct! {
|
||||||
|
get_height,
|
||||||
|
daemon_messages.h => 81..=87,
|
||||||
|
GetHeight { height: 123 } => r#"{"height":123}"#,
|
||||||
|
GetHeight {
|
||||||
|
/// A block height.
|
||||||
|
height: u64,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------- Tests
|
//---------------------------------------------------------------------------------------------------- Tests
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
|
|
@ -76,6 +76,9 @@
|
||||||
// FIXME: good lint but is less clear in most cases.
|
// FIXME: good lint but is less clear in most cases.
|
||||||
clippy::items_after_statements,
|
clippy::items_after_statements,
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
rustdoc::bare_urls,
|
||||||
|
|
||||||
clippy::module_name_repetitions,
|
clippy::module_name_repetitions,
|
||||||
clippy::module_inception,
|
clippy::module_inception,
|
||||||
clippy::redundant_pub_crate,
|
clippy::redundant_pub_crate,
|
||||||
|
|
|
@ -2,22 +2,75 @@
|
||||||
//!
|
//!
|
||||||
//! These generate repetitive documentation, tests, etc.
|
//! These generate repetitive documentation, tests, etc.
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------- Documentation macros
|
//---------------------------------------------------------------------------------------------------- Struct definition
|
||||||
/// TODO
|
/// TODO
|
||||||
macro_rules! serde_doc_test {
|
macro_rules! define_monero_rpc_type_struct {
|
||||||
(
|
(
|
||||||
$type:ty, // TODO
|
$monero_daemon_rpc_doc_link:ident, // TODO
|
||||||
|
$monero_code_filename:ident.$monero_code_filename_extension:ident => // TODO
|
||||||
|
$monero_code_line_start:literal..= // TODO
|
||||||
|
$monero_code_line_end:literal, // TODO
|
||||||
|
$type_literal:expr => // TODO
|
||||||
|
$type_as_json:literal, // TODO
|
||||||
|
$type_name:ident { // TODO
|
||||||
|
$(
|
||||||
|
$( #[$field_attr:meta] )* // TODO
|
||||||
|
$field:ident: $type:ty, // TODO
|
||||||
|
)*
|
||||||
|
}
|
||||||
) => {
|
) => {
|
||||||
#[doc = "TODO"]
|
///
|
||||||
|
#[derive(Copy, Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
||||||
|
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
|
||||||
|
///
|
||||||
|
// Documents the original Monero type and where it is located in `monero-project/monero`.
|
||||||
|
#[doc = concat!(
|
||||||
|
"",
|
||||||
|
"Definition: [`",
|
||||||
|
stringify!($monero_code_filename),
|
||||||
|
".",
|
||||||
|
stringify!($monero_code_filename_extension),
|
||||||
|
" @ ",
|
||||||
|
stringify!($monero_code_line_start),
|
||||||
|
"..=",
|
||||||
|
stringify!($monero_code_line_end),
|
||||||
|
"`](",
|
||||||
|
"https://github.com/monero-project/monero/blob/cc73fe71162d564ffda8e549b79a350bca53c454/src/rpc/",
|
||||||
|
stringify!($monero_code_filename),
|
||||||
|
".",
|
||||||
|
stringify!($monero_code_filename_extension),
|
||||||
|
"#L",
|
||||||
|
stringify!($monero_code_line_start),
|
||||||
|
"-L",
|
||||||
|
stringify!($monero_code_line_end),
|
||||||
|
"), documentation: [`",
|
||||||
|
stringify!($monero_daemon_rpc_doc_link),
|
||||||
|
"`](https://www.getmonero.org/resources/developer-guides/daemon-rpc.html",
|
||||||
|
"#",
|
||||||
|
stringify!($monero_daemon_rpc_doc_link),
|
||||||
|
").",
|
||||||
|
)]
|
||||||
|
///
|
||||||
|
// Doc-test that tests (de)serialization.
|
||||||
|
/// # `serde` example
|
||||||
|
/// ```rust
|
||||||
|
#[doc = "# use monero_rpc_types::{json::*, binary::*, data::*, mix::*};"]
|
||||||
|
#[doc = concat!("let t = ", stringify!($type_literal), ";")]
|
||||||
|
#[doc = "let string = serde_json::to_string(&t).unwrap();"]
|
||||||
|
#[doc = concat!("assert_eq!(string, ", stringify!($type_as_json), ");")]
|
||||||
|
#[doc = ""]
|
||||||
|
#[doc = "let t2 = serde_json::from_str(&string).unwrap();"]
|
||||||
|
#[doc = "assert_eq!(t, t2);"]
|
||||||
|
/// ```
|
||||||
|
// The type.
|
||||||
|
pub struct $type_name {
|
||||||
|
$(
|
||||||
|
$( #[$field_attr] )*
|
||||||
|
pub $field: $type,
|
||||||
|
)*
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
pub(crate) use define_monero_rpc_type_struct;
|
||||||
|
|
||||||
/// TODO
|
//---------------------------------------------------------------------------------------------------- Documentation macros
|
||||||
macro_rules! monero_ref {
|
|
||||||
(
|
|
||||||
$monero_code_link:literal, // TODO
|
|
||||||
$monero_rpc_doc_link:literal, // TODO
|
|
||||||
) => {
|
|
||||||
#[doc = "TODO"]
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in a new issue