mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-27 09:14:20 +00:00
Rollup merge of #104611 - notriddle:notriddle/scrape-examples-button, r=GuillaumeGomez
rustdoc: use real buttons for scrape examples controls This makes the expand and switch controls keyboard-accessible. Preview: https://notriddle.com/notriddle-rustdoc-demos/scrape-examples-button/test_dingus/fn.test.html
This commit is contained in:
commit
c5f92ce2a0
@ -1011,6 +1011,8 @@ impl Step for RustdocGUI {
|
||||
// instead of hard-coding this test
|
||||
if entry.file_name() == "link_to_definition" {
|
||||
cargo.env("RUSTDOCFLAGS", "-Zunstable-options --generate-link-to-definition");
|
||||
} else if entry.file_name() == "scrape_examples" {
|
||||
cargo.arg("-Zrustdoc-scrape-examples=examples");
|
||||
}
|
||||
builder.run(&mut cargo);
|
||||
}
|
||||
|
@ -2915,7 +2915,7 @@ fn render_call_locations(w: &mut Buffer, cx: &mut Context<'_>, item: &clean::Ite
|
||||
);
|
||||
|
||||
if line_ranges.len() > 1 {
|
||||
write!(w, r#"<span class="prev">≺</span> <span class="next">≻</span>"#);
|
||||
write!(w, r#"<button class="prev">≺</button> <button class="next">≻</button>"#);
|
||||
}
|
||||
|
||||
// Look for the example file in the source map if it exists, otherwise return a dummy span
|
||||
|
@ -287,8 +287,11 @@ pub(crate) fn print_src(
|
||||
}
|
||||
}
|
||||
SourceContext::Embedded { offset, needs_expansion } => {
|
||||
extra =
|
||||
if needs_expansion { Some(r#"<span class="expand">↕</span>"#) } else { None };
|
||||
extra = if needs_expansion {
|
||||
Some(r#"<button class="expand">↕</button>"#)
|
||||
} else {
|
||||
None
|
||||
};
|
||||
for line_number in 1..=lines {
|
||||
let line = line_number + offset;
|
||||
writeln!(line_numbers, "<span>{line}</span>")
|
||||
|
@ -1965,6 +1965,12 @@ in storage.js
|
||||
top: 0.25em;
|
||||
z-index: 1;
|
||||
cursor: pointer;
|
||||
padding: 0;
|
||||
background: none;
|
||||
border: none;
|
||||
/* iOS button gradient: https://stackoverflow.com/q/5438567 */
|
||||
-webkit-appearance: none;
|
||||
opacity: 1;
|
||||
}
|
||||
.scraped-example .code-wrapper .prev {
|
||||
right: 2.25em;
|
||||
|
@ -40,7 +40,7 @@
|
||||
{%- endif -%}
|
||||
<script defer src="{{static_root_path|safe}}{{files.main_js}}"></script> {#- -#}
|
||||
{%- if layout.scrape_examples_extension -%}
|
||||
<script defer src="{{page.root_path|safe}}{{files.scrape_examples_js}}"></script> {#- -#}
|
||||
<script defer src="{{static_root_path|safe}}{{files.scrape_examples_js}}"></script> {#- -#}
|
||||
{%- endif -%}
|
||||
<noscript> {#- -#}
|
||||
<link rel="stylesheet" {# -#}
|
||||
|
14
src/test/rustdoc-gui/scrape-examples-button-focus.goml
Normal file
14
src/test/rustdoc-gui/scrape-examples-button-focus.goml
Normal file
@ -0,0 +1,14 @@
|
||||
goto: "file://" + |DOC_PATH| + "/scrape_examples/fn.test.html"
|
||||
store-property: (smallOffsetHeight, ".scraped-example-list > .scraped-example pre", "offsetHeight")
|
||||
assert-property-false: (".scraped-example-list > .scraped-example pre", {
|
||||
"scrollHeight": |smallOffsetHeight|
|
||||
})
|
||||
focus: ".scraped-example-list > .scraped-example .expand"
|
||||
press-key: "Enter"
|
||||
assert-property-false: (".scraped-example-list > .scraped-example pre", {
|
||||
"offsetHeight": |smallOffsetHeight|
|
||||
})
|
||||
store-property: (fullOffsetHeight, ".scraped-example-list > .scraped-example pre", "offsetHeight")
|
||||
assert-property: (".scraped-example-list > .scraped-example pre", {
|
||||
"scrollHeight": |fullOffsetHeight|
|
||||
})
|
@ -28,7 +28,7 @@ assert: "//*[@class='dir-entry' and @open]/*[text()='sub_mod']"
|
||||
// Only "another_folder" should be "open" in "lib2".
|
||||
assert: "//*[@class='dir-entry' and not(@open)]/*[text()='another_mod']"
|
||||
// All other trees should be collapsed.
|
||||
assert-count: ("//*[@id='source-sidebar']/details[not(text()='lib2') and not(@open)]", 6)
|
||||
assert-count: ("//*[@id='source-sidebar']/details[not(text()='lib2') and not(@open)]", 7)
|
||||
|
||||
// We now switch to mobile mode.
|
||||
size: (600, 600)
|
||||
|
7
src/test/rustdoc-gui/src/scrape_examples/Cargo.lock
Normal file
7
src/test/rustdoc-gui/src/scrape_examples/Cargo.lock
Normal file
@ -0,0 +1,7 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "scrape_examples"
|
||||
version = "0.1.0"
|
8
src/test/rustdoc-gui/src/scrape_examples/Cargo.toml
Normal file
8
src/test/rustdoc-gui/src/scrape_examples/Cargo.toml
Normal file
@ -0,0 +1,8 @@
|
||||
[package]
|
||||
name = "scrape_examples"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
25
src/test/rustdoc-gui/src/scrape_examples/examples/check.rs
Normal file
25
src/test/rustdoc-gui/src/scrape_examples/examples/check.rs
Normal file
@ -0,0 +1,25 @@
|
||||
fn main() {
|
||||
for i in 0..9 {
|
||||
println!("hello world!");
|
||||
println!("hello world!");
|
||||
println!("hello world!");
|
||||
println!("hello world!");
|
||||
println!("hello world!");
|
||||
println!("hello world!");
|
||||
println!("hello world!");
|
||||
println!("hello world!");
|
||||
println!("hello world!");
|
||||
}
|
||||
scrape_examples::test();
|
||||
for i in 0..9 {
|
||||
println!("hello world!");
|
||||
println!("hello world!");
|
||||
println!("hello world!");
|
||||
println!("hello world!");
|
||||
println!("hello world!");
|
||||
println!("hello world!");
|
||||
println!("hello world!");
|
||||
println!("hello world!");
|
||||
println!("hello world!");
|
||||
}
|
||||
}
|
7
src/test/rustdoc-gui/src/scrape_examples/src/lib.rs
Normal file
7
src/test/rustdoc-gui/src/scrape_examples/src/lib.rs
Normal file
@ -0,0 +1,7 @@
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// test();
|
||||
/// test();
|
||||
/// ```
|
||||
pub fn test() {}
|
Loading…
Reference in New Issue
Block a user