diff --git a/Cargo.lock b/Cargo.lock index 622058d6..9385ebb4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -142,6 +142,7 @@ dependencies = [ "dialoguer", "flate2", "globset", + "html-escape", "indicatif", "itertools", "lazy_static", @@ -1005,6 +1006,15 @@ dependencies = [ "digest", ] +[[package]] +name = "html-escape" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d1ad449764d627e22bfd7cd5e8868264fc9236e07c752972b4080cd351cb476" +dependencies = [ + "utf8-width", +] + [[package]] name = "http" version = "1.1.0" @@ -2582,6 +2592,12 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "utf8-width" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86bd8d4e895da8537e5315b8254664e6b769c4ff3db18321b297a1e7004392e3" + [[package]] name = "utf8parse" version = "0.2.2" diff --git a/api_generator/Cargo.toml b/api_generator/Cargo.toml index b6714df0..a3e0290c 100644 --- a/api_generator/Cargo.toml +++ b/api_generator/Cargo.toml @@ -14,6 +14,7 @@ array_tool = "1" dialoguer = "0.11" flate2 = "1" globset = "0.4" +html-escape = "0.2" indicatif = "0.17" Inflector = "0.11" itertools = "0.13" diff --git a/api_generator/src/generator/code_gen/mod.rs b/api_generator/src/generator/code_gen/mod.rs index 3530a421..f1093bef 100644 --- a/api_generator/src/generator/code_gen/mod.rs +++ b/api_generator/src/generator/code_gen/mod.rs @@ -72,6 +72,10 @@ fn doc>(comment: I) -> syn::Attribute { } } +fn doc_escaped>(comment: &S) -> syn::Attribute { + doc(html_escape::encode_text(comment)) +} + fn stability_doc(stability: Stability) -> Option { match stability { Stability::Experimental => Some(doc(r#"  diff --git a/api_generator/src/generator/code_gen/params.rs b/api_generator/src/generator/code_gen/params.rs index 6df721a3..c40a83b5 100644 --- a/api_generator/src/generator/code_gen/params.rs +++ b/api_generator/src/generator/code_gen/params.rs @@ -60,8 +60,7 @@ fn generate_param(tokens: &mut Tokens, e: &ApiEnum) { }) .unzip(); - let doc = e.description.as_ref().map(code_gen::doc); - + let doc = e.description.as_ref().map(code_gen::doc_escaped); let cfg_attr = e.stability.outer_cfg_attr(); let cfg_doc = stability_doc(e.stability); diff --git a/api_generator/src/generator/code_gen/request/request_builder.rs b/api_generator/src/generator/code_gen/request/request_builder.rs index 023feeff..56ae132d 100644 --- a/api_generator/src/generator/code_gen/request/request_builder.rs +++ b/api_generator/src/generator/code_gen/request/request_builder.rs @@ -433,7 +433,7 @@ impl<'a> RequestBuilder<'a> { let impl_ident = ident(&name); let field_ident = ident(&name); let doc_attr = match &f.1.description { - Some(docs) => vec![doc(docs)], + Some(docs) => vec![doc_escaped(docs)], _ => vec![], }; diff --git a/api_generator/src/generator/code_gen/url/enum_builder.rs b/api_generator/src/generator/code_gen/url/enum_builder.rs index aa37779e..237cbbe1 100644 --- a/api_generator/src/generator/code_gen/url/enum_builder.rs +++ b/api_generator/src/generator/code_gen/url/enum_builder.rs @@ -357,7 +357,7 @@ mod tests { methods: vec![HttpMethod::Get, HttpMethod::Post], parts: { let mut map = BTreeMap::new(); - map.insert("index".to_string(), Type { + map.insert("index".to_string(), Type {i ty: TypeKind::List, description: Some("A comma-separated list of index names to search".to_string()), options: vec![], diff --git a/elasticsearch/src/async_search.rs b/elasticsearch/src/async_search.rs index 7342621a..c7e8830a 100644 --- a/elasticsearch/src/async_search.rs +++ b/elasticsearch/src/async_search.rs @@ -802,7 +802,7 @@ where self.size = Some(size); self } - #[doc = "A comma-separated list of : pairs"] + #[doc = "A comma-separated list of <field>:<direction> pairs"] pub fn sort(mut self, sort: &'b [&'b str]) -> Self { self.sort = Some(sort); self diff --git a/elasticsearch/src/root/mod.rs b/elasticsearch/src/root/mod.rs index 84f71481..5e27a5a3 100644 --- a/elasticsearch/src/root/mod.rs +++ b/elasticsearch/src/root/mod.rs @@ -1747,7 +1747,7 @@ where self.slices = Some(slices); self } - #[doc = "A comma-separated list of : pairs"] + #[doc = "A comma-separated list of <field>:<direction> pairs"] pub fn sort(mut self, sort: &'b [&'b str]) -> Self { self.sort = Some(sort); self @@ -7275,7 +7275,7 @@ where self.size = Some(size); self } - #[doc = "A comma-separated list of : pairs"] + #[doc = "A comma-separated list of <field>:<direction> pairs"] pub fn sort(mut self, sort: &'b [&'b str]) -> Self { self.sort = Some(sort); self @@ -9217,7 +9217,7 @@ where self.slices = Some(slices); self } - #[doc = "A comma-separated list of : pairs"] + #[doc = "A comma-separated list of <field>:<direction> pairs"] pub fn sort(mut self, sort: &'b [&'b str]) -> Self { self.sort = Some(sort); self