Accept nightly examples.
This also brings us to parity with rustdoc regarding attributes in general; while this PR was focused on enabling nightly, that was a happy accident.
This commit is contained in:
parent
35e2807138
commit
80f01d70c6
|
@ -318,11 +318,11 @@ fn add_playpen_pre(html: String) -> String {
|
||||||
format!("<pre class=\"playpen\">{}</pre>", text)
|
format!("<pre class=\"playpen\">{}</pre>", text)
|
||||||
} else {
|
} else {
|
||||||
// we need to inject our own main
|
// we need to inject our own main
|
||||||
|
let (attrs, code) = partition_source(code);
|
||||||
format!("<pre class=\"playpen\"><code class=\"{}\"># #![allow(unused_variables)]
|
format!("<pre class=\"playpen\"><code class=\"{}\"># #![allow(unused_variables)]
|
||||||
#
|
{}#fn main() {{
|
||||||
#fn main() {{
|
|
||||||
{}
|
{}
|
||||||
#}}</code></pre>", classes, code)
|
#}}</code></pre>", classes, attrs, code)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// not language-rust, so no-op
|
// not language-rust, so no-op
|
||||||
|
@ -330,3 +330,25 @@ fn add_playpen_pre(html: String) -> String {
|
||||||
}
|
}
|
||||||
}).into_owned()
|
}).into_owned()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn partition_source(s: &str) -> (String, String) {
|
||||||
|
let mut after_header = false;
|
||||||
|
let mut before = String::new();
|
||||||
|
let mut after = String::new();
|
||||||
|
|
||||||
|
for line in s.lines() {
|
||||||
|
let trimline = line.trim();
|
||||||
|
let header = trimline.chars().all(|c| c.is_whitespace()) ||
|
||||||
|
trimline.starts_with("#![");
|
||||||
|
if !header || after_header {
|
||||||
|
after_header = true;
|
||||||
|
after.push_str(line);
|
||||||
|
after.push_str("\n");
|
||||||
|
} else {
|
||||||
|
before.push_str(line);
|
||||||
|
before.push_str("\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
(before, after)
|
||||||
|
}
|
|
@ -208,6 +208,18 @@ function run_rust_code(code_block) {
|
||||||
result_block = code_block.find(".result");
|
result_block = code_block.find(".result");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let text = code_block.find(".language-rust").text();
|
||||||
|
|
||||||
|
let params = {
|
||||||
|
version: "stable",
|
||||||
|
optimize: "0",
|
||||||
|
code: text,
|
||||||
|
};
|
||||||
|
|
||||||
|
if(text.includes("#![feature")) {
|
||||||
|
params.version = "nightly";
|
||||||
|
}
|
||||||
|
|
||||||
result_block.text("Running...");
|
result_block.text("Running...");
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
|
@ -216,7 +228,7 @@ function run_rust_code(code_block) {
|
||||||
crossDomain: true,
|
crossDomain: true,
|
||||||
dataType: "json",
|
dataType: "json",
|
||||||
contentType: "application/json",
|
contentType: "application/json",
|
||||||
data: JSON.stringify({version: "stable", optimize: "0", code: code_block.find(".language-rust").text() }),
|
data: JSON.stringify(params),
|
||||||
success: function(response){
|
success: function(response){
|
||||||
result_block.text(response.result);
|
result_block.text(response.result);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue