Notepad ++ UDL:如何使jq的表达式转义括号很好地嵌套在双引号内?

时间:2020-01-22 11:13:49

标签: nested notepad++ jq

我正在尝试为jq编写Notepad ++ UDL(用户定义语言),但是我已经达到了我知道如何使用一种特定的jq语言功能的极限。 :-(

jq(很多)的一项不错的功能是它使您可以将jq代码嵌入字符串中的紧凑方式,例如

"Value is \(.value | ascii_upcase)"

现在,我可以轻松地对双引号分隔的字符串进行样式化了...

Open: "       Escape: \         Close: "

...然后我可以在中间将方括号内的样式化...

Open: \(       Escape:          Close: )

...但是我不能让两者一起工作。 :-(

我认为这里的问题是\字符试图服务于两个主服务器,即,一方面,它在“ --- \'---”字符串中充当正常的转义字符,然后另一方面,它与表达式定界符“ --- \(expression)---”一起工作(与左圆括号结合使用)(但仅当嵌套在字符串中时才有意义)。也就是说,我可以将\作为字符串转义符,也可以将\(作为字符串内的表达式定界符,但是我不能同时使用两者。这是正确的吗?

即使我可以解决此问题,也看不到如何在嵌入式表达式的中间处理圆括号对,因为闭合的圆括号会尽早终止嵌入式表达式。也就是说,我看不到如何正确地对其进行样式化...

"Name twice is \((.name + .name) | ascii_upcase)"

...没有破损...

"(I) (like) (brackets)"

(...应具有常规的字符串样式)。有什么建议?还是jq只是一种语言,需要比UDL提供的解析器更复杂的解析器?

或者,如果某个好心的人已经通过为jq生成UDL解决了所有这些问题,请在其中留下带有链接的评论,谢谢! :-)

(PS:StackOverflow尚没有UDL标签。:-()

0 个答案:

没有答案