Asterisks surrounded by spaces are parsed as emphasis (`a * b * c` → `a <em> b </em> c`)
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Facilidade para iniciantes
- 55/100
- Tipo de issue
- Bug
- Clareza
- Claramente especificada
- Status de atividade
- Ativa
- Stack de tecnologia
- markdown, typescript
- Domínio
- content
Direção de pesquisa
Start by reproducing with renderHtml('a * b * c') from the @tanstack/markdown/html entry point. The fault is in how unescaped * delimiters are classified as left- or right-flanking when whitespace sits on both sides, so look at the inline emphasis delimiter handling in the parser that renderHtml calls. Done means both repro inputs render as literal asterisks, real italic still becomes emphasis, and escaped asterisks are unchanged.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Version: @tanstack/markdown 1.0.0 (renderHtml and the React adapter)
Repro
import { renderHtml } from '@tanstack/markdown/html'
renderHtml('5 * 4 * 3 = 60')
// actual: <p>5 <em> 4 </em> 3 = 60</p>
// expected: <p>5 * 4 * 3 = 60</p>
renderHtml('a * b * c')
// actual: <p>a <em> b </em> c</p>
// expected: <p>a * b * c</p>
Expected
Under CommonMark's delimiter-run rules, a * followed by whitespace is not left-flanking, so it can't open emphasis. A * preceded by whitespace is not right-flanking, so it can't close emphasis. Both delimiters here have whitespace on both sides, so the text should render literally.
Other parsers agree:
| Input | commonmark.js 0.31.2 | markdown-it 15.0.2 | micromark 4.0.3 | @tanstack/markdown 1.0.0 |
|---|---|---|---|---|
5 * 4 * 3 = 60 |
5 * 4 * 3 = 60 |
5 * 4 * 3 = 60 |
5 * 4 * 3 = 60 |
5 <em> 4 </em> 3 = 60 |
a * b * c |
a * b * c |
a * b * c |
a * b * c |
a <em> b </em> c |
*real italic* |
<em>real italic</em> |
<em>real italic</em> |
<em>real italic</em> |
<em>real italic</em> |
Why it matters
Arithmetic and multiplication in plain text (2 * 3, width * height) are common in user-written notes, and they silently turn into italics.
Escaped asterisks (5 \* 4 \* 3) render correctly. Only the flanking check on unescaped delimiters is affected.
- Linguagem predominante
- TypeScript
- Estrelas
- 432
- Forks
- 11
- Merge médio
- 57min
- PRs com merge (30d)
- 4
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de TanStack/markdown
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 48/100
-
A blockquote with U+2028 or U+2029 loops the parser foreverTalvez já em andamento @elwan-l1 assumiu há 20 dias. Aberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 62/100
-
Dificuldade 3/5 Meio dia Facilidade para iniciantes 70/100
Todas as issues de TanStack/markdown
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 1/5 1-3 horas Facilidade para iniciantes 84/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 83/100
keptinventory/kept#336 ·
Mantenedores costumam responder em até 1 dia
-
good first issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
-
hemi-earn
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
vetro-protocol/vetro-monorepo#1013 ·
Mantenedores costumam responder em até 1 dia