Open y1nglamore opened 1 year ago
swig and swig-templates may be the same thing but different version, it works for both swig
and swig-templates
check my blog for more detail (in Chinese): https://www.gem-love.com/2023/02/01/Swig%E6%A8%A1%E6%9D%BF%E5%BC%95%E6%93%8E0day%E6%8C%96%E6%8E%98-%E4%BB%A3%E7%A0%81%E6%89%A7%E8%A1%8C%E5%92%8C%E6%96%87%E4%BB%B6%E8%AF%BB%E5%8F%96/
official doc
poc
tpl.html
run.js
the code above will execute
open -a Calculator.app
commandgif: http://cdn2.pic.y1ng.vip/uPic/2023/02/01/m1-134548_iShot_2023-02-01_13.45.05.gif
Reason
include.js will do some code splicing https://github.com/node-swig/swig-templates/blob/313bed1faa42e310d9dca4cd05d384439d26ec63/lib/tags/include.js#L39-L52
the return value will be added to var
out
https://github.com/node-swig/swig-templates/blob/313bed1faa42e310d9dca4cd05d384439d26ec63/lib/parser.js#L891-L899
finally the value of
out
:the
out
will be used to make an anonymous function, and then call the functionif you debug in detail, you will find that it will
call
the following anonymous funciton: