Extensões dobráveis ​​em código para json

15

Estou lidando com arquivos json com vários blocos repetidos com apenas um valor de campo (inteiro) alterado - na verdade, todo valor alterado é apenas o valor correspondente anterior incrementado. Para facilitar a leitura desses arquivos, eu gostaria de poder dobrar todo esse conjunto de blocos repetidos em apenas um bloco, com alguma indicação de quais são os intervalos do valor variável nesses blocos. Procurando por métodos de dobragem de código no emacs, encontrei hs-minor-modee outline-mode. No entanto, não vejo como ir da funcionalidade que eles fornecem para a que eu desejo. Alguém poderia fornecer uma visão geral aproximada de como eu poderia conseguir isso?

EDIT: Um exemplo do que estou tentando fazer:

Dado um arquivo json que se parece com isso:

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

Eu gostaria que ele fosse exibido assim:

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

Desculpas pela pergunta muito aberta.

Pradhan
fonte
11
Boa pergunta - isso seria bastante útil.
Desenhou

Respostas:

8

Existem mais opções de dobragem para o Emacs: http://wikemacs.org/wiki/Folding#Yafolding e Yafolding são as melhores para o seu caso, uma vez que é baseado em recuo. Ele também inclui uma ótima interface à Magit para descobrir os comandos.

No entanto, isso não responde totalmente à sua pergunta, pois não mostra o intervalo dos campos fora da caixa.

Yafolding está em MELPA:

M-x package-install yafolding
Ehvince
fonte
1

Use emacs ' hideshow. Você pode manter o cursor em qualquer lugar e, para ocultar os blocos 'n' no nível abaixo, use o comando

C-c @ C-l

Aqui, n é um argumento de prefixo numérico que é definido pressionando

C-u 1 RET

Leia mais sobre hsmode aqui, modo hs . Mais sobre argumentos de prefixo aqui, o prefixo args hs mode não funciona no modo Padrão. Você precisa ter o modo js2 (ou) js-mode para que isso funcione.

Madhavan
fonte