aboutsummaryrefslogtreecommitdiff
path: root/mingling/src
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-05-16 00:07:59 +0800
committer魏曹先生 <1992414357@qq.com>2026-05-16 00:09:55 +0800
commita127d6f3cf2741d4dc404959c5481fa61651e133 (patch)
treeec82ed1260e5a3d5744f2181b79d21ffb65e54e8 /mingling/src
parentaae29170dc7ae7a8976699c4d1f7011f9f238a06 (diff)
Refactor general_renderer into granular format-specific features
Diffstat (limited to 'mingling/src')
-rw-r--r--mingling/src/example_docs.rs2
-rw-r--r--mingling/src/features.rs24
-rw-r--r--mingling/src/lib.rs12
-rw-r--r--mingling/src/setups/general_renderer.rs7
4 files changed, 45 insertions, 0 deletions
diff --git a/mingling/src/example_docs.rs b/mingling/src/example_docs.rs
index ba61f92..d197c6b 100644
--- a/mingling/src/example_docs.rs
+++ b/mingling/src/example_docs.rs
@@ -445,6 +445,8 @@ pub mod example_exit_code {}
/// mingling = { path = "../../mingling", features = [
/// "parser",
/// "general_renderer",
+/// "json_serde_fmt",
+/// "yaml_serde_fmt",
/// ] }
/// serde = { version = "1", features = ["derive"] }
/// ```
diff --git a/mingling/src/features.rs b/mingling/src/features.rs
index d75f926..7d78012 100644
--- a/mingling/src/features.rs
+++ b/mingling/src/features.rs
@@ -51,3 +51,27 @@ pub const MINGLING_PARSER: bool = false;
#[cfg(feature = "parser")]
pub const MINGLING_PARSER: bool = true;
+
+#[cfg(not(feature = "json_serde_fmt"))]
+pub const MINGLING_JSON_SERDE_FMT: bool = false;
+
+#[cfg(feature = "json_serde_fmt")]
+pub const MINGLING_JSON_SERDE_FMT: bool = true;
+
+#[cfg(not(feature = "yaml_serde_fmt"))]
+pub const MINGLING_YAML_SERDE_FMT: bool = false;
+
+#[cfg(feature = "yaml_serde_fmt")]
+pub const MINGLING_YAML_SERDE_FMT: bool = true;
+
+#[cfg(not(feature = "toml_serde_fmt"))]
+pub const MINGLING_TOML_SERDE_FMT: bool = false;
+
+#[cfg(feature = "toml_serde_fmt")]
+pub const MINGLING_TOML_SERDE_FMT: bool = true;
+
+#[cfg(not(feature = "ron_serde_fmt"))]
+pub const MINGLING_RON_SERDE_FMT: bool = false;
+
+#[cfg(feature = "ron_serde_fmt")]
+pub const MINGLING_RON_SERDE_FMT: bool = true;
diff --git a/mingling/src/lib.rs b/mingling/src/lib.rs
index 6a165b2..4803c23 100644
--- a/mingling/src/lib.rs
+++ b/mingling/src/lib.rs
@@ -171,6 +171,18 @@ pub mod feature {
/// Whether the `repl` feature is enabled
pub use crate::features::MINGLING_REPL;
+
+ /// Whether the `json_serde_fmt` feature is enabled
+ pub use crate::features::MINGLING_JSON_SERDE_FMT;
+
+ /// Whether the `ron_serde_fmt` feature is enabled
+ pub use crate::features::MINGLING_RON_SERDE_FMT;
+
+ /// Whether the `toml_serde_fmt` feature is enabled
+ pub use crate::features::MINGLING_TOML_SERDE_FMT;
+
+ /// Whether the `yaml_serde_fmt` feature is enabled
+ pub use crate::features::MINGLING_YAML_SERDE_FMT;
}
mod setups;
diff --git a/mingling/src/setups/general_renderer.rs b/mingling/src/setups/general_renderer.rs
index a1d1f06..81b6cd0 100644
--- a/mingling/src/setups/general_renderer.rs
+++ b/mingling/src/setups/general_renderer.rs
@@ -31,22 +31,29 @@ impl<C> ProgramSetup<C> for GeneralRendererSetup
where
C: ProgramCollect<Enum = C>,
{
+ #[allow(unused_variables)]
fn setup(&mut self, program: &mut Program<C>) {
+ #[cfg(feature = "json_serde_fmt")]
program.global_flag("--json", |p| {
p.general_renderer_name = crate::GeneralRendererSetting::Json
});
+ #[cfg(feature = "json_serde_fmt")]
program.global_flag("--json-pretty", |p| {
p.general_renderer_name = crate::GeneralRendererSetting::JsonPretty;
});
+ #[cfg(feature = "yaml_serde_fmt")]
program.global_flag("--yaml", |p| {
p.general_renderer_name = crate::GeneralRendererSetting::Yaml;
});
+ #[cfg(feature = "toml_serde_fmt")]
program.global_flag("--toml", |p| {
p.general_renderer_name = crate::GeneralRendererSetting::Toml;
});
+ #[cfg(feature = "ron_serde_fmt")]
program.global_flag("--ron", |p| {
p.general_renderer_name = crate::GeneralRendererSetting::Ron;
});
+ #[cfg(feature = "ron_serde_fmt")]
program.global_flag("--ron-pretty", |p| {
p.general_renderer_name = crate::GeneralRendererSetting::RonPretty;
});