Extensiones plegables de código para json


15

Estoy tratando con archivos json con múltiples bloques repetidos con solo un valor de campo (entero) cambiado; de hecho, cada valor modificado es solo el valor correspondiente anterior incrementado. Para hacer que tales archivos sean fáciles de leer, me gustaría poder plegar todo este conjunto de bloques repetidos en un solo bloque con alguna indicación de cuáles son los rangos del valor cambiante en estos bloques. Buscando métodos de plegado de código en emacs, encontré hs-minor-modey outline-mode. Sin embargo, no veo cómo pasar de la funcionalidad que proporcionan a la que deseo. ¿Podría alguien proporcionar una visión general aproximada de cómo podría lograr esto?

EDITAR: Un ejemplo de lo que estoy tratando de hacer:

Dado un archivo json que se ve así:

{
    "SomeArray": [
        {
        "ChangingField": 1,
        "ConstantField" : "X"
        },
        {
        "ChangingField": 2,
        "ConstantField" : "X"
        },
        {
        "ChangingField": 3,
        "ConstantField" : "X"
        },
        {
        "ChangingField": 4,
        "ConstantField" : "X"
        },
        {
        "ChangingField": 5,
        "ConstantField" : "X"
        }
    ]
}

Me gustaría que se muestre así:

{
    "SomeArray": [
        {
        "ChangingField": 1...5,
        "ConstantField" : "X"
        }
    ]
}

Disculpas por la pregunta muy abierta.


1
Buena pregunta, eso sería bastante útil.
Dibujó

Respuestas:


8

Hay más opciones de plegado para Emacs: http://wikemacs.org/wiki/Folding#Yafolding y Yafolding parece el mejor para su caso, ya que se basa en la sangría. También incluye una buena interfaz à-la Magit para descubrir los comandos.

Sin embargo, eso no responde completamente a su pregunta, ya que no mostrará el rango de los campos fuera de la caja.

Yafolding está en MELPA:

M-x package-install yafolding

1

Use emacs ' hideshow. Puede mantener el cursor en cualquier lugar y para ocultar los bloques 'n' nivel debajo de él, use el comando

C-c @ C-l

Aquí, n es un argumento de prefijo numérico que se establece presionando

C-u 1 RET

Lea más sobre hsmode aquí, hs-mode . Más información sobre argumentos de prefijo aquí, el modo de prefijo args hs no funciona en el modo predeterminado. Necesita tener js2-mode (o) js-mode en su lugar para que esto funcione.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.