Extra Guia De Markdown • Trilha Progressiva em 4 Níveis


🎯 Nível 1: Fundamentos

Problema 01.1 — Hierarquia de Cabeçalhos e Formatação de Texto

Contexto: Hierarquia de Cabeçalhos e Formatação de Texto aplicado ao domínio de Sintaxe Essencial do Markdown.

Requisitos de Execução:

  1. Criar validador em Python que confira a presença de H1 (#), H2 (##) e estilos negrito/itálico.
  2. Emitir relatório de conformidade sintática.

Resultado Esperado

Validação de Sintaxe: Cabeçalhos H1 e H2 conformes | Ênfases detectadas.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_01_1_SeuNome
  2. Envie na tarefa: Atividade Cap 01 - Sintaxe Essencial do Markdown
🔑 Gabarito de Código & Solução Comentada
# validar_sintaxe_basica.py
import re

def validar_markdown_basico(texto):
    tem_h1 = bool(re.search(r"^#\s+[^\n]+", texto, re.M))
    tem_h2 = bool(re.search(r"^##\s+[^\n]+", texto, re.M))
    tem_bold = bool(re.search(r"\*\*[^*]+\*\*", texto))
    tem_italic = bool(re.search(r"\*[^*]+\*", texto))
    
    print(f"H1 Presente : {tem_h1}")
    print(f"H2 Presente : {tem_h2}")
    print(f"Negrito OK  : {tem_bold}")
    print(f"Itálico OK  : {tem_italic}")
    return tem_h1 and tem_h2 and tem_bold

md_teste = "# Titulo Principal\n## Subtitulo\nTexto com **negrito** e *italico*."
validar_markdown_basico(md_teste)

🔍 Nível 2: Prática

Problema 01.2 — Parser de Listas Aninhadas e Tabelas Markdown

Contexto: Parser de Listas Aninhadas e Tabelas Markdown aplicado ao domínio de Sintaxe Essencial do Markdown.

Requisitos de Execução:

  1. Escrever script que processe listas ordenadas, não-ordenadas e tabelas formatadas em Markdown.
  2. Converter a tabela para uma lista de dicionários Python.

Resultado Esperado

Tabela convertida para 2 registros estruturados.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_01_2_SeuNome
  2. Envie na tarefa: Atividade Cap 01 - Sintaxe Essencial do Markdown
🔑 Gabarito de Código & Solução Comentada
# parser_tabelas_md.py
def extrair_tabela_md(tabela_texto):
    linhas = [l.strip() for l in tabela_texto.strip().split('\n') if '|' in l]
    if len(linhas) < 3: return []
    cabecalhos = [c.strip() for c in linhas[0].split('|')[1:-1]]
    registros = []
    for linha in linhas[2:]:
        valores = [v.strip() for v in linha.split('|')[1:-1]]
        registros.append(dict(zip(cabecalhos, valores)))
    return registros

tabela = "| Nome | Cargo | Status |\n| :--- | :--- | :---: |\n| Ana | Dev | Ativo |\n| Caio | QA | Ativo |"
print(extrair_tabela_md(tabela))

⚡ Nível 3: Integração

Problema 01.3 — Extrator de Blocos de Código e Validador de Linguagem

Contexto: Extrator de Blocos de Código e Validador de Linguagem aplicado ao domínio de Sintaxe Essencial do Markdown.

Requisitos de Execução:

  1. Implementar extrator de blocos de código cercados.
  2. Alertar se houver blocos sem definição explícita de linguagem.

Resultado Esperado

Blocos encontrados: 2 (python, bash) | Blocos sem linguagem: 0

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_01_3_SeuNome
  2. Envie na tarefa: Atividade Cap 01 - Sintaxe Essencial do Markdown
🔑 Gabarito de Código & Solução Comentada
# extrator_codigo_md.py
import re

def auditar_blocos_codigo(conteudo):
    padrao = r"`{3}([a-zA-Z0-9_-]*)\s*\n(.*?)`{3}"
    matches = re.findall(padrao, conteudo, re.S)
    sem_linguagem = sum(1 for lang, _ in matches if not lang.strip())
    
    print(f"Total de Blocos: {len(matches)}")
    print(f"Sem Linguagem  : {sem_linguagem}")
    for lang, code in matches:
        qtd_linhas = len([l for l in code.splitlines() if l.strip()])
        print(f"Linguagem: {lang or 'NENHUMA'} ({qtd_linhas} linhas)")
    return len(matches), sem_linguagem

trecho = "```python\nprint('Hello')\n```"
auditar_blocos_codigo(trecho)

🏆 Nível 4: Desafio Corporativo

Problema 01.4 — Compilador de Markdown para HTML Seguro com Sanitização

Contexto: Compilador de Markdown para HTML Seguro com Sanitização aplicado ao domínio de Sintaxe Essencial do Markdown.

Requisitos de Execução:

  1. Criar compilador de Markdown simplificado convertendo cabeçalhos, listas, links e tabelas para HTML5.
  2. Sanitizar tags perigosas.

Resultado Esperado

HTML5 semântico gerado e sanitizado com sucesso.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_01_4_SeuNome
  2. Envie na tarefa: Atividade Cap 01 - Sintaxe Essencial do Markdown
🔑 Gabarito de Código & Solução Comentada
# compilador_md_html.py
import re
import html

def md_para_html(md_texto):
    texto = html.escape(md_texto)
    texto = re.sub(r"^### (.*)$", r"<h3>\1</h3>", texto, flags=re.M)
    texto = re.sub(r"^## (.*)$", r"<h2>\1</h2>", texto, flags=re.M)
    texto = re.sub(r"^# (.*)$", r"<h1>\1</h1>", texto, flags=re.M)
    texto = re.sub(r"\*\*([^\*]+)\*\*", r"<strong>\1</strong>", texto)
    texto = re.sub(r"\*([^\*]+)\*", r"<em>\1</em>", texto)
    texto = re.sub(r"\[([^\]]+)\]\(([^)]+)\)", r'<a href="\2">\1</a>', texto)
    return texto

doc = "# Titulo\nTexto com [Link](https://tech.com) e **destaque**."
print(md_para_html(doc))