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

31 Commits

Author SHA1 Message Date
d1d29283ba Remove ineffective LICENSE link (#850)
Just like the Markdown files in #846, we cannot generate a redirect
for the LICENSE file this way. The broken link was fixed in #813, so
we should be fine here.
2023-06-22 16:27:56 +02:00
a3ef74f107 Remove .md redirects from book.toml (#846)
Those redirects don't actually work: they are not given a `Content-Type` by GitHub and so the browser doesn't threat them as HTML and won't follow any redirect.
2023-06-21 09:47:39 +01:00
0e09a1c569 Add redirects for all broken links to book.toml (#814)
This should clean up the list of 404 errors in the Search Console.
2023-06-14 10:21:22 +01:00
d71ea715bb Fix broken link in for-expressions.md (#812) 2023-06-13 17:43:08 +00:00
7c9195ba7a Fix broken link in Pitfalls of async/await (#811)
Fix broken link in Async Pitfalls
2023-06-13 17:26:56 +00:00
d7efbbbe8a Display line numbers for code examples (#664)
This makes it easier to refer to a specific line of code while teaching or collaborating on a code snippet.
2023-05-24 07:25:18 +00:00
83663daaa2 Add the description of the chat-app exercise (#641)
* Adds a description of the async chat exercise
* Simplifies the use of Error in chat-async
* Links the solution to the async chat exercise
* Removes the elevator exercise
2023-05-17 18:22:11 +01:00
1274260201 Fix broken link to trait objects (#633) 2023-05-15 15:06:50 +01:00
d56298fc84 Add redirect for old async/concurrency/ directory (#635)
It seems we had a link to async/concurrency/channels.html for a brief
period. This got indexed and now show up as 404 errors in my reports.
2023-05-15 15:05:28 +01:00
661f51b06b Fix page redirects (#620)
* Fix broken redirects

A few of these were wrong since they assumed the target path is
relative to the root of the course (the path is relative to the page
being redirected).

* Sort redirects
2023-05-08 16:31:54 +02:00
3b21053ff2 Cleanup references to "Day 4" (#603)
* Align outline with new spin-off course structure

With the new structure, the section on Android is a spin-off course
from the main 3-day course on Rust Fundamentals. The Bare-metal and
Concurrency days are spin-off courses in the same way.

* Explain new course structure

* Align Bare-Metal welcome page with other deep dives

* Merge Day 4 page into Course Structure page

* Remove Day 4 Welcome page

This aligns the Concurrency in Rust section with the Bare-Metal Rust
deep dive.

* Show subsections for Android deep dive

This aligns the Rust in Android section with the other deep dives.

* Clean up welcome page and README

We now cover async Rust and the course is no longer a four day course.

* Remove reference to the old Day 4

* Remove Day 4 references from exercises
2023-05-02 08:02:28 +02:00
86d8c4ae54 Rename exercise template directory and archive. 2023-04-05 16:28:07 +01:00
b6f5ba1af0 Run exerciser as mdbook renderer. 2023-04-05 16:28:07 +01:00
739b3a01e0 Restructure Day-3 morning (#503)
* Restructure Day-3 morning
2023-03-30 13:25:34 +01:00
bfed596d28 Generalize the day-4 afternoon (#487)
* Generalize the day-4 afternoon

This is in preparation for adding more options for this portion of the
course, and reflects an existing practice of substituting other
materials for this last half-day.

* address review comments
2023-03-10 09:07:36 -05:00
449ead5575 Integrate GA4 code directly with book.js (#470)
* Integrate GA4 code directly with `book.js`

The main advantage of this is that it simplifies the setup since we
can avoid the monkey-patching we did before.

A secondary advantage is that it should make things a little faster
since we avoid a request to the server on every page load.

* Remove unreachable return

* Watch all of `third_party`

It just occurred to me that we want to refresh the page in `mdbook serve` when anything changes in `third_party`.
2023-03-02 17:50:37 +00:00
e4205b3ac8 Remove renderers from links and index preprocessors (#464)
* Remove `renderers` from `links` and `index` preprocessors

These two preprocessors are default preprocessors and controlled by
`build.use_default_preprocessors` not by `renders`.

* Fix the order of preprocessors

I was wrong about the order in #461.

* Remove `links` and `index` preprocessor lines

These default preprocessors are run by default.

---------

Co-authored-by: Jooyung Han <jooyung@google.com>
2023-03-02 18:01:24 +09:00
1821a3fd12 Make i18n-helpers a requirement (#461)
* Make i18n-helpers a requirement

* Skip mdbook-gettext for mdbook-xgettext

* Gettext finds PO file based on `book.language`

* Update workflow

No need to set `preprocessor.gettext.po-file`.

---------

Co-authored-by: Jooyung Han <jooyung@google.com>
2023-02-28 22:05:09 +09:00
b6a55e419c svgbob should run after gettext (#429)
svgbob translates `_text_` into `*text*`, which makes gettext fail to
translate paragraphs with `_text_`.

Co-authored-by: Jooyung Han <jooyung@google.com>
2023-02-17 16:49:34 +01:00
a6bbd1e64e links should run before gettext (#421)
fixes #419

Co-authored-by: Jooyung Han <jooyung@google.com>
2023-02-17 09:56:51 +09:00
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
f9dea3d7a3 Setup redirects after #120 and #177 (#352)
This makes `mdbook` output a simple redirect at the location of the
old pages. I’ll try to add such pages when we shuffle around our
pages to make sure external links stay valid.
2023-02-06 17:10:01 +01:00
ee36ae318f Add an aspect-ratio-helper mdbook preprocessor (#187)
The idea is that this will help us make better slides: we can see at a
glance when the slide becomes too full.
2023-01-27 18:30:37 +01:00
46f25ac891 Set the site-url to fix 404 page on GitHub Pages (#263)
This fixes the 404 page on GitHub Pages: the default is `/`, but we’re
hosting the site from a subdirectory because of how the repository is
setup.

Fixes #178.
2023-01-24 12:03:46 +01:00
dbc11b2df2 Watch po/ directory for changes (#188)
This makes `mdbook serve` automatically reload the page when
translations change.
2023-01-20 11:36:14 +01:00
48ec773052 Add support for translations
This implements a translation pipeline using the industry-standard
Gettext[1] system.

I picked Gettext for the reasons described in [2] and [3]:

* It’s widely used in open source software. This means that there are
  graphical editors which will help you in editing the `.po` files. An
  example is Poedit[4], which is available for all major platforms.

  There are also many online systems for doing translations. An
  example is Pontoon[5], which is used for the Rust website itself. We
  can consider setting up such an instance ourselves.

* It is a light-weight yet structured format. This means that nothing
  changes with regards to how you update the original English text. We
  can still accept fixes and PRs like normal.

  The structure means that translators can see exactly which part of
  the course they need to update after a change. This is completely
  lost if you simply copy over the original text and translate it
  in-place in the Markdown files.

The code here only adds support for translations. They are not yet
tested, published or used for anything. Next steps will be:

* Add support for switching languages via a bit of JavaScript on each
  page.

* Update the speaker notes feature to support translations (right now
  “Speaker Notes” is hard-coded into the generated HTML). I think we
  should turn it into a mdbook preprocessor instead.

* Add testing: We should test that the `.po` files are well-formed. We
  should also run `mdbook test` on each language since the
  translations can alter the embedded code.

Fixes #115.

[1]: https://www.gnu.org/software/gettext/manual/html_node/index.html
[2]: https://github.com/rust-lang/mdBook/pull/1864
[3]:
https://github.com/rust-lang/mdBook/issues/5#issuecomment-1144887806
[4]: https://poedit.net/
[5]: https://pontoon.rust-lang.org/
2023-01-18 16:12:53 +01:00
d5359fa92a Add support for speaker notes
This implements a system for speaker notes via `details` elements and
some JavaScript. The general idea is

1. You add speaker notes to each page by wrapping some Markdown code
   in `<details> … </details>`. This is a standard HTML element for,
   well extra details. Browsers will render the element with a toggle
   control for showing/hiding the content.

2. We inject JavaScript on every page which finds these speaker note
   elements. They’re styled slightly and we keep their open/closed
   state in a browser local storage. This ensures that you can keep
   them open/closed across page loads.

3. We add a link to the speaker notes which will open in a new tab.
   The URL is amended with `#speaker-notes-open`, which we detect in
   the new tab: we hide the other content in this case.
   Simultaneously, we hide the speaker notes in the original window.

4. When navigating to a new page, we signal this to the other window.
   We then navigate to the same page. The logic above kicks in and
   hides the right part of the content. This lets the users page
   through the course using either the regular window or the speaker
   notes — the result is the same and both windows stay in sync.

Tested in both Chrome and Firefox. When using a popup speaker note
window, the content loads more smoothly in Chrome, but it still works
fine in Firefox.

Fixes #53.
2023-01-05 07:46:18 +01:00
2ce32238b5 Fix svgbob diagrams in dark mode 2022-12-27 17:04:14 +01:00
ced70fce79 Add links to edit every page on GitHub
This makes it super easy to edit a page: just click the icon in the
top-right and you’ll be taken directly to an editor on GitHub.
2022-12-21 17:29:56 +01:00
53f0674756 Link back to repository in top-right corner 2022-12-21 17:28:02 +01:00
c212a473ba Publish Comprehensive Rust 🦀 2022-12-21 16:38:28 +01:00