Skip to content

Commit 7dc8014

Browse files
committed
Escape HTML characters in docs
This commit escapes HTML characters in docs (<, >, &) so that descriptions display correctly.
1 parent e39a27e commit 7dc8014

File tree

6 files changed

+14
-10
lines changed

6 files changed

+14
-10
lines changed

api_generator/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ array_tool = "1.0.3"
1414
dialoguer = "0.3.0"
1515
flate2 = "~1"
1616
globset = "~0.4"
17+
html-escape = "0.2.11"
1718
Inflector = "0.11.4"
1819
indicatif = "0.12.0"
1920
itertools = "0.10.0"

api_generator/src/generator/code_gen/mod.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,10 @@ fn doc<I: Into<String>>(comment: I) -> syn::Attribute {
7272
}
7373
}
7474

75+
fn doc_escaped<S: ?Sized + AsRef<str>>(comment: &S) -> syn::Attribute {
76+
doc(html_escape::encode_text(comment))
77+
}
78+
7579
fn stability_doc(stability: Stability) -> Option<syn::Attribute> {
7680
match stability {
7781
Stability::Experimental => Some(doc(r#"&nbsp;

api_generator/src/generator/code_gen/params.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,10 @@ fn generate_param(tokens: &mut Tokens, e: &ApiEnum) {
6060
})
6161
.unzip();
6262

63-
let doc = match &e.description {
64-
Some(description) => Some(code_gen::doc(description)),
65-
None => None,
66-
};
67-
63+
let doc = e
64+
.description
65+
.as_ref()
66+
.map(|description| code_gen::doc_escaped(description));
6867
let cfg_attr = e.stability.outer_cfg_attr();
6968
let cfg_doc = stability_doc(e.stability);
7069

api_generator/src/generator/code_gen/request/request_builder.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,7 @@ impl<'a> RequestBuilder<'a> {
433433
let impl_ident = ident(&name);
434434
let field_ident = ident(&name);
435435
let doc_attr = match &f.1.description {
436-
Some(docs) => vec![doc(docs)],
436+
Some(docs) => vec![doc_escaped(docs)],
437437
_ => vec![],
438438
};
439439

elasticsearch/src/async_search.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -793,7 +793,7 @@ where
793793
self.size = Some(size);
794794
self
795795
}
796-
#[doc = "A comma-separated list of <field>:<direction> pairs"]
796+
#[doc = "A comma-separated list of &lt;field&gt;:&lt;direction&gt; pairs"]
797797
pub fn sort(mut self, sort: &'b [&'b str]) -> Self {
798798
self.sort = Some(sort);
799799
self

elasticsearch/src/root/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1574,7 +1574,7 @@ where
15741574
self.slices = Some(slices);
15751575
self
15761576
}
1577-
#[doc = "A comma-separated list of <field>:<direction> pairs"]
1577+
#[doc = "A comma-separated list of &lt;field&gt;:&lt;direction&gt; pairs"]
15781578
pub fn sort(mut self, sort: &'b [&'b str]) -> Self {
15791579
self.sort = Some(sort);
15801580
self
@@ -7088,7 +7088,7 @@ where
70887088
self.size = Some(size);
70897089
self
70907090
}
7091-
#[doc = "A comma-separated list of <field>:<direction> pairs"]
7091+
#[doc = "A comma-separated list of &lt;field&gt;:&lt;direction&gt; pairs"]
70927092
pub fn sort(mut self, sort: &'b [&'b str]) -> Self {
70937093
self.sort = Some(sort);
70947094
self
@@ -9028,7 +9028,7 @@ where
90289028
self.slices = Some(slices);
90299029
self
90309030
}
9031-
#[doc = "A comma-separated list of <field>:<direction> pairs"]
9031+
#[doc = "A comma-separated list of &lt;field&gt;:&lt;direction&gt; pairs"]
90329032
pub fn sort(mut self, sort: &'b [&'b str]) -> Self {
90339033
self.sort = Some(sort);
90349034
self

0 commit comments

Comments
 (0)