Расширения для JSON

15

Я имею дело с файлами json с несколькими повторяющимися блоками, в которых изменилось только одно значение поля (целое число) - фактически каждое измененное значение - это просто предыдущее увеличенное соответствующее значение. Чтобы сделать такие файлы легкими для чтения, я хотел бы иметь возможность складывать весь этот набор повторяющихся блоков в один блок с некоторым указанием того, каковы диапазоны изменения значения в этих блоках. В поисках методов свертывания кода в emacs я нашел hs-minor-modeи outline-mode. Однако я не понимаю, как перейти от функциональности, которую они предоставляют, к той, которую я желаю. Может ли кто-нибудь дать приблизительный обзор того, как мне этого добиться?

РЕДАКТИРОВАТЬ: пример того, что я пытаюсь сделать:

Учитывая файл JSON, который выглядит так:

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

Я хотел бы, чтобы это отображалось так:

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

Извиняюсь за очень открытый вопрос.

Pradhan
источник
1
Хороший вопрос - это было бы весьма полезно.
Дрю

Ответы:

8

Для Emacs есть и другие варианты сворачивания: http://wikemacs.org/wiki/Folding#Yafolding, а Yafolding выглядит лучше всего для вашего случая, поскольку основан на отступе. Он также включает в себя приятный интерфейс а-ля Magit для обнаружения команд.

Тем не менее, это не полностью отвечает на ваш вопрос, так как он не показывает диапазон полей из коробки.

Яфолдинг находится в MELPA:

M-x package-install yafolding
Ehvince
источник
1

Используйте emacs ' hideshow. Вы можете держать курсор в любом месте и, чтобы скрыть блоки уровня 'n' под ним, используйте команду

C-c @ C-l

Здесь n - числовой префиксный аргумент, который устанавливается нажатием

C-u 1 RET

Узнайте больше о hsmode здесь, hs-mode . Подробнее о префиксных аргументах здесь: префиксный аргумент Режим hs не работает в режиме по умолчанию. Вам нужно иметь js2-mode (или) js-mode, чтобы это работало.

Madhavan
источник