Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Convert all code listings to use new <Listing> preprocessor #3919

Open
7 of 20 tasks
chriskrycho opened this issue May 14, 2024 · 17 comments
Open
7 of 20 tasks

Convert all code listings to use new <Listing> preprocessor #3919

chriskrycho opened this issue May 14, 2024 · 17 comments

Comments

@chriskrycho
Copy link
Contributor

chriskrycho commented May 14, 2024

As of #3918, we have a preprocessor that allows us to author with a custom HTML tag, Listing, roughly as if it were a component in a templating language. This input:

<Listing number="1-1" file-name="src/lib.rs" caption="A listing showing how to use a `Listing`">

```rust
fn main() {
    println!("Hello, listing!");
}
```

</Listing>

…will generate this output in the regular book (and strip all the tags in the NoStarch book):

<figure class="listing">
<span class="file-name">Filename: src/lib.rs</span>
<pre><pre class="playground"><code class="language-rust">fn main() {
    println!("Hello, listing!");
}</code></pre></pre>
<figcaption>Listing 1-2: A listing showing how to use a <code>Listing</code></figcaption>
</figure>

As described in the PR adding support for this, the result is more accessible HTML, which will also give us a nice way to hook in for styling things better if we so choose.


If you’d like to help, please leave a comment below noting which chapter you’d like to pick up so folks don’t do duplicate work! If it already has a user handle by it, please don’t work on that chapter.

Note for contributors: when converting to a <Listing>, you can drop the leading Listing <number>: from the caption arg, since it handles that automatically with the number arg.

@davidkurilla
Copy link
Contributor

davidkurilla commented May 16, 2024

I'd like to help with chapter 1.

@davidkurilla
Copy link
Contributor

Thanks for the feedback for my pervious contribution! I plan to work on converting chapters 2 and 3

@chriskrycho
Copy link
Contributor Author

Very good! Thank you! 💙

@SpectralPixel
Copy link

I'll do chapters 6-10. Already working on it.

@bzierk
Copy link
Contributor

bzierk commented Jun 12, 2024

I am working on converting chapter 11.

@bzierk
Copy link
Contributor

bzierk commented Jun 12, 2024

I'm in the process of converting 12-15. It is mostly working but all captions which have angle brackets (eg Box<T>) are breaking the xml parser. Will work on handling the necessary escape characters.

@chriskrycho
Copy link
Contributor Author

Interesting – I would not have expected that! 🤔 Let me know what you come up with.

@bzierk
Copy link
Contributor

bzierk commented Jun 14, 2024

The issue appears to be that < is not a valid character in the body of an attribute in XML. These characters have to be escaped but with the ListingBuilder taking things by reference its a little trickier.

https://github.com/RazrFalcon/xmlparser/blob/e54c2768f20814140c11e6c92f94ee74bfd54808/src/lib.rs#L1037

@SpectralPixel
Copy link

I've been quite busy over here, I hope to get back to work soon and finish the chapters.

@SpectralPixel
Copy link

How do I build the mdbook with the Listing pre-processor? If I recall correctly, <Listing> support hasn't been upstreamed yet, so how do I test the book? Or is that responsibility offloaded to code reviewers? Thanks :)

@SpectralPixel
Copy link

SpectralPixel commented Jun 26, 2024

Also, what about code that is preceded by a filename, yet doesn't have a listing number? Are these also turned into <Listing>s that don't have a number or caption?
(Edit: I'll do these as well for now, feel free to revert them later.)

@chriskrycho
Copy link
Contributor Author

@SpectralPixel sorry, just saw these questions.

  1. For the listing preprocessor, it worked just fine in this repo anyway, and it has been fixed in the rust repo, so nothing to worry about there.
  2. Mmmm, those are interesting – we probably need to think about how <Listing> should handle those. I will poke at how many of those there are and figure out what we ought to do with them!

@SpectralPixel
Copy link

Hmmm, I already converted those special <Listing>s, so I'll add them in my PR. Feel free to revert those commits if necessary though. I'll try to finish it all up this afternoon.

@SpectralPixel
Copy link

Weird, mdbook seems not to work on my machine when I install it the way that is recommended for this repo... I guess I'll just send the PR so you can check if it works fine, it's probably just me doing something wrong with mdbook...

@chriskrycho
Copy link
Contributor Author

@SpectralPixel if you consistently have issues with mdbook not working, would you open an issue? That way we can track fixing that—it’s important to us to make sure folks can contribute easily!

@SpectralPixel
Copy link

Well, I'm not sure if I have it set up properly...

@chriskrycho
Copy link
Contributor Author

@SpectralPixel @bzierk I believe #3975 should address the issues each of you were separately hitting in terms of what the <Listing> preprocessor supports!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants