src/api_schema/format.rs: depend on textwrap, new wrap_text helper

This commit is contained in:
Dietmar Maurer 2019-06-04 12:42:02 +02:00
parent 339ddfcbfa
commit 5e0f305142
2 changed files with 28 additions and 4 deletions

View File

@ -48,6 +48,7 @@ zstd = "0.4"
xdg = "2.2"
mio = "0.6"
valgrind_request = { version = "1.1", optional = true }
textwrap = "0.11"
[features]
default = []

View File

@ -21,6 +21,31 @@ pub enum DocumentationFormat {
ReST,
}
/// line wrapping to form simple list of paragraphs
pub fn wrap_text(initial_indent: &str, subsequent_indent: &str, text: &str, columns: usize) -> String {
let wrapper1 = textwrap::Wrapper::new(columns)
.initial_indent(initial_indent)
.subsequent_indent(subsequent_indent);
let wrapper2 = textwrap::Wrapper::new(columns)
.initial_indent(subsequent_indent)
.subsequent_indent(subsequent_indent);
text.split("\n\n")
.map(|p| p.trim())
.filter(|p| { p.len() != 0 })
.fold(String::new(), |mut acc, p| {
if acc.len() == 0 {
acc.push_str(&wrapper1.wrap(p).concat());
} else {
acc.push_str(&wrapper2.wrap(p).concat());
}
acc.push_str("\n\n");
acc
})
}
pub fn get_schema_type_text(schema: &Schema, _style: ParameterDisplayStyle) -> String {
let type_text = match schema {
@ -79,7 +104,7 @@ pub fn get_property_description(
}
};
text.push_str(descr);
text.push_str(&wrap_text("", "", descr, 80));
text.push('\n');
text.push('\n');
@ -99,12 +124,10 @@ pub fn get_property_description(
}
};
// fixme: wrap text
let mut text = format!(" {:-10} {}{}", display_name, type_text, default_text);
let indent = " ";
text.push('\n');
text.push_str(indent);
text.push_str(descr);
text.push_str(&wrap_text(indent, indent, descr, 80));
text.push('\n');
text.push('\n');