💻 Cap 04: Blocos de Código Fenced, Destaque de Sintaxe e Diffs Estruturados
🗺️ O Mecanismo de Tokenização e Syntax Highlighting
flowchart LR
MD["Markdown Bruto:\n```python\ndef soma(a, b):\n return a + b\n```"]
--> LEXER["Lexer (Rouge / Pygments / Prism)"]
LEXER --> TOKENS["Tokens: KEYWORD('def'), FUNC('soma'), VAR('a')"]
TOKENS --> HTML["HTML Formatado:\n<span class='kd'>def</span> <span class='nf'>soma</span>..."]
HTML --> CSS["Tema Visual de Código (Dracula, Monokai, GitHub Dark) ⚡"]
style MD fill:#ede7f6,stroke:#512da8,stroke-width:2px
style LEXER fill:#fff3e0,stroke:#ff9800,stroke-width:2px
style TOKENS fill:#e1f5fe,stroke:#03a9f4,stroke-width:1.5px
style HTML fill:#e8f5e9,stroke:#4caf50,stroke-width:1.5px
style CSS fill:#00897b,stroke:#004d40,stroke-width:2px,color:#ffffff
📖 Fundamentos e Aplicação
A apresentação clara de código é o coração de qualquer documentação técnica em engenharia de software. O Markdown suporta tanto código em linha (inline code) quanto blocos delimitados (fenced code blocks).
1. Fenced Code Blocks e Identificadores de Linguagem
Utilizam-se três crases (ou tils) seguidas do identificador canônico da linguagem:
```rust
fn main() {
println!("Olá, mundo!");
}
```
2. Destaque de Diferenças de Código (diff)
Essencial para tutorias de refatoração, mostrando o que foi removido (-) e o que foi adicionado (+):
```diff
- const timeout = 5000;
+ const timeout = 10000; // Dobrado para tolerância em redes lentas
```
3. Blocos de Código Aninhados (Four Backticks)
Para documentar o próprio Markdown sem quebrar o delimitador, use quatro crases na cerca externa:
````markdown
```python
print("Código demonstrado dentro de documentação Markdown")
```
````