1
0
mirror of https://github.com/google/comprehensive-rust.git synced 2025-10-09 19:12:06 +02:00
Commit Graph

51 Commits

Author SHA1 Message Date
Martin Geisler
5f3010d88a Re-enable the red box to show available space
Way back in #187, I introduced a hacky tool to show the available
space on a slide: it was a `mdbook` plugin which injected the
necessary CSS on each slide. Crude, but it got the job done.

The logic was moved from Python to a real CSS file with associated
JavaScript in #1842. In #1917, the functionality was moved to a
dedicated “instructor menu”, together with functionality for saving
the state of the Playground on each slide.

Unfortunately, the whole thing was disabled in #1935 since I found
that the Playgrounds lost their code with the saving logic. I was also
not 100% happy with dedicating space on each slide for a menu only
used by instructors.

However, I really think we need a tool to let slide editors know about
the available space, so I would like to re-introduce the red box. This
time via a keyboard shortcut to make it easy to toggle as needed.

I’m suggesting enabling this for everyone, with the expectation that
most people won’t find the shortcut and will quickly disable the box
if they do (there is a dedicated button to hide it again).

End-to-end tests have been added for the new functionality.
2025-09-28 10:17:07 +02:00
Andrew Walbran
fc6e5c7526 Update to Rust 2024 edition. (#2658) 2025-05-23 19:03:03 +01:00
michael-kerscher
f22395d278 Fix bug where speaker notes are not connected to regular window (#2675)
Fixes bug #2004.
Refactored the communication between the speaker notes window and the
regular window by using a Broadcast channel - this is now
self-recovering(!) even if speaker notes are closed and manually
re-opened!

For better readability and maintainability refactored some string-based
states into enum style code and refactored detection of the type of
windows (print, speaker note, regular window)

Manually tested the new code and the speaker notes window does not
disconnect from the regular window anymore.
This now works way more reliable, even if there are (still) some UI
glitches that have been there before already.
2025-02-28 12:06:06 -05:00
Martin Geisler
0134568034 Bump dprint plugins to their latest versions (#2402) 2025-02-28 14:27:17 +00:00
Dustin J. Mitchell
63d716de90 Preserve line numbers by not injecting a newline (#2653)
The `dbg!` macro, being deployed more widely in #2478, shows the line
number. But if we inject `#![allow(..)]\n` then the printed numbers do
not match those in the textarea. It turns out that `\n` is not required!

cc @egithinji
2025-02-21 15:32:31 -05:00
Dustin J. Mitchell
44a79741ff Be more consistent about tests vs. main (#2644)
The content slides all use `fn main`, with the exception of the testing
segment. But with this change, where it makes sense exercises use tests
instead, and not both tests and `fn main`.

A small change in `book.js` supports running tests when a code sample
does not have `fn main` but does have `#[test]`, so these work
naturally.

Fixes #1581.
2025-02-18 20:13:16 +00:00
michael-kerscher
cdfe3e7359 Fix bug in speaker notes that broke navigating to next slide (#2634)
Change this selector to use the ~= selector to test if a white space
separated word "prev" or "next" is contained

Fixes a speaker notes bug that did not allow going to the next slide in
the speaker notes.
The reason for that is that the "rel" attribute contained "prev"
respective "next prefetch".

See:
https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors#attrvalue_2

This fixes part of #2004 when going to the right (containing
"prefetch").
2025-02-08 11:47:02 +01:00
michael-kerscher
af6dff53c2 update to mdbook-0.4.44 and sync book.js and index.hbs (#2610)
mdbook in CI pipeline is updated to mdbook-0.4.44
  - reran mdbook init --theme
  - keep playground improvements
- keep language selector and suggest edit / edit to translation button
text
  - improvement: toc is in separate js file, makes html file way smaller
  - additionally updated to mdbook-i18n-helpers-0.3.5

relevant upstream changes that are used:
- https://github.com/rust-lang/mdBook/pull/2414
- https://github.com/rust-lang/mdBook/pull/2421
- https://github.com/rust-lang/mdBook/pull/2454
- https://github.com/rust-lang/mdBook/pull/2463
2025-02-07 10:07:41 +01:00
Dustin J. Mitchell
5f7e0c3f64 Allow the 'unused' category of lints (#2571)
These sort of warnings can be distracting when commenting out a few
lines of code or demonstrating some other concept. They can be
re-enabled for a code block with `warnunused`.

I filed https://github.com/rust-lang/mdBook/issues/2527 to get behavior
like this upstream.
2025-01-20 12:47:50 -05:00
Henri F.
957c404ad0 Revert "Fix a few accessibility violations" (#2564)
Reverts google/comprehensive-rust#2547
2025-01-17 01:53:58 -05:00
Henri F.
f95c28f9a7 Fix a few accessibility violations (#2547)
* Add chrome.css and general.css to override default css file. This is
necessary to fix links without underline (hyperlinks relying only on
color).
* Fix pop-out button without id and wrong ARIA-ROLE
* Speaker's notes now at correct heading sequence (H3)
2025-01-15 19:11:19 -08:00
Alex Lai
999490fae4 book.js: early return if response error (#2520)
It used to have a ugly error message shows that "Playground
Communication: Cannot read properties of undefined (reading 'trim')",
which is due to the fact that the response lacks stdout attr.

Issue: #2477

Signed-off-by: Alx-Lai <alexabc722@gmail.com>
2024-12-16 09:42:52 -05:00
Martin Geisler
5f2248bb92 Add "Execution: Add stderr block" again (#2503)
Reverts google/comprehensive-rust#2479, which is a revert of #2397.

I think the problem was not related to @Alx-Lai's change, the
[Playground was
slow](https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/playground.20incident.202024-12-03)
for everyone.
2024-12-06 14:21:44 +01:00
Martin Geisler
7d2bde6163 Revert "Execution: Add stderr block" (#2479)
Reverts google/comprehensive-rust#2397

I'm seeing

```
POST https://play.rust-lang.org/execute 500 (Internal Server Error)
```

on every request when trying to run code in the Playground. I'm not sure
why, but we need to revert this ASAP if others see the same.
2024-11-28 16:40:12 +01:00
Alex Lai
beacea74ea Execution: Add stderr block (#2397)
Add a stderr block.
Pros:
  - we can make use of dbg macro in our code Cons:
  - there's a limitation that the compile message also shows

Applies patches from rust-lang/mdBook#1315 since the original change was
not merged by rust-lang.

Issue: #531

Signed-off-by: Alx-Lai <alexabc722@gmail.com>
2024-11-28 15:01:08 +01:00
Henri F.
28b5b559b3 fa: Adds Farsi to the language selector (#2436)
Adds Farsi to the drop-down language selector and minor rearrangement on
Translation page
#671
2024-10-15 22:17:55 -07:00
Henri F
a20b8754a5 Publish Ukrainian translation to language selector (#2183)
Closes #836
2024-07-03 14:04:54 -07:00
Henri F
b201f2233e Fix language dropdown for Japanese (#2184)
Fix an issue from #2182
2024-07-02 17:31:07 -04:00
Henri F
1a1480ea04 Publish Japanese translation to language selector (#2182)
#1463 #652
2024-07-01 10:31:25 -07:00
Rush
d2f8fc4ac5 Fix: Click anywhere on the language switch menu to switch the language (#2144)
close: https://github.com/google/comprehensive-rust/issues/2132
2024-06-13 12:17:26 -04:00
Dustin J. Mitchell
8e668cdadd Revert "Saving the playground state in local storage (#1942)" (#2106)
This reverts commit e2cad7da8d.

Fixes #2105, #2104.
2024-05-30 02:15:07 +00:00
Manichand Kondapaka
e2cad7da8d Saving the playground state in local storage (#1942)
#1476 issue. Updated the function call(`getCodeFromPlayground`) in
`save-playground.js` file from `pagehide` event to change event in ace
editor.

---------

Co-authored-by: Martin Geisler <mgeisler@google.com>
2024-05-28 09:51:41 +00:00
Manichand Kondapaka
b7a6e3b46d Saving playground code state (#1917)
The embedded Playground's code reset when you navigate between slides.
This has caused problems: if people navigate away from a slide to look
something up, they've suddenly lost their work.
2024-03-22 12:15:54 -04:00
Manichand Kondapaka
0761f936ca Add a dev theme to help with slide aspect ratio (#1842)
Added a dev theme to help with slide aspect ratio while updating content
or for reviewing PRs.

Fixes #1796.

---------

Co-authored-by: Dustin J. Mitchell <djmitche@google.com>
Co-authored-by: Martin Geisler <martin@geisler.net>
2024-03-05 10:33:42 +00:00
Martin Geisler
0e8d3e77c2 Update mdbook and mdbook-i18n-helpers (#1658)
This also ports over the `mdbook` theme changes between version 0.4.35
and 0.4.36.
2024-01-05 15:56:18 +01:00
Martin Geisler
e2c59ddbb5 Test translations using same source as for publish (#1492)
Before we would run `mdbook test` using the current Markdown sources.
This is subtly wrong: we publish the course using back-dated sources,
so we should therefore also run the tests using the same sources (this
ensures that the code snippets actually work).

After this commit, all translatable content lives in exactly two
directories:

- `src/`
- `third_party/`

We need to restore both directories when testing and when publishing.
This ensures consistency in the Markdown text and in the included
source code.

A new `.github/workflows/build.sh` script takes care of preparing the
two directories according to the date in the PO file (if any).

To ensure we can restore all of `third_party/` to an old commit, the
non-changing `third_party/mdbook/book.js` file has been moved to
`theme/book.js`. The file is generated by `mdbook init --theme`,
making it suitable for modification by the user (us). Symlinks have
been added to `third_party/mdbook/` to indicate that the files
ultimately came from upstream.
2024-01-04 17:04:44 +01:00
Pavel Roskin
30f8e50b43 Fix typos (#1608) 2023-12-20 18:21:54 +00:00
Dustin J. Mitchell
6d19292f16 Comprehensive Rust v2 (#1073)
I've taken some work by @fw-immunant and others on the new organization
of the course and condensed it into a form amenable to a text editor and
some computational analysis. You can see the inputs in `course.py` but
the interesting bits are the output: `outline.md` and `slides.md`.

The idea is to break the course into more, smaller segments with
exercises at the ends and breaks in between. So `outline.md` lists the
segments, their duration, and sums those durations up per-day. It shows
we're about an hour too long right now! There are more details of the
segments in `slides.md`, or you can see mostly the same stuff in
`course.py`.

This now contains all of the content from the v1 course, ensuring both
that we've covered everything and that we'll have somewhere to redirect
every page.

Fixes #1082.
Fixes #1465.

---------

Co-authored-by: Nicole LeGare <dlegare.1001@gmail.com>
Co-authored-by: Martin Geisler <mgeisler@google.com>
2023-11-29 16:39:24 +01:00
Elliot Brandwein
6624c5874f Reset state to inline-open when speaker note popup is closed (#1441)
Partially addresses #182.

---------

Co-authored-by: Elliot Brandwein <ebrandwein@google.com>
2023-11-16 11:49:24 +00:00
Amin Sharifi
7cec167840 Fix SVG renders in RTL contents (#1454)
Part of:
#671 
#1433
## Issue:
When we render SVG tags in persian ( `<html dir="rtl" ...>`) make
confiliect:


![svg-rtl-issue](https://github.com/google/comprehensive-rust/assets/11869014/ce825736-4367-41fa-acd3-6e395926d7c7)
originally: *[7.2 Arrays and for
Loops](https://google.github.io/comprehensive-rust/exercises/day-1/for-loops.html#arrays-and-for-loops)*

![svg-rtl-issue-2](https://github.com/google/comprehensive-rust/assets/11869014/0a494392-2407-47ec-91f1-0098414b83d3)

originally: *[16.2 Moved Strings in
Rust](https://google.github.io/comprehensive-rust/ownership/moved-strings-rust.html)*

## Proposed method:

as we talked in #1433, again in there adding 
```
[dir="rtl"] svg {
  direction: ltr;
}
```
fix issue like:


![svg-rtl-issue-fix](https://github.com/google/comprehensive-rust/assets/11869014/5d82c413-709a-42dd-b24b-1ff2c8be55ba)


![svg-rtl-issue-2-fixture](https://github.com/google/comprehensive-rust/assets/11869014/da2bf319-212e-4edd-9135-82f51e5e0381)
2023-11-08 17:49:07 +03:30
Amin Sharifi
8f42baf968 Fixture code and footer content tags in rtl content (#1433)
Part of #671 
and #1413

In the code part of content which always is in english and must be
`text-align: left` but with `<html ... dir=rtl >` cuz conflict.

---------

Co-authored-by: Kaveh <hamidrkp@riseup.net>
2023-10-31 07:37:04 +01:00
Henri F
ce27799096 Fixes drop-down link to the correct zh-TW translation (#1416) 2023-10-23 19:34:50 +02:00
Henri F
88edcd02e7 Adds Chinese Traditional to the language drop-down (#1411)
Graduates the Chinese Traditional translation to the language drop-down
selector.
Part of Chinese (Traditional) translation #684.

File stats (Rust Fundamentals):

```
msggrep -v --location=src/{exercises/,}{android,bare-metal,concurrency,async}{.md,"/*","/*/*","/*/*/*"} po/zh-CN.po | msgfmt -o /dev/null --statistics -

1315 translated messages, 146 fuzzy translations, 149 untranslated messages.
```
2023-10-23 09:20:15 -07:00
Martin Geisler
5fafa4842c Update mdbook to version 0.4.35 (#1302)
This also ports over the latest changes to `book.js` and `index.hbs`.

We probably need to come up with a more systematic way of doing this,
e.g., we could store our changes in a patch and automatically attempt to
apply it onto the latest upstream files.
2023-10-13 16:40:40 +02:00
Henri F
c2e9a45d49 Adds Chinese Simplified to the language drop-down (#1357)
Graduates the Chinese Simplified translation to the language drop-down
selector. Part of #324
2023-10-13 09:15:00 +02:00
Martin Geisler
42541fc401 Automatically format YAML, CSS, and JS files (#1272)
Initially, I also formatted the templates in `theme/`, but this triggers
https://github.com/prettier/prettier/issues/11834. So I exclude them for
now.

---------

Co-authored-by: Ming-Ying Chung <mych@chromium.org>
2023-10-02 14:48:00 +09:00
Hatim Nalawala
cc0a78ed9a Move CSS files into theme/ folder (#1229)
Hi all,
This PR fixes https://github.com/google/comprehensive-rust/issues/1226:

* Moved CSS files to `theme/css`
* Moved speaker-notes.js to `theme/`
* Updated paths in book.toml
2023-09-21 11:00:27 +02:00
Martin Geisler
0d566ce042 Move JavaScript code to head template (#1210)
This will simplify our mdbook updates since there will be fewer
customizations to copy over when a new mdbook version has changes to the
`index.hbs` template.
2023-09-15 09:52:22 +00:00
Henri Fontana
19f679f8a7 Standardize language menu format and adds Spanish (#1196)
Spanish translation #284
2023-09-11 09:45:20 -04:00
Martin Geisler
09d1265cbb Add support for right-to-left languages (#1165)
This updates our `mdbook` version to the latest version in Git. I copied
the `index.hbs` file from that version and back-ported our changes into
it. I checked English and Danish locally and they both look fine.

The new version has support for right-to-left languages:
https://github.com/rust-lang/mdBook/pull/1641.

We have an in-progress Persian translation. Download the `fa.zip`
artifact after building the PR to check how it looks. I checked Persian
locally and it looks mirrored like I expect (but we will need someone
who can read Persian to actually verify this).

Fixes #1164.
2023-09-07 09:50:44 +02:00
Martin Geisler
8b1bed7db9 Insert <link rel="canonical"> elements (#1140)
This prevents duplicate search results in case copies of the material is
being left visible on the web. See the Search Central
documentation[1] for details.

The implementation here should mostly go away when
https://github.com/google/mdbook-i18n-helpers/issues/70 is implemented.

[1]: https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls
2023-08-30 22:28:34 +02:00
Martin Geisler
2e92da7acd Update mdbook to 0.4.34 (#1066)
I also updated `book.js` and `index.hbs` to the latest versions while
keeping our local modifications.

I tested this locally with `mdbook serve` for both English and
Brazilian Portuguese and everything seems to work fine.
2023-08-11 15:40:01 +02:00
Martin Geisler
5d71f8a326 Open GitHub edit links in new tabs (#856)
I find this nicer since you don't lose your location in the book then.
2023-06-22 09:50:20 -04:00
Martin Geisler
66247b698e Fix language selector on unpublished languages (#695)
The Danish translation is not yet linked in the language selector
since it is very incomplete. This means that `selectedLang` is `null`
in this case and thus we should not call any methods on it.
2023-05-26 16:23:57 +02:00
Martin Geisler
2a2f8ec94e Add book.js generated with mdbook init --theme
This allows us to customize the JavaScript used on the page.
2023-03-01 13:14:42 +01:00
Jiyong Park
eb57ba9e51 Publish Korean translation (#428)
* Publish Korean translation

* 한국어 -> 한국어 (Korean)

* Add translator names for the Korean translation
2023-02-17 17:58:33 +09:00
Martin Geisler
14b5e86579 Fix links in language picker (#417)
When the current page is not `en`, we need to add an additional `../`
to the path to reach the top of the site.
2023-02-15 18:59:58 +01:00
Martin Geisler
3b7123d21a Add language picker menu (#411)
The picker is a drop-down menu using the same design as the theme
picker in the top-left.

There doesn’t seem to be an easy way to pass in a list of languages
and descriptions, so for now we’ll have to expand the menu by hand as
we add new languages. A comment has been added to `publish.yml` to
remind us of this.
2023-02-15 15:10:16 +01:00
Martin Geisler
be5263010a Use .po file as target for edit link on translations (#394) 2023-02-13 17:42:45 +01:00
Martin Geisler
4409f330c5 Move GA code directly into main page (#289)
This replaces a bit of code with the equivalent HTML code.

We also load the script async, which means that the browser won’t
block rendering while waiting for the scripts.
2023-01-27 14:37:17 +01:00