diff --git a/command_attr/src/lib.rs b/command_attr/src/lib.rs index 2c8bca01480..66cb1cbc1b7 100644 --- a/command_attr/src/lib.rs +++ b/command_attr/src/lib.rs @@ -126,18 +126,8 @@ pub fn command(attr: TokenStream, input: TokenStream) -> TokenStream { options.examples.push(propagate_err!(attributes::parse(values))); }, "description" => { - let mut arg: String = propagate_err!(attributes::parse(values)); - if arg.starts_with(' ') { - arg.remove(0); - } - - if let Some(desc) = &mut options.description.0 { - use std::fmt::Write; - - let _ = write!(desc, "\n{}", arg); - } else { - options.description = AsOption(Some(arg)); - } + let line: String = propagate_err!(attributes::parse(values)); + util::append_line(&mut options.description, line); }, _ => { match_options!(name, values, options, span => [ @@ -628,18 +618,8 @@ pub fn group(attr: TokenStream, input: TokenStream) -> TokenStream { options.prefixes = vec![propagate_err!(attributes::parse(values))]; }, "description" => { - let mut arg: String = propagate_err!(attributes::parse(values)); - if arg.starts_with(' ') { - arg.remove(0); - } - - if let Some(desc) = &mut options.description.0 { - use std::fmt::Write; - - let _ = write!(desc, "\n{}", arg.trim_matches(' ')); - } else { - options.description = AsOption(Some(arg)); - } + let line: String = propagate_err!(attributes::parse(values)); + util::append_line(&mut options.description, line); }, "summary" => { let arg: String = propagate_err!(attributes::parse(values)); diff --git a/command_attr/src/util.rs b/command_attr/src/util.rs index 99e1770aadd..6372e8590b7 100644 --- a/command_attr/src/util.rs +++ b/command_attr/src/util.rs @@ -263,3 +263,21 @@ pub fn rename_attributes(attributes: &mut Vec, name: &str, target: &s } } } + +pub fn append_line(desc: &mut AsOption, mut line: String) { + if line.starts_with(' ') { + line.remove(0); + } + + match &mut desc.0 { + Some(desc) => { + if line.trim().is_empty() { + desc.push('\n'); + } else { + desc.push(' '); + desc.push_str(&line); + } + }, + None => *desc = AsOption(Some(line)), + } +}