Я пытаюсь написать UDL Notepad ++ (пользовательский язык) для jq, но я достиг предела того, что я знаю, как сделать с одной конкретной функцией языка jq. : - (
Одна из (многих) приятных особенностей jq - это компактный способ встраивания кода jq в строки, например,
"Value is \(.value | ascii_upcase)"
Теперь я могу стилизовать разделенные двойными кавычками Строки достаточно легко ...
Open: " Escape: \ Close: "
... и я могу стилизовать блок в скобках в середине ...
Open: \( Escape: Close: )
... но я не могу получить два для совместной работы.: - (
Я думаю, что проблема в том, что \ -символ пытается обслуживать двух мастеров, то есть, с одной стороны, он работает как обычный escape-символ внутри "- - \ '--- "строк, и, с другой стороны, он работает (в сочетании с левой круглой скобкой) как разделитель выражений" --- \ (expression) --- "(но имеет значение только во вложенных внутри строки). То есть, у меня может быть \ как escape-символ строки, или у меня может быть \ (как разделитель выражений внутри строки, но я не могу иметь оба одновременно. Это правильно?
Даже если я смогу это исправить, я также не смогу понять, как мне справиться с парами круглых скобок в середине набережной. Выражение edded, потому что закрывающая круглая скобка досрочно завершает вложенное выражение. То есть я не вижу, как правильно это стилизовать ...
"Name twice is \((.name + .name) | ascii_upcase)"
... без разбивки ...
"(I) (like) (brackets)"
(... который должен был иметь нормальный стиль строки). Какие-либо предложения? Или jq - это просто язык, который нуждается в более сложном парсере, чем может обеспечить UDL?
В качестве альтернативы, если какой-то приятный человек уже решил все эти проблемы, создав UDL для jq, оставьте комментарий со ссылкой на это спасибо! : -)
(PS: у StackOverflow еще нет тега UDL. :-()