Skip to content

Commit

Permalink
auto merge of #20990 : estsauver/rust/playpen_20732, r=alexcrichton
Browse files Browse the repository at this point in the history
In #20732, that all links in some modules point to the same code
examples was reported. The ID's generated for documents in
librustdoc are not all unique, which means the code rendered as
text is not being properly selected.

This change makes the link to the code section that is next to
the current link.
  • Loading branch information
bors committed Jan 15, 2015
2 parents 0c96037 + 2a320f2 commit 1c78ad9
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 20 deletions.
25 changes: 8 additions & 17 deletions src/librustdoc/html/markdown.rs
Expand Up @@ -30,7 +30,7 @@
use libc;
use std::ascii::AsciiExt;
use std::ffi::CString;
use std::cell::{RefCell, Cell};
use std::cell::RefCell;
use std::collections::HashMap;
use std::fmt;
use std::slice;
Expand Down Expand Up @@ -155,7 +155,6 @@ fn stripped_filtered_line<'a>(s: &'a str) -> Option<&'a str> {
thread_local!(static USED_HEADER_MAP: RefCell<HashMap<String, uint>> = {
RefCell::new(HashMap::new())
});
thread_local!(static TEST_IDX: Cell<uint> = Cell::new(0));

thread_local!(pub static PLAYGROUND_KRATE: RefCell<Option<Option<String>>> = {
RefCell::new(None)
Expand Down Expand Up @@ -195,26 +194,19 @@ pub fn render(w: &mut fmt::Formatter, s: &str, print_toc: bool) -> fmt::Result {
if rendered { return }
PLAYGROUND_KRATE.with(|krate| {
let mut s = String::new();
let id = krate.borrow().as_ref().map(|krate| {
let idx = TEST_IDX.with(|slot| {
let i = slot.get();
slot.set(i + 1);
i
});

krate.borrow().as_ref().map(|krate| {
let test = origtext.lines().map(|l| {
stripped_filtered_line(l).unwrap_or(l)
}).collect::<Vec<&str>>().connect("\n");
let krate = krate.as_ref().map(|s| s.as_slice());
let test = test::maketest(test.as_slice(), krate, false, false);
s.push_str(format!("<span id='rust-example-raw-{}' \
class='rusttest'>{}</span>",
idx, Escape(test.as_slice())).as_slice());
format!("rust-example-rendered-{}", idx)
s.push_str(format!("<span class='rusttest'>{}</span>",
Escape(test.as_slice())).as_slice());
});
let id = id.as_ref().map(|a| a.as_slice());
s.push_str(highlight::highlight(text.as_slice(), None, id)
.as_slice());
s.push_str(highlight::highlight(text.as_slice(),
None,
Some("rust-example-rendered"))
.as_slice());
let output = CString::from_vec(s.into_bytes());
hoedown_buffer_puts(ob, output.as_ptr());
})
Expand Down Expand Up @@ -432,7 +424,6 @@ impl LangString {
/// previous state (if any).
pub fn reset_headers() {
USED_HEADER_MAP.with(|s| s.borrow_mut().clear());
TEST_IDX.with(|s| s.set(0));
}

impl<'a> fmt::String for Markdown<'a> {
Expand Down
4 changes: 1 addition & 3 deletions src/librustdoc/html/static/playpen.js
Expand Up @@ -14,10 +14,8 @@
(function() {
if (window.playgroundUrl) {
$('pre.rust').hover(function() {
if (!$(this).attr('id')) { return; }
var id = '#' + $(this).attr('id').replace('rendered', 'raw');
var a = $('<a>').text('⇱').attr('class', 'test-arrow');
var code = $(id).text();
var code = $(this).siblings(".rusttest").text();
a.attr('href', window.playgroundUrl + '?code=' +
encodeURIComponent(code));
a.attr('target', '_blank');
Expand Down

0 comments on commit 1c78ad9

Please sign in to comment.