Skip to content

Commit 1345c05

Browse files
committed
Fix anchors, Fixes #211
1 parent 5e3a3f3 commit 1345c05

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

src/renderer/html_handlebars/hbs_renderer.rs

+7-5
Original file line numberDiff line numberDiff line change
@@ -95,14 +95,15 @@ impl Renderer for HtmlHandlebars {
9595
debug!("[*]: Render template");
9696
let rendered = try!(handlebars.render("index", &data));
9797

98+
let filename = Path::new(&ch.path).with_extension("html");
99+
98100
// create links for headers
99-
let rendered = build_header_links(rendered);
101+
let rendered = build_header_links(rendered, filename.to_str().unwrap_or(""));
100102

101103
// fix code blocks
102104
let rendered = fix_code_blocks(rendered);
103105

104106
// Write to file
105-
let filename = Path::new(&ch.path).with_extension("html");
106107
info!("[*] Creating {:?} ✓", filename.display());
107108
try!(book.write_file(filename, &rendered.into_bytes()));
108109

@@ -144,7 +145,7 @@ impl Renderer for HtmlHandlebars {
144145
debug!("[*]: Render template");
145146

146147
let rendered = try!(handlebars.render("index", &data));
147-
let rendered = build_header_links(rendered);
148+
let rendered = build_header_links(rendered, "print.html");
148149

149150
// fix code blocks
150151
let rendered = fix_code_blocks(rendered);
@@ -224,7 +225,7 @@ fn make_data(book: &MDBook) -> Result<serde_json::Map<String, serde_json::Value>
224225
Ok(data)
225226
}
226227

227-
fn build_header_links(html: String) -> String {
228+
fn build_header_links(html: String, filename: &str) -> String {
228229
let regex = Regex::new(r"<h(\d)>(.*?)</h\d>").unwrap();
229230

230231
regex.replace_all(&html, |caps: &Captures| {
@@ -251,7 +252,8 @@ fn build_header_links(html: String) -> String {
251252
}
252253
}).collect::<String>();
253254

254-
format!("<a class=\"header\" href=\"#{id}\" name=\"{id}\"><h{level}>{text}</h{level}></a>", level=level, id=id, text=text)
255+
format!("<a class=\"header\" href=\"{filename}#{id}\" name=\"{id}\"><h{level}>{text}</h{level}></a>",
256+
level=level, id=id, text=text, filename=filename)
255257
}).into_owned()
256258
}
257259

0 commit comments

Comments
 (0)