diff --git a/Cargo.toml b/Cargo.toml index ab767d3fd..1ec1b65d5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -48,6 +48,7 @@ census = "0.1" fnv = "1.0.6" owned-read = "0.4" failure = "0.1" +htmlescape = "0.3.1" [target.'cfg(windows)'.dependencies] winapi = "0.2" diff --git a/src/lib.rs b/src/lib.rs old mode 100644 new mode 100755 index 0d64752d9..4f4d364a0 --- a/src/lib.rs +++ b/src/lib.rs @@ -154,6 +154,7 @@ extern crate stable_deref_trait; extern crate tempdir; extern crate tempfile; extern crate uuid; +extern crate htmlescape; #[cfg(test)] #[macro_use] diff --git a/src/snippet/mod.rs b/src/snippet/mod.rs index 2429ac2e0..7413b8bb8 100644 --- a/src/snippet/mod.rs +++ b/src/snippet/mod.rs @@ -6,6 +6,7 @@ use Index; use schema::FieldValue; use schema::Value; use tokenizer::BoxedTokenizer; +use htmlescape::encode_minimal; #[derive(Debug)] pub struct HighlightSection { @@ -70,13 +71,13 @@ impl Snippet { let mut start_from: usize = 0; for item in self.highlighted.iter() { - html.push_str(&self.fragments[start_from..item.start]); + html.push_str(&encode_minimal(&self.fragments[start_from..item.start])); html.push_str(HIGHLIGHTEN_PREFIX); - html.push_str(&self.fragments[item.start..item.stop]); + html.push_str(&encode_minimal(&self.fragments[item.start..item.stop])); html.push_str(HIGHLIGHTEN_POSTFIX); start_from = item.stop; } - html.push_str(&self.fragments[start_from..self.fragments.len()]); + html.push_str(&encode_minimal(&self.fragments[start_from..self.fragments.len()])); html } } @@ -202,6 +203,6 @@ Rust won first place for \"most loved programming language\" in the Stack Overfl } let snippet = select_best_fragment_combination(fragments, &text); assert_eq!(snippet.fragments, "Rust is a systems programming language sponsored by Mozilla which describes it as a \"safe".to_owned()); - assert_eq!(snippet.to_html(), "Rust is a systems programming language sponsored by Mozilla which describes it as a \"safe".to_owned()) + assert_eq!(snippet.to_html(), "Rust is a systems programming language sponsored by Mozilla which describes it as a "safe".to_owned()) } }