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())
}
}