-
-
Notifications
You must be signed in to change notification settings - Fork 3.5k
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
Blog readtime includes inline SVG text content #7367
Comments
Thanks for reporting.
Yes, happy to accept a PR here. We need to build some logic to skip adding of content when inside specific tags: mkdocs-material/src/plugins/blog/readtime/parser.py Lines 28 to 45 in 4f8081c
The search plugin already does that here: mkdocs-material/src/plugins/search/plugin.py Lines 383 to 388 in 4f8081c
mkdocs-material/src/plugins/search/plugin.py Lines 409 to 414 in 4f8081c
mkdocs-material/src/plugins/search/plugin.py Lines 513 to 516 in 4f8081c
|
Thanks for the very helpful pointers to the search plugin! I've submitted a PR. |
Keeping open until released. |
Released as part of 9.5.30. |
Context
I'm inlining SVG images to be able to use Material for MkDocs' CSS variables for more consistent image styles with the rest of the page.
Slightly off topic but just for completeness: Unlike in the below reproduction (as I want to keep it minimal), I actually wrap the inline SVG in
to avoid leakage of the CSS definitions into the document and potentially conflict with other inline SVGs' CSS definitions.
Bug description
The blog readtime plugin extracts any text data from the generated HTML page content including, e.g., CSS definitions in inline SVG images. This leads to a bad estimate of the read time, especially when, e.g., there are many CSS definitions (i.e. much "text").
A fix might involve skipping some tags such as
<svg>
,<style>
, and<script>
when gathering text data. I'd be happy to contribute a fix if you agree with the bug report and when we've converged on a solution proposal.Related links
Reproduction
9.5.29-blog-readtime-inline-svg.zip
I've edited
venv/lib/python3.12/site-packages/material/plugins/blog/readtime/__init__.py
to demonstrate the current behavior of the HTML parser:# Extract words from text and compute readtime in seconds + print("DEBUG: ", parser.text) words = len(re.split(r"\W+", "".join(parser.text))) seconds = ceil(words / words_per_minute * 60)
Steps to reproduce
Unzip the reproduction.
Run
mkdocs serve
.Observe the line
in the terminal which shows the list of text data extracted by the HTML parser of the readtime plugin.
Browser
No response
Before submitting
The text was updated successfully, but these errors were encountered: