Skip to content

v2.8 JSON First-Class: resaltado de sintaxis, vista de árbol, estadísticas y descarga correcta (85/85 tests)#8

Merged
luisfemojica merged 1 commit into
mainfrom
v2.8-json-first-class
Jun 12, 2026
Merged

v2.8 JSON First-Class: resaltado de sintaxis, vista de árbol, estadísticas y descarga correcta (85/85 tests)#8
luisfemojica merged 1 commit into
mainfrom
v2.8-json-first-class

Conversation

@luisfemojica

Copy link
Copy Markdown
Owner

Resumen

Petición directa del mantenedor: al formatear JSON, que se vea resaltado y también en árbol. Desde v2.7 la app formatea, minifica y valida JSON, pero las vistas seguían siendo solo-XML: el JSON salía en texto plano y la vista Árbol mostraba un aviso de error. v2.8 completa el soporte.

🎨 Resaltado de sintaxis JSON

highlightJSON() tokeniza el texto crudo (maneja comillas escapadas \") y reutiliza las clases de color existentes — funciona en los 5 temas sin una línea de CSS nueva:

  • Claves → .attr · strings → .value · números → .tag · true/false/null.comment
  • renderOutput detecta el tipo de salida por prefijo ({ o [), igual que la conversión
  • La búsqueda con highlight funciona sobre el JSON resaltado sin cambios

🌳 Vista de árbol para JSON

jsonTreeHTML(): objetos { } y arrays [ ] colapsables con <details> nativo, contador de claves/elementos por nodo, hojas con su valor tipado (strings naranjas, números azules). Antes: «⚠️ La salida no es XML válido».

📊 Estadísticas para JSON

collectStatsJSON(): los KPIs (valores totales, claves, profundidad) ahora se pueblan al formatear/minificar JSON — antes quedaban en «–».

💾 Descarga con extensión correcta

El botón Descargar siempre producía .xml con MIME application/xml, aunque la salida fuera JSON o CSV. Ahora: .json, .csv (tras convertir) o .txt (reportes de diff/XPath), con el MIME correspondiente.

Tests

8 nuevos: tokenizador (clases por tipo, escape de HTML y comillas), árbol JSON (objeto, array, inválido), y 3 de UI (resaltado al formatear, árbol con salida JSON, estadísticas). El test del aviso de árbol se actualizó: ahora el aviso es solo para texto no parseable. 85/85 pasando.

Verificación en UI real

JSON anidado de prueba: 9 claves coloreadas, 3 strings, 2 números, 2 booleanos/null; árbol con 5 nodos colapsables y 7 hojas; KPIs 12 valores / 9 claves / profundidad 5.

Métricas

index.html: ~2177 líneas / ~83KB (límites: ~2500 / 100KB duro).

🤖 Generated with Claude Code

El soporte JSON existente (validar, formatear, minificar, convertir)
se completa en las vistas:

- highlightJSON(): resaltado de sintaxis tokenizando el texto crudo
  (maneja comillas escapadas). Claves .attr, strings .value, números
  .tag, booleanos/null .comment — reutiliza los colores de los 5 temas
  sin CSS nuevo. renderOutput detecta el tipo de salida por prefijo.
- jsonTreeHTML(): vista de árbol para JSON con objetos {} y arrays []
  colapsables (details nativo), contador de claves/elementos por nodo
  y hojas con su valor tipado.
- collectStatsJSON(): los KPIs de estadísticas (valores, claves,
  profundidad) ahora también se pueblan al formatear/minificar JSON.
- Descargar usa extensión y MIME correctos: .json para salidas JSON,
  .csv tras convertir a CSV, .txt para reportes de diff/XPath.

Tests: 8 nuevos — 85/85 pasando.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@luisfemojica luisfemojica merged commit bd8bb04 into main Jun 12, 2026
1 check passed
@luisfemojica luisfemojica deleted the v2.8-json-first-class branch June 12, 2026 21:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant