vscode-liquidsoap 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (342) hide show
  1. package/package.json +14 -9
  2. package/syntaxes/liquidsoap.tmLanguage.json +41 -12
  3. package/test-suite/fetch-stdlib.js +125 -0
  4. package/test-suite/run-tests.js +544 -0
  5. package/tests/snap/libs/audio.liq.snap +20 -10
  6. package/tests/snap/libs/fades.liq.snap +3 -1
  7. package/tests/snap/libs/ffmpeg.liq.snap +10 -5
  8. package/tests/snap/libs/file.liq.snap +1 -1
  9. package/tests/snap/libs/hls.liq.snap +22 -9
  10. package/tests/snap/libs/http.liq.snap +60 -22
  11. package/tests/snap/libs/icecast.liq.snap +19 -13
  12. package/tests/snap/libs/medialib.liq.snap +5 -2
  13. package/tests/snap/libs/metadata.liq.snap +7 -3
  14. package/tests/snap/libs/playlist.liq.snap +4 -2
  15. package/tests/snap/libs/protocols.liq.snap +70 -24
  16. package/tests/snap/libs/ref.liq.snap +4 -3
  17. package/tests/snap/libs/request.liq.snap +3 -1
  18. package/tests/snap/libs/resolvers.liq.snap +5 -2
  19. package/tests/snap/libs/settings.liq.snap +11 -5
  20. package/tests/snap/libs/source.liq.snap +2 -1
  21. package/tests/snap/libs/stdlib.liq.snap +52 -52
  22. package/tests/snap/libs/string.liq.snap +6 -4
  23. package/tests/snap/libs/switches.liq.snap +2 -2
  24. package/tests/snap/libs/testing.liq.snap +3 -1
  25. package/tests/snap/libs/thread.liq.snap +3 -1
  26. package/tests/snap/libs/video.liq.snap +21 -12
  27. package/tests/snap/tests/failures/ctype.liq +0 -0
  28. package/tests/snap/tests/failures/ctype.liq.snap +69 -11
  29. package/tests/snap/tests/failures/error.liq +0 -0
  30. package/tests/snap/tests/failures/error.liq.snap +21 -10
  31. package/tests/snap/tests/failures/record-invalid-member1.liq +0 -0
  32. package/tests/snap/tests/failures/record-invalid-member1.liq.snap +26 -11
  33. package/tests/snap/tests/failures/record-invalid-member2.liq +0 -0
  34. package/tests/snap/tests/failures/record-invalid-member2.liq.snap +13 -5
  35. package/tests/snap/tests/failures/ref.liq +0 -0
  36. package/tests/snap/tests/failures/ref.liq.snap +53 -17
  37. package/tests/snap/tests/fixme/GH1170.liq +0 -0
  38. package/tests/snap/tests/fixme/GH1170.liq.snap +139 -36
  39. package/tests/snap/tests/fixme/LS527.liq.snap +89 -32
  40. package/tests/snap/tests/fixme/cross2.liq +0 -0
  41. package/tests/snap/tests/fixme/cross2.liq.snap +122 -31
  42. package/tests/snap/tests/fixme/cross3.liq +0 -0
  43. package/tests/snap/tests/fixme/cross3.liq.snap +96 -26
  44. package/tests/snap/tests/fixme/sequence-1.liq +0 -0
  45. package/tests/snap/tests/fixme/sequence-1.liq.snap +168 -49
  46. package/tests/snap/tests/fixme/sequence-2.liq.snap +163 -42
  47. package/tests/snap/tests/harbor/http.liq.snap +2246 -798
  48. package/tests/snap/tests/harbor/http2.liq.snap +447 -150
  49. package/tests/snap/tests/harbor/http3.liq.snap +238 -99
  50. package/tests/snap/tests/harbor/post.liq.snap +1416 -575
  51. package/tests/snap/tests/harbor/put.liq.snap +1416 -578
  52. package/tests/snap/tests/language/argsof.liq +0 -0
  53. package/tests/snap/tests/language/argsof.liq.snap +342 -74
  54. package/tests/snap/tests/language/bool.liq +0 -0
  55. package/tests/snap/tests/language/bool.liq.snap +129 -29
  56. package/tests/snap/tests/language/comments.liq.snap +188 -95
  57. package/tests/snap/tests/language/conversions.liq.snap +181 -68
  58. package/tests/snap/tests/language/doc.liq +0 -0
  59. package/tests/snap/tests/language/doc.liq.snap +42 -13
  60. package/tests/snap/tests/language/encoders.liq +0 -0
  61. package/tests/snap/tests/language/encoders.liq.snap +153 -39
  62. package/tests/snap/tests/language/error.liq +0 -0
  63. package/tests/snap/tests/language/error.liq.snap +677 -179
  64. package/tests/snap/tests/language/eval.liq +0 -0
  65. package/tests/snap/tests/language/eval.liq.snap +761 -308
  66. package/tests/snap/tests/language/file.liq +0 -0
  67. package/tests/snap/tests/language/file.liq.snap +326 -92
  68. package/tests/snap/tests/language/file.watch.liq +0 -0
  69. package/tests/snap/tests/language/file.watch.liq.snap +122 -30
  70. package/tests/snap/tests/language/file.watch2.liq +0 -0
  71. package/tests/snap/tests/language/file.watch2.liq.snap +147 -42
  72. package/tests/snap/tests/language/file_protocol.liq +0 -0
  73. package/tests/snap/tests/language/file_protocol.liq.snap +109 -32
  74. package/tests/snap/tests/language/functions.liq +0 -0
  75. package/tests/snap/tests/language/functions.liq.snap +189 -59
  76. package/tests/snap/tests/language/getter.liq +0 -0
  77. package/tests/snap/tests/language/getter.liq.snap +470 -133
  78. package/tests/snap/tests/language/interactive.liq +0 -0
  79. package/tests/snap/tests/language/interactive.liq.snap +254 -83
  80. package/tests/snap/tests/language/interpolation.liq +20 -0
  81. package/tests/snap/tests/language/interpolation.liq.snap +141 -0
  82. package/tests/snap/tests/language/json.liq +0 -0
  83. package/tests/snap/tests/language/json.liq.snap +1304 -738
  84. package/tests/snap/tests/language/list.liq +0 -0
  85. package/tests/snap/tests/language/list.liq.snap +1932 -883
  86. package/tests/snap/tests/language/loop.liq +0 -0
  87. package/tests/snap/tests/language/loop.liq.snap +276 -101
  88. package/tests/snap/tests/language/math.liq +0 -0
  89. package/tests/snap/tests/language/math.liq.snap +134 -26
  90. package/tests/snap/tests/language/mem_usage.liq +0 -0
  91. package/tests/snap/tests/language/mem_usage.liq.snap +66 -17
  92. package/tests/snap/tests/language/metadata.liq +0 -0
  93. package/tests/snap/tests/language/metadata.liq.snap +606 -177
  94. package/tests/snap/tests/language/null.liq +0 -0
  95. package/tests/snap/tests/language/null.liq.snap +351 -131
  96. package/tests/snap/tests/language/osc.liq +0 -0
  97. package/tests/snap/tests/language/osc.liq.snap +350 -124
  98. package/tests/snap/tests/language/pattern.liq +0 -0
  99. package/tests/snap/tests/language/pattern.liq.snap +955 -308
  100. package/tests/snap/tests/language/pp.liq +0 -0
  101. package/tests/snap/tests/language/pp.liq.snap +227 -78
  102. package/tests/snap/tests/language/predicate.liq +0 -0
  103. package/tests/snap/tests/language/predicate.liq.snap +365 -70
  104. package/tests/snap/tests/language/process.liq +0 -0
  105. package/tests/snap/tests/language/process.liq.snap +227 -99
  106. package/tests/snap/tests/language/rec.liq +0 -0
  107. package/tests/snap/tests/language/rec.liq.snap +134 -49
  108. package/tests/snap/tests/language/record.liq +0 -0
  109. package/tests/snap/tests/language/record.liq.snap +2251 -570
  110. package/tests/snap/tests/language/ref.liq +0 -0
  111. package/tests/snap/tests/language/ref.liq.snap +208 -55
  112. package/tests/snap/tests/language/regexp.liq +0 -0
  113. package/tests/snap/tests/language/regexp.liq.snap +327 -176
  114. package/tests/snap/tests/language/socket.liq.snap +279 -96
  115. package/tests/snap/tests/language/stdlib.liq +0 -0
  116. package/tests/snap/tests/language/stdlib.liq.snap +170 -51
  117. package/tests/snap/tests/language/string.liq +0 -0
  118. package/tests/snap/tests/language/string.liq.snap +1747 -860
  119. package/tests/snap/tests/language/test_cover.liq.snap +57 -20
  120. package/tests/snap/tests/language/thread.liq.snap +391 -102
  121. package/tests/snap/tests/language/time.liq +0 -0
  122. package/tests/snap/tests/language/time.liq.snap +115 -33
  123. package/tests/snap/tests/language/type_errors.liq +0 -0
  124. package/tests/snap/tests/language/type_errors.liq.snap +1042 -703
  125. package/tests/snap/tests/language/types.liq +33 -0
  126. package/tests/snap/tests/language/types.liq.snap +321 -0
  127. package/tests/snap/tests/language/typing.liq +0 -0
  128. package/tests/snap/tests/language/typing.liq.snap +1233 -405
  129. package/tests/snap/tests/language/url.liq +0 -0
  130. package/tests/snap/tests/language/url.liq.snap +84 -38
  131. package/tests/snap/tests/language/write_cover.liq.snap +44 -15
  132. package/tests/snap/tests/language/yaml.liq.snap +252 -97
  133. package/tests/snap/tests/media/ffmpeg_add_text.liq +0 -0
  134. package/tests/snap/tests/media/ffmpeg_add_text.liq.snap +558 -120
  135. package/tests/snap/tests/media/ffmpeg_audio_decoder.liq +0 -0
  136. package/tests/snap/tests/media/ffmpeg_audio_decoder.liq.snap +228 -49
  137. package/tests/snap/tests/media/ffmpeg_complex_filter.liq +0 -0
  138. package/tests/snap/tests/media/ffmpeg_complex_filter.liq.snap +544 -68
  139. package/tests/snap/tests/media/ffmpeg_copy_and_encode_decoder.liq +0 -0
  140. package/tests/snap/tests/media/ffmpeg_copy_and_encode_decoder.liq.snap +362 -68
  141. package/tests/snap/tests/media/ffmpeg_copy_concat.liq.snap +159 -56
  142. package/tests/snap/tests/media/ffmpeg_copy_decoder.liq +0 -0
  143. package/tests/snap/tests/media/ffmpeg_copy_decoder.liq.snap +507 -121
  144. package/tests/snap/tests/media/ffmpeg_distributed_hls.liq +0 -0
  145. package/tests/snap/tests/media/ffmpeg_distributed_hls.liq.snap +645 -186
  146. package/tests/snap/tests/media/ffmpeg_filter.liq +0 -0
  147. package/tests/snap/tests/media/ffmpeg_filter.liq.snap +603 -101
  148. package/tests/snap/tests/media/ffmpeg_filter_changing_rate.liq.snap +712 -142
  149. package/tests/snap/tests/media/ffmpeg_inline_encode_decode.liq +0 -0
  150. package/tests/snap/tests/media/ffmpeg_inline_encode_decode.liq.snap +530 -131
  151. package/tests/snap/tests/media/ffmpeg_inline_encode_decode_audio.liq +0 -0
  152. package/tests/snap/tests/media/ffmpeg_inline_encode_decode_audio.liq.snap +365 -94
  153. package/tests/snap/tests/media/ffmpeg_inline_encode_decode_video.liq +0 -0
  154. package/tests/snap/tests/media/ffmpeg_inline_encode_decode_video.liq.snap +365 -94
  155. package/tests/snap/tests/media/ffmpeg_raw_and_copy_decoder.liq +0 -0
  156. package/tests/snap/tests/media/ffmpeg_raw_and_copy_decoder.liq.snap +514 -125
  157. package/tests/snap/tests/media/ffmpeg_raw_and_encode_decoder.liq +0 -0
  158. package/tests/snap/tests/media/ffmpeg_raw_and_encode_decoder.liq.snap +385 -73
  159. package/tests/snap/tests/media/ffmpeg_raw_decoder.liq +0 -0
  160. package/tests/snap/tests/media/ffmpeg_raw_decoder.liq.snap +370 -72
  161. package/tests/snap/tests/media/ffmpeg_raw_hls.liq +0 -0
  162. package/tests/snap/tests/media/ffmpeg_raw_hls.liq.snap +629 -193
  163. package/tests/snap/tests/media/ffmpeg_transparency_filter.liq.snap +538 -109
  164. package/tests/snap/tests/media/ffmpeg_video_decoder.liq +0 -0
  165. package/tests/snap/tests/media/ffmpeg_video_decoder.liq.snap +236 -59
  166. package/tests/snap/tests/media/mono.liq +0 -0
  167. package/tests/snap/tests/media/mono.liq.snap +223 -47
  168. package/tests/snap/tests/media/multitrack.liq.snap +790 -235
  169. package/tests/snap/tests/media/pcm_f32_decode.liq +0 -0
  170. package/tests/snap/tests/media/pcm_f32_decode.liq.snap +61 -12
  171. package/tests/snap/tests/media/pcm_s16_decode.liq +0 -0
  172. package/tests/snap/tests/media/pcm_s16_decode.liq.snap +61 -12
  173. package/tests/snap/tests/media/stereo.liq +0 -0
  174. package/tests/snap/tests/media/stereo.liq.snap +223 -47
  175. package/tests/snap/tests/media/stream_audio.liq.in +0 -0
  176. package/tests/snap/tests/media/stream_video.liq.in +0 -0
  177. package/tests/snap/tests/media/taglib.liq +0 -0
  178. package/tests/snap/tests/media/taglib.liq.snap +77 -26
  179. package/tests/snap/tests/media/video_size.liq +0 -0
  180. package/tests/snap/tests/media/video_size.liq.snap +305 -68
  181. package/tests/snap/tests/performance/erathostenes.liq +0 -0
  182. package/tests/snap/tests/performance/erathostenes.liq.snap +281 -62
  183. package/tests/snap/tests/performance/performance.liq.snap +99 -26
  184. package/tests/snap/tests/performance/small-record.liq +0 -0
  185. package/tests/snap/tests/performance/small-record.liq.snap +626 -320
  186. package/tests/snap/tests/regression/115-1.liq +0 -0
  187. package/tests/snap/tests/regression/115-1.liq.snap +74 -15
  188. package/tests/snap/tests/regression/115-2.liq +0 -0
  189. package/tests/snap/tests/regression/115-2.liq.snap +101 -16
  190. package/tests/snap/tests/regression/AC5109.liq +0 -0
  191. package/tests/snap/tests/regression/AC5109.liq.snap +216 -78
  192. package/tests/snap/tests/regression/BUG403.liq +0 -0
  193. package/tests/snap/tests/regression/BUG403.liq.snap +136 -33
  194. package/tests/snap/tests/regression/GH-action-919422659.liq +0 -0
  195. package/tests/snap/tests/regression/GH-action-919422659.liq.snap +105 -34
  196. package/tests/snap/tests/regression/GH1129.liq +0 -0
  197. package/tests/snap/tests/regression/GH1129.liq.snap +351 -153
  198. package/tests/snap/tests/regression/GH1146.liq +0 -0
  199. package/tests/snap/tests/regression/GH1146.liq.snap +82 -27
  200. package/tests/snap/tests/regression/GH1151.liq +0 -0
  201. package/tests/snap/tests/regression/GH1151.liq.snap +55 -25
  202. package/tests/snap/tests/regression/GH1159.liq +0 -0
  203. package/tests/snap/tests/regression/GH1159.liq.snap +97 -30
  204. package/tests/snap/tests/regression/GH1279.liq +0 -0
  205. package/tests/snap/tests/regression/GH1279.liq.snap +270 -108
  206. package/tests/snap/tests/regression/GH1327.liq +0 -0
  207. package/tests/snap/tests/regression/GH1327.liq.snap +380 -134
  208. package/tests/snap/tests/regression/GH2585.liq.snap +110 -45
  209. package/tests/snap/tests/regression/GH2602.liq.snap +116 -30
  210. package/tests/snap/tests/regression/GH2756-2.liq.snap +361 -104
  211. package/tests/snap/tests/regression/GH2756.liq.snap +419 -119
  212. package/tests/snap/tests/regression/GH2758.liq.snap +113 -30
  213. package/tests/snap/tests/regression/GH2842.liq.snap +151 -50
  214. package/tests/snap/tests/regression/GH2850.liq.snap +358 -146
  215. package/tests/snap/tests/regression/GH2867.liq.snap +46 -15
  216. package/tests/snap/tests/regression/GH2871.liq.snap +86 -30
  217. package/tests/snap/tests/regression/GH2872.liq.snap +103 -32
  218. package/tests/snap/tests/regression/GH2897.liq.snap +123 -33
  219. package/tests/snap/tests/regression/GH2902.liq.snap +326 -109
  220. package/tests/snap/tests/regression/GH2926.liq.snap +121 -39
  221. package/tests/snap/tests/regression/GH3093.liq.snap +46 -11
  222. package/tests/snap/tests/regression/GH3121.liq.snap +138 -36
  223. package/tests/snap/tests/regression/GH3132.liq.snap +146 -43
  224. package/tests/snap/tests/regression/GH3224.liq.snap +18 -10
  225. package/tests/snap/tests/regression/GH3239-2.liq.snap +154 -34
  226. package/tests/snap/tests/regression/GH3239.liq.snap +149 -33
  227. package/tests/snap/tests/regression/GH3276.liq.snap +164 -53
  228. package/tests/snap/tests/regression/GH3316.liq.snap +229 -55
  229. package/tests/snap/tests/regression/LS268.liq +0 -0
  230. package/tests/snap/tests/regression/LS268.liq.snap +102 -19
  231. package/tests/snap/tests/regression/LS354-1.liq +0 -0
  232. package/tests/snap/tests/regression/LS354-1.liq.snap +117 -28
  233. package/tests/snap/tests/regression/LS354-2.liq +0 -0
  234. package/tests/snap/tests/regression/LS354-2.liq.snap +154 -56
  235. package/tests/snap/tests/regression/LS460.liq +0 -0
  236. package/tests/snap/tests/regression/LS460.liq.snap +145 -49
  237. package/tests/snap/tests/regression/LS503.liq +0 -0
  238. package/tests/snap/tests/regression/LS503.liq.snap +71 -24
  239. package/tests/snap/tests/regression/default_format.liq.snap +43 -7
  240. package/tests/snap/tests/regression/external-encoder.liq.snap +72 -28
  241. package/tests/snap/tests/regression/ffmpeg-copy-encode.liq.snap +167 -62
  242. package/tests/snap/tests/regression/ffmpeg-copy-input-http.liq.snap +55 -13
  243. package/tests/snap/tests/regression/ffmpeg-naming-convention.liq.snap +371 -126
  244. package/tests/snap/tests/regression/infallible-shutdown.liq +0 -0
  245. package/tests/snap/tests/regression/infallible-shutdown.liq.snap +26 -6
  246. package/tests/snap/tests/regression/init-error.liq +0 -0
  247. package/tests/snap/tests/regression/init-error.liq.snap +70 -10
  248. package/tests/snap/tests/regression/initial_request_queue.liq.snap +69 -14
  249. package/tests/snap/tests/regression/input_rtmp.liq +0 -0
  250. package/tests/snap/tests/regression/input_rtmp.liq.snap +28 -7
  251. package/tests/snap/tests/regression/metadata_cache.liq +0 -0
  252. package/tests/snap/tests/regression/metadata_cache.liq.snap +173 -56
  253. package/tests/snap/tests/regression/playlist-id.liq +0 -0
  254. package/tests/snap/tests/regression/playlist-id.liq.snap +126 -56
  255. package/tests/snap/tests/regression/replaygain.liq.snap +53 -11
  256. package/tests/snap/tests/regression/shoutcast-args.liq.snap +52 -24
  257. package/tests/snap/tests/regression/unified-pcm-types.liq.snap +91 -28
  258. package/tests/snap/tests/regression/video-only.liq.snap +121 -33
  259. package/tests/snap/tests/streams/195.liq +0 -0
  260. package/tests/snap/tests/streams/195.liq.snap +63 -26
  261. package/tests/snap/tests/streams/197.liq +0 -0
  262. package/tests/snap/tests/streams/197.liq.snap +129 -40
  263. package/tests/snap/tests/streams/autostart.liq +0 -0
  264. package/tests/snap/tests/streams/autostart.liq.snap +147 -37
  265. package/tests/snap/tests/streams/cross-override.liq.snap +338 -92
  266. package/tests/snap/tests/streams/cross-persist-override.liq.snap +342 -92
  267. package/tests/snap/tests/streams/cross.liq +0 -0
  268. package/tests/snap/tests/streams/cross.liq.snap +343 -90
  269. package/tests/snap/tests/streams/crossfade.liq +0 -0
  270. package/tests/snap/tests/streams/crossfade.liq.snap +476 -128
  271. package/tests/snap/tests/streams/ctype1.liq +0 -0
  272. package/tests/snap/tests/streams/ctype1.liq.snap +89 -26
  273. package/tests/snap/tests/streams/ctype2.liq +0 -0
  274. package/tests/snap/tests/streams/ctype2.liq.snap +114 -30
  275. package/tests/snap/tests/streams/dtmf.liq +0 -0
  276. package/tests/snap/tests/streams/dtmf.liq.snap +129 -32
  277. package/tests/snap/tests/streams/dtmf_pcm_s16.liq +0 -0
  278. package/tests/snap/tests/streams/dtmf_pcm_s16.liq.snap +161 -38
  279. package/tests/snap/tests/streams/fades-overrides.liq.snap +472 -121
  280. package/tests/snap/tests/streams/fades-persistent-override.liq.snap +482 -121
  281. package/tests/snap/tests/streams/ffmpeg-errors.liq.snap +108 -30
  282. package/tests/snap/tests/streams/ffmpeg-trim.liq.snap +63 -18
  283. package/tests/snap/tests/streams/file_output.liq.snap +131 -33
  284. package/tests/snap/tests/streams/harbor_kick_client.liq.snap +235 -72
  285. package/tests/snap/tests/streams/harbor_metadata.liq.snap +206 -96
  286. package/tests/snap/tests/streams/hls_custom_tags.liq.snap +407 -125
  287. package/tests/snap/tests/streams/hls_id3v2.liq.snap +742 -257
  288. package/tests/snap/tests/streams/huge-playlist.liq +0 -0
  289. package/tests/snap/tests/streams/huge-playlist.liq.snap +125 -40
  290. package/tests/snap/tests/streams/icecast_ssl.liq.snap +134 -42
  291. package/tests/snap/tests/streams/icecast_ssl_tls.liq.snap +164 -55
  292. package/tests/snap/tests/streams/icecast_tls.liq.snap +163 -53
  293. package/tests/snap/tests/streams/icecast_tls_ssl.liq.snap +164 -55
  294. package/tests/snap/tests/streams/image.liq +0 -0
  295. package/tests/snap/tests/streams/image.liq.snap +44 -10
  296. package/tests/snap/tests/streams/many-playlists.liq +0 -0
  297. package/tests/snap/tests/streams/many-playlists.liq.snap +142 -48
  298. package/tests/snap/tests/streams/merge_metadata.liq.snap +224 -63
  299. package/tests/snap/tests/streams/never.liq +0 -0
  300. package/tests/snap/tests/streams/never.liq.snap +56 -11
  301. package/tests/snap/tests/streams/on_frame.liq +0 -0
  302. package/tests/snap/tests/streams/on_frame.liq.snap +81 -23
  303. package/tests/snap/tests/streams/on_metadata.liq +0 -0
  304. package/tests/snap/tests/streams/on_metadata.liq.snap +103 -37
  305. package/tests/snap/tests/streams/on_track.liq +0 -0
  306. package/tests/snap/tests/streams/on_track.liq.snap +69 -18
  307. package/tests/snap/tests/streams/playlist-watch.liq +0 -0
  308. package/tests/snap/tests/streams/playlist-watch.liq.snap +195 -56
  309. package/tests/snap/tests/streams/radio.liq +0 -0
  310. package/tests/snap/tests/streams/radio.liq.snap +72 -17
  311. package/tests/snap/tests/streams/radio2.liq +0 -0
  312. package/tests/snap/tests/streams/radio2.liq.snap +143 -48
  313. package/tests/snap/tests/streams/random.liq +0 -0
  314. package/tests/snap/tests/streams/random.liq.snap +395 -171
  315. package/tests/snap/tests/streams/replaygain.liq +0 -0
  316. package/tests/snap/tests/streams/replaygain.liq.snap +62 -19
  317. package/tests/snap/tests/streams/request.liq +0 -0
  318. package/tests/snap/tests/streams/request.liq.snap +361 -145
  319. package/tests/snap/tests/streams/rotate.liq +0 -0
  320. package/tests/snap/tests/streams/rotate.liq.snap +421 -151
  321. package/tests/snap/tests/streams/say.liq +0 -0
  322. package/tests/snap/tests/streams/say.liq.snap +139 -32
  323. package/tests/snap/tests/streams/seek_track_map.liq.snap +143 -48
  324. package/tests/snap/tests/streams/sharing.liq +0 -0
  325. package/tests/snap/tests/streams/sharing.liq.snap +109 -25
  326. package/tests/snap/tests/streams/sine.detect.full_conv.liq +0 -0
  327. package/tests/snap/tests/streams/sine.detect.full_conv.liq.snap +127 -33
  328. package/tests/snap/tests/streams/sine.detect.liq +0 -0
  329. package/tests/snap/tests/streams/sine.detect.liq.snap +71 -20
  330. package/tests/snap/tests/streams/sine.detect.pcm_f32.liq +0 -0
  331. package/tests/snap/tests/streams/sine.detect.pcm_f32.liq.snap +95 -26
  332. package/tests/snap/tests/streams/sine.detect.pcm_s16.liq +0 -0
  333. package/tests/snap/tests/streams/sine.detect.pcm_s16.liq.snap +95 -26
  334. package/tests/snap/tests/streams/smart-crossfade.liq +0 -0
  335. package/tests/snap/tests/streams/smart-crossfade.liq.snap +101 -25
  336. package/tests/snap/tests/streams/srt_listen_callback.liq.snap +149 -38
  337. package/tests/snap/tests/streams/srt_multiple_outputs.liq.snap +146 -35
  338. package/tests/snap/tests/streams/srt_passphrase.liq.snap +92 -27
  339. package/tests/snap/tests/streams/srt_raw_pcm.liq.snap +134 -43
  340. package/tests/snap/tests/streams/stretch-clock-propagation.liq +0 -0
  341. package/tests/snap/tests/streams/stretch-clock-propagation.liq.snap +86 -20
  342. package/tests/snap/tests/test.liq +0 -0
@@ -0,0 +1,544 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Test runner for liquidsoap syntax highlighting
5
+ * Tokenizes .liq files and generates HTML reports
6
+ */
7
+
8
+ const fs = require("fs");
9
+ const path = require("path");
10
+ const vsctm = require("vscode-textmate");
11
+ const oniguruma = require("vscode-oniguruma");
12
+
13
+ const GRAMMAR_PATH = path.join(
14
+ __dirname,
15
+ "..",
16
+ "syntaxes",
17
+ "liquidsoap.tmLanguage.json"
18
+ );
19
+ const OUTPUT_DIR = path.join(__dirname, "output");
20
+ const SOURCE_DIRS = [
21
+ { dir: path.join(__dirname, "stdlib"), prefix: "stdlib" },
22
+ { dir: path.join(__dirname, "..", "tests", "snap", "tests"), prefix: "tests" },
23
+ ];
24
+ const ONIG_WASM_PATH = path.join(
25
+ __dirname,
26
+ "..",
27
+ "node_modules",
28
+ "vscode-oniguruma",
29
+ "release",
30
+ "onig.wasm"
31
+ );
32
+
33
+ // Scope to CSS class mapping
34
+ const SCOPE_COLORS = {
35
+ "keyword.control": { color: "#C586C0", name: "keyword" },
36
+ "keyword.operator": { color: "#D4D4D4", name: "operator" },
37
+ "keyword.other": { color: "#569CD6", name: "keyword-other" },
38
+ "entity.name.function": { color: "#DCDCAA", name: "function" },
39
+ "entity.name.method": { color: "#DCDCAA", name: "method" },
40
+ "storage.type": { color: "#4EC9B0", name: "type" },
41
+ "storage.modifier": { color: "#569CD6", name: "modifier" },
42
+ "constant.language": { color: "#569CD6", name: "constant" },
43
+ "constant.numeric": { color: "#B5CEA8", name: "number" },
44
+ "constant.character": { color: "#D7BA7D", name: "escape" },
45
+ "constant.time": { color: "#B5CEA8", name: "time" },
46
+ "string.quoted": { color: "#CE9178", name: "string" },
47
+ "string.regexp": { color: "#D16969", name: "regexp" },
48
+ "string.interpolation": { color: "#569CD6", name: "interpolation" },
49
+ "comment.line": { color: "#6A9955", name: "comment" },
50
+ "comment.block": { color: "#6A9955", name: "comment" },
51
+ "comment.doc": { color: "#608B4E", name: "doc-comment" },
52
+ "variable.parameter": { color: "#9CDCFE", name: "parameter" },
53
+ "variable.language": { color: "#9CDCFE", name: "variable-lang" },
54
+ "variable.encoder": { color: "#4FC1FF", name: "encoder" },
55
+ variable: { color: "#9CDCFE", name: "variable" },
56
+ "meta.function-call": { color: "#DCDCAA", name: "function-call" },
57
+ "meta.type-annotation": { color: "#4EC9B0", name: "type-annotation" },
58
+ "punctuation.comma": { color: "#D4D4D4", name: "punctuation" },
59
+ };
60
+
61
+ function getScopeStyle(scopes) {
62
+ for (const [scopePrefix, style] of Object.entries(SCOPE_COLORS)) {
63
+ for (const scope of scopes) {
64
+ if (scope.includes(scopePrefix)) {
65
+ return style;
66
+ }
67
+ }
68
+ }
69
+ return { color: "#D4D4D4", name: "default" };
70
+ }
71
+
72
+ function escapeHtml(text) {
73
+ return text
74
+ .replace(/&/g, "&")
75
+ .replace(/</g, "&lt;")
76
+ .replace(/>/g, "&gt;")
77
+ .replace(/"/g, "&quot;");
78
+ }
79
+
80
+ async function initGrammar() {
81
+ const wasmBin = fs.readFileSync(ONIG_WASM_PATH).buffer;
82
+ await oniguruma.loadWASM(wasmBin);
83
+
84
+ const registry = new vsctm.Registry({
85
+ onigLib: Promise.resolve({
86
+ createOnigScanner: (sources) => new oniguruma.OnigScanner(sources),
87
+ createOnigString: (str) => new oniguruma.OnigString(str),
88
+ }),
89
+ loadGrammar: async (scopeName) => {
90
+ if (scopeName === "source.liquidsoap") {
91
+ const grammarContent = fs.readFileSync(GRAMMAR_PATH, "utf8");
92
+ return vsctm.parseRawGrammar(grammarContent, GRAMMAR_PATH);
93
+ }
94
+ return null;
95
+ },
96
+ });
97
+
98
+ return registry.loadGrammar("source.liquidsoap");
99
+ }
100
+
101
+ function tokenizeFile(grammar, content) {
102
+ const lines = content.split("\n");
103
+ const result = [];
104
+ let ruleStack = vsctm.INITIAL;
105
+ const issues = [];
106
+
107
+ for (let i = 0; i < lines.length; i++) {
108
+ const line = lines[i];
109
+ const lineTokens = grammar.tokenizeLine(line, ruleStack);
110
+ const tokens = [];
111
+
112
+ for (const token of lineTokens.tokens) {
113
+ const text = line.substring(token.startIndex, token.endIndex);
114
+ const scopes = token.scopes;
115
+ tokens.push({ text, scopes, startIndex: token.startIndex });
116
+
117
+ // Check for potential issues
118
+ if (
119
+ scopes.length === 1 &&
120
+ scopes[0] === "source.liquidsoap" &&
121
+ text.trim().length > 0
122
+ ) {
123
+ // Check for known constructs that should be highlighted
124
+ const unmatched = checkUnmatchedConstruct(text.trim());
125
+ if (unmatched) {
126
+ issues.push({
127
+ line: i + 1,
128
+ text: text.trim(),
129
+ issue: unmatched,
130
+ });
131
+ }
132
+ }
133
+ }
134
+
135
+ result.push({ line: line, lineNumber: i + 1, tokens });
136
+ ruleStack = lineTokens.ruleStack;
137
+ }
138
+
139
+ return { lines: result, issues };
140
+ }
141
+
142
+ function checkUnmatchedConstruct(text) {
143
+ // Keywords that should be highlighted but might be missed
144
+ const keywords = [
145
+ "open",
146
+ "finally",
147
+ "yields",
148
+ "null",
149
+ "mod",
150
+ "%include",
151
+ "@flag",
152
+ "@docof",
153
+ ];
154
+
155
+ for (const kw of keywords) {
156
+ if (text === kw || text.startsWith(kw + " ") || text.startsWith(kw + "(")) {
157
+ return `Keyword '${kw}' not highlighted`;
158
+ }
159
+ }
160
+
161
+ // Check for dereference operator
162
+ if (/^![a-z_]/.test(text)) {
163
+ return "Dereference operator '!' not highlighted";
164
+ }
165
+
166
+ return null;
167
+ }
168
+
169
+ function generateLineHtml(lineData) {
170
+ const { line, lineNumber, tokens } = lineData;
171
+ let html = `<tr><td class="line-number">${lineNumber}</td><td class="code">`;
172
+
173
+ if (tokens.length === 0 || line.length === 0) {
174
+ html += "&nbsp;";
175
+ } else {
176
+ for (const token of tokens) {
177
+ const style = getScopeStyle(token.scopes);
178
+ const escapedText = escapeHtml(token.text);
179
+ const scopeTitle = token.scopes.join(" → ");
180
+ html += `<span class="token ${style.name}" style="color: ${style.color}" title="${escapeHtml(scopeTitle)}">${escapedText}</span>`;
181
+ }
182
+ }
183
+
184
+ html += "</td></tr>\n";
185
+ return html;
186
+ }
187
+
188
+ function generateFileHtml(filename, tokenResult) {
189
+ const { lines, issues } = tokenResult;
190
+
191
+ let html = `
192
+ <!DOCTYPE html>
193
+ <html lang="en">
194
+ <head>
195
+ <meta charset="UTF-8">
196
+ <title>${escapeHtml(filename)} - Syntax Highlight Test</title>
197
+ <style>
198
+ body {
199
+ font-family: 'Consolas', 'Monaco', 'Courier New', monospace;
200
+ background: #1E1E1E;
201
+ color: #D4D4D4;
202
+ margin: 0;
203
+ padding: 20px;
204
+ }
205
+ h1 {
206
+ color: #569CD6;
207
+ font-size: 18px;
208
+ border-bottom: 1px solid #333;
209
+ padding-bottom: 10px;
210
+ }
211
+ .file-info {
212
+ color: #808080;
213
+ font-size: 12px;
214
+ margin-bottom: 20px;
215
+ }
216
+ .issues {
217
+ background: #3E2A2A;
218
+ border: 1px solid #7D4040;
219
+ border-radius: 4px;
220
+ padding: 10px;
221
+ margin-bottom: 20px;
222
+ }
223
+ .issues h3 {
224
+ color: #F48771;
225
+ margin: 0 0 10px 0;
226
+ font-size: 14px;
227
+ }
228
+ .issues ul {
229
+ margin: 0;
230
+ padding-left: 20px;
231
+ }
232
+ .issues li {
233
+ color: #D4D4D4;
234
+ font-size: 12px;
235
+ margin: 4px 0;
236
+ }
237
+ table {
238
+ border-collapse: collapse;
239
+ width: 100%;
240
+ }
241
+ td {
242
+ padding: 0;
243
+ vertical-align: top;
244
+ }
245
+ .line-number {
246
+ color: #858585;
247
+ text-align: right;
248
+ padding-right: 16px;
249
+ width: 40px;
250
+ user-select: none;
251
+ border-right: 1px solid #333;
252
+ }
253
+ .code {
254
+ padding-left: 16px;
255
+ white-space: pre;
256
+ }
257
+ .token {
258
+ cursor: default;
259
+ }
260
+ tr:hover {
261
+ background: #2A2A2A;
262
+ }
263
+ .legend {
264
+ position: fixed;
265
+ top: 20px;
266
+ right: 20px;
267
+ background: #252526;
268
+ border: 1px solid #333;
269
+ border-radius: 4px;
270
+ padding: 10px;
271
+ font-size: 11px;
272
+ max-width: 200px;
273
+ }
274
+ .legend h4 {
275
+ margin: 0 0 8px 0;
276
+ color: #808080;
277
+ }
278
+ .legend-item {
279
+ margin: 4px 0;
280
+ }
281
+ </style>
282
+ </head>
283
+ <body>
284
+ <h1>${escapeHtml(filename)}</h1>
285
+ <div class="file-info">${lines.length} lines</div>
286
+ `;
287
+
288
+ if (issues.length > 0) {
289
+ html += `
290
+ <div class="issues">
291
+ <h3>⚠️ Potential Highlighting Issues (${issues.length})</h3>
292
+ <ul>
293
+ `;
294
+ for (const issue of issues.slice(0, 20)) {
295
+ html += ` <li>Line ${issue.line}: "${escapeHtml(issue.text)}" - ${escapeHtml(issue.issue)}</li>\n`;
296
+ }
297
+ if (issues.length > 20) {
298
+ html += ` <li>... and ${issues.length - 20} more</li>\n`;
299
+ }
300
+ html += ` </ul>
301
+ </div>
302
+ `;
303
+ }
304
+
305
+ html += `
306
+ <div class="legend">
307
+ <h4>Scope Colors</h4>
308
+ `;
309
+ for (const [scope, style] of Object.entries(SCOPE_COLORS).slice(0, 10)) {
310
+ html += ` <div class="legend-item"><span style="color: ${style.color}">■</span> ${scope}</div>\n`;
311
+ }
312
+ html += ` </div>
313
+
314
+ <table>
315
+ `;
316
+
317
+ for (const lineData of lines) {
318
+ html += generateLineHtml(lineData);
319
+ }
320
+
321
+ html += `
322
+ </table>
323
+ </body>
324
+ </html>
325
+ `;
326
+
327
+ return html;
328
+ }
329
+
330
+ function generateIndexHtml(files) {
331
+ let html = `
332
+ <!DOCTYPE html>
333
+ <html lang="en">
334
+ <head>
335
+ <meta charset="UTF-8">
336
+ <title>Liquidsoap Grammar Test Results</title>
337
+ <style>
338
+ body {
339
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
340
+ background: #1E1E1E;
341
+ color: #D4D4D4;
342
+ margin: 0;
343
+ padding: 20px;
344
+ max-width: 1200px;
345
+ margin: 0 auto;
346
+ }
347
+ h1 {
348
+ color: #569CD6;
349
+ border-bottom: 1px solid #333;
350
+ padding-bottom: 10px;
351
+ }
352
+ .summary {
353
+ background: #252526;
354
+ border: 1px solid #333;
355
+ border-radius: 4px;
356
+ padding: 20px;
357
+ margin-bottom: 20px;
358
+ }
359
+ .summary h2 {
360
+ margin-top: 0;
361
+ color: #4EC9B0;
362
+ }
363
+ .stat {
364
+ display: inline-block;
365
+ margin-right: 30px;
366
+ }
367
+ .stat-value {
368
+ font-size: 24px;
369
+ font-weight: bold;
370
+ color: #DCDCAA;
371
+ }
372
+ .stat-label {
373
+ font-size: 12px;
374
+ color: #808080;
375
+ }
376
+ .file-list {
377
+ list-style: none;
378
+ padding: 0;
379
+ }
380
+ .file-list li {
381
+ margin: 4px 0;
382
+ }
383
+ .file-list a {
384
+ color: #9CDCFE;
385
+ text-decoration: none;
386
+ }
387
+ .file-list a:hover {
388
+ text-decoration: underline;
389
+ }
390
+ .has-issues {
391
+ color: #F48771 !important;
392
+ }
393
+ .issue-count {
394
+ color: #808080;
395
+ font-size: 12px;
396
+ }
397
+ .section {
398
+ margin-top: 30px;
399
+ }
400
+ .section h3 {
401
+ color: #4EC9B0;
402
+ border-bottom: 1px solid #333;
403
+ padding-bottom: 5px;
404
+ }
405
+ </style>
406
+ </head>
407
+ <body>
408
+ <h1>Liquidsoap Grammar Test Results</h1>
409
+
410
+ <div class="summary">
411
+ <h2>Summary</h2>
412
+ <div class="stat">
413
+ <div class="stat-value">${files.length}</div>
414
+ <div class="stat-label">Files Tested</div>
415
+ </div>
416
+ <div class="stat">
417
+ <div class="stat-value">${files.filter((f) => f.issues > 0).length}</div>
418
+ <div class="stat-label">Files with Issues</div>
419
+ </div>
420
+ <div class="stat">
421
+ <div class="stat-value">${files.reduce((sum, f) => sum + f.issues, 0)}</div>
422
+ <div class="stat-label">Total Issues</div>
423
+ </div>
424
+ </div>
425
+
426
+ <div class="section">
427
+ <h3>Files with Issues</h3>
428
+ <ul class="file-list">
429
+ `;
430
+
431
+ const filesWithIssues = files.filter((f) => f.issues > 0);
432
+ if (filesWithIssues.length === 0) {
433
+ html += ` <li>No issues found!</li>\n`;
434
+ } else {
435
+ for (const file of filesWithIssues) {
436
+ html += ` <li><a href="${escapeHtml(file.htmlPath)}" class="has-issues">${escapeHtml(file.name)}</a> <span class="issue-count">(${file.issues} issues)</span></li>\n`;
437
+ }
438
+ }
439
+
440
+ html += `
441
+ </ul>
442
+ </div>
443
+
444
+ <div class="section">
445
+ <h3>All Files</h3>
446
+ <ul class="file-list">
447
+ `;
448
+
449
+ for (const file of files) {
450
+ const issueClass = file.issues > 0 ? ' class="has-issues"' : "";
451
+ const issueCount =
452
+ file.issues > 0
453
+ ? ` <span class="issue-count">(${file.issues} issues)</span>`
454
+ : "";
455
+ html += ` <li><a href="${escapeHtml(file.htmlPath)}"${issueClass}>${escapeHtml(file.name)}</a>${issueCount}</li>\n`;
456
+ }
457
+
458
+ html += `
459
+ </ul>
460
+ </div>
461
+ </body>
462
+ </html>
463
+ `;
464
+
465
+ return html;
466
+ }
467
+
468
+ function getAllLiqFiles(dir, basePath = "") {
469
+ const files = [];
470
+ for (const item of fs.readdirSync(dir)) {
471
+ const fullPath = path.join(dir, item);
472
+ const relativePath = path.join(basePath, item);
473
+ if (fs.statSync(fullPath).isDirectory()) {
474
+ files.push(...getAllLiqFiles(fullPath, relativePath));
475
+ } else if (item.endsWith(".liq")) {
476
+ files.push({ fullPath, relativePath });
477
+ }
478
+ }
479
+ return files;
480
+ }
481
+
482
+ async function main() {
483
+ console.log("Initializing grammar...");
484
+ const grammar = await initGrammar();
485
+
486
+ // Clean and create output directory
487
+ if (fs.existsSync(OUTPUT_DIR)) {
488
+ fs.rmSync(OUTPUT_DIR, { recursive: true });
489
+ }
490
+ fs.mkdirSync(OUTPUT_DIR, { recursive: true });
491
+
492
+ const fileResults = [];
493
+
494
+ for (const { dir, prefix } of SOURCE_DIRS) {
495
+ if (!fs.existsSync(dir)) {
496
+ console.log(`Skipping ${prefix}: directory not found`);
497
+ continue;
498
+ }
499
+
500
+ const liqFiles = getAllLiqFiles(dir);
501
+ console.log(`\nProcessing ${prefix}/ (${liqFiles.length} files)...\n`);
502
+
503
+ for (const { fullPath, relativePath } of liqFiles) {
504
+ const content = fs.readFileSync(fullPath, "utf8");
505
+ const tokenResult = tokenizeFile(grammar, content);
506
+
507
+ const prefixedPath = path.join(prefix, relativePath);
508
+ const outputPath = path.join(
509
+ OUTPUT_DIR,
510
+ prefixedPath.replace(".liq", ".html")
511
+ );
512
+ const outputDir = path.dirname(outputPath);
513
+ fs.mkdirSync(outputDir, { recursive: true });
514
+
515
+ const html = generateFileHtml(prefixedPath, tokenResult);
516
+ fs.writeFileSync(outputPath, html, "utf8");
517
+
518
+ const issueCount = tokenResult.issues.length;
519
+ const status = issueCount > 0 ? `⚠️ ${issueCount} issues` : "✓";
520
+ console.log(` ${status.padEnd(15)} ${prefixedPath}`);
521
+
522
+ fileResults.push({
523
+ name: prefixedPath,
524
+ htmlPath: prefixedPath.replace(".liq", ".html"),
525
+ issues: issueCount,
526
+ });
527
+ }
528
+ }
529
+
530
+ // Generate index
531
+ const indexHtml = generateIndexHtml(fileResults);
532
+ fs.writeFileSync(path.join(OUTPUT_DIR, "index.html"), indexHtml, "utf8");
533
+
534
+ console.log(`\n${"─".repeat(60)}`);
535
+ console.log(`Results: ${OUTPUT_DIR}/index.html`);
536
+ console.log(
537
+ `Files with issues: ${fileResults.filter((f) => f.issues > 0).length}/${fileResults.length}`
538
+ );
539
+ }
540
+
541
+ main().catch((err) => {
542
+ console.error("Error:", err);
543
+ process.exit(1);
544
+ });
@@ -401,7 +401,8 @@
401
401
  # ^^^^^ source.liquidsoap meta.function-call.liquidsoap variable.method.liquidsoap
402
402
  # ^ source.liquidsoap meta.function-call.liquidsoap keyword.other.liquidsoap
403
403
  # ^^^^^^^ source.liquidsoap meta.function-call.liquidsoap variable.method.liquidsoap
404
- # ^^ source.liquidsoap meta.function-call.liquidsoap
404
+ # ^ source.liquidsoap meta.function-call.liquidsoap
405
+ # ^ source.liquidsoap meta.function-call.liquidsoap keyword.operator.dereference.liquidsoap
405
406
  # ^^ source.liquidsoap meta.function-call.liquidsoap variable.liquidsoap
406
407
  # ^ source.liquidsoap meta.function-call.liquidsoap
407
408
  # ^ source.liquidsoap meta.function-call.liquidsoap
@@ -469,7 +470,8 @@
469
470
  # ^^^^^ source.liquidsoap meta.function-call.liquidsoap meta.function-call.liquidsoap meta.function-call.liquidsoap variable.method.liquidsoap
470
471
  # ^ source.liquidsoap meta.function-call.liquidsoap meta.function-call.liquidsoap meta.function-call.liquidsoap keyword.other.liquidsoap
471
472
  # ^^^^^^^ source.liquidsoap meta.function-call.liquidsoap meta.function-call.liquidsoap meta.function-call.liquidsoap variable.method.liquidsoap
472
- # ^^ source.liquidsoap meta.function-call.liquidsoap meta.function-call.liquidsoap meta.function-call.liquidsoap
473
+ # ^ source.liquidsoap meta.function-call.liquidsoap meta.function-call.liquidsoap meta.function-call.liquidsoap
474
+ # ^ source.liquidsoap meta.function-call.liquidsoap meta.function-call.liquidsoap meta.function-call.liquidsoap keyword.operator.dereference.liquidsoap
473
475
  # ^^ source.liquidsoap meta.function-call.liquidsoap meta.function-call.liquidsoap meta.function-call.liquidsoap variable.liquidsoap
474
476
  # ^ source.liquidsoap meta.function-call.liquidsoap meta.function-call.liquidsoap meta.function-call.liquidsoap
475
477
  # ^ source.liquidsoap meta.function-call.liquidsoap meta.function-call.liquidsoap meta.function-call.liquidsoap
@@ -538,7 +540,8 @@
538
540
  # ^^^^^ source.liquidsoap meta.function-call.liquidsoap variable.method.liquidsoap
539
541
  # ^ source.liquidsoap meta.function-call.liquidsoap keyword.other.liquidsoap
540
542
  # ^^^^ source.liquidsoap meta.function-call.liquidsoap variable.method.liquidsoap
541
- # ^^ source.liquidsoap meta.function-call.liquidsoap
543
+ # ^ source.liquidsoap meta.function-call.liquidsoap
544
+ # ^ source.liquidsoap meta.function-call.liquidsoap keyword.operator.dereference.liquidsoap
542
545
  # ^^ source.liquidsoap meta.function-call.liquidsoap variable.liquidsoap
543
546
  # ^ source.liquidsoap meta.function-call.liquidsoap
544
547
  # ^ source.liquidsoap meta.function-call.liquidsoap
@@ -1468,7 +1471,8 @@
1468
1471
  # ^^^^^ source.liquidsoap meta.function-call.liquidsoap variable.method.liquidsoap
1469
1472
  # ^ source.liquidsoap meta.function-call.liquidsoap keyword.other.liquidsoap
1470
1473
  # ^^^^ source.liquidsoap meta.function-call.liquidsoap variable.method.liquidsoap
1471
- # ^^ source.liquidsoap meta.function-call.liquidsoap
1474
+ # ^ source.liquidsoap meta.function-call.liquidsoap
1475
+ # ^ source.liquidsoap meta.function-call.liquidsoap keyword.operator.dereference.liquidsoap
1472
1476
  # ^^ source.liquidsoap meta.function-call.liquidsoap variable.liquidsoap
1473
1477
  # ^ source.liquidsoap meta.function-call.liquidsoap
1474
1478
  # ^ source.liquidsoap meta.function-call.liquidsoap
@@ -1993,7 +1997,8 @@
1993
1997
  # ^^^^^^ source.liquidsoap meta.function-call.liquidsoap variable.method.liquidsoap
1994
1998
  # ^ source.liquidsoap meta.function-call.liquidsoap keyword.other.liquidsoap
1995
1999
  # ^^^ source.liquidsoap meta.function-call.liquidsoap variable.method.liquidsoap
1996
- # ^^ source.liquidsoap meta.function-call.liquidsoap
2000
+ # ^ source.liquidsoap meta.function-call.liquidsoap
2001
+ # ^ source.liquidsoap meta.function-call.liquidsoap keyword.operator.dereference.liquidsoap
1997
2002
  # ^^ source.liquidsoap meta.function-call.liquidsoap variable.liquidsoap
1998
2003
  # ^ source.liquidsoap meta.function-call.liquidsoap
1999
2004
  # ^ source.liquidsoap meta.function-call.liquidsoap
@@ -2096,7 +2101,8 @@
2096
2101
  # ^^^^^ source.liquidsoap meta.function-call.liquidsoap variable.method.liquidsoap
2097
2102
  # ^ source.liquidsoap meta.function-call.liquidsoap keyword.other.liquidsoap
2098
2103
  # ^^^^^^^ source.liquidsoap meta.function-call.liquidsoap variable.method.liquidsoap
2099
- # ^^ source.liquidsoap meta.function-call.liquidsoap
2104
+ # ^ source.liquidsoap meta.function-call.liquidsoap
2105
+ # ^ source.liquidsoap meta.function-call.liquidsoap keyword.operator.dereference.liquidsoap
2100
2106
  # ^^ source.liquidsoap meta.function-call.liquidsoap variable.liquidsoap
2101
2107
  # ^ source.liquidsoap meta.function-call.liquidsoap
2102
2108
  # ^ source.liquidsoap meta.function-call.liquidsoap
@@ -2203,7 +2209,8 @@
2203
2209
  # ^^ source.liquidsoap meta.function-call.liquidsoap variable.method.liquidsoap
2204
2210
  # ^ source.liquidsoap meta.function-call.liquidsoap keyword.other.liquidsoap
2205
2211
  # ^^^^^^ source.liquidsoap meta.function-call.liquidsoap variable.method.liquidsoap
2206
- # ^^ source.liquidsoap meta.function-call.liquidsoap
2212
+ # ^ source.liquidsoap meta.function-call.liquidsoap
2213
+ # ^ source.liquidsoap meta.function-call.liquidsoap keyword.operator.dereference.liquidsoap
2207
2214
  # ^^ source.liquidsoap meta.function-call.liquidsoap variable.liquidsoap
2208
2215
  # ^ source.liquidsoap meta.function-call.liquidsoap
2209
2216
  # ^ source.liquidsoap meta.function-call.liquidsoap
@@ -2314,7 +2321,8 @@
2314
2321
  # ^^ source.liquidsoap meta.function-call.liquidsoap variable.method.liquidsoap
2315
2322
  # ^ source.liquidsoap meta.function-call.liquidsoap keyword.other.liquidsoap
2316
2323
  # ^^^^^^ source.liquidsoap meta.function-call.liquidsoap variable.method.liquidsoap
2317
- # ^^ source.liquidsoap meta.function-call.liquidsoap
2324
+ # ^ source.liquidsoap meta.function-call.liquidsoap
2325
+ # ^ source.liquidsoap meta.function-call.liquidsoap keyword.operator.dereference.liquidsoap
2318
2326
  # ^^ source.liquidsoap meta.function-call.liquidsoap variable.liquidsoap
2319
2327
  # ^ source.liquidsoap meta.function-call.liquidsoap
2320
2328
  # ^ source.liquidsoap meta.function-call.liquidsoap
@@ -2429,7 +2437,8 @@
2429
2437
  # ^^^^^ source.liquidsoap meta.function-call.liquidsoap variable.method.liquidsoap
2430
2438
  # ^ source.liquidsoap meta.function-call.liquidsoap keyword.other.liquidsoap
2431
2439
  # ^^^^^^^^^^ source.liquidsoap meta.function-call.liquidsoap variable.method.liquidsoap
2432
- # ^^ source.liquidsoap meta.function-call.liquidsoap
2440
+ # ^ source.liquidsoap meta.function-call.liquidsoap
2441
+ # ^ source.liquidsoap meta.function-call.liquidsoap keyword.operator.dereference.liquidsoap
2433
2442
  # ^^ source.liquidsoap meta.function-call.liquidsoap variable.liquidsoap
2434
2443
  # ^ source.liquidsoap meta.function-call.liquidsoap
2435
2444
  # ^ source.liquidsoap meta.function-call.liquidsoap
@@ -2479,7 +2488,8 @@
2479
2488
  # ^^^^^ source.liquidsoap meta.function-call.liquidsoap meta.function-call.liquidsoap variable.method.liquidsoap
2480
2489
  # ^ source.liquidsoap meta.function-call.liquidsoap meta.function-call.liquidsoap keyword.other.liquidsoap
2481
2490
  # ^^^^^^^^^^ source.liquidsoap meta.function-call.liquidsoap meta.function-call.liquidsoap variable.method.liquidsoap
2482
- # ^^ source.liquidsoap meta.function-call.liquidsoap meta.function-call.liquidsoap
2491
+ # ^ source.liquidsoap meta.function-call.liquidsoap meta.function-call.liquidsoap
2492
+ # ^ source.liquidsoap meta.function-call.liquidsoap meta.function-call.liquidsoap keyword.operator.dereference.liquidsoap
2483
2493
  # ^^ source.liquidsoap meta.function-call.liquidsoap meta.function-call.liquidsoap variable.liquidsoap
2484
2494
  # ^ source.liquidsoap meta.function-call.liquidsoap meta.function-call.liquidsoap
2485
2495
  # ^ source.liquidsoap meta.function-call.liquidsoap meta.function-call.liquidsoap
@@ -532,7 +532,9 @@
532
532
  # ^^^^^^^^^^^^^^ source.liquidsoap comment.line.number-sign.liquidsoap
533
533
  ># @flag hidden
534
534
  #^ source.liquidsoap comment.line.number-sign.liquidsoap
535
- # ^^^^^^^^^^^^^ source.liquidsoap comment.line.number-sign.liquidsoap
535
+ # ^ source.liquidsoap comment.line.number-sign.liquidsoap
536
+ # ^^^^^ source.liquidsoap comment.line.number-sign.liquidsoap comment.doc.flag.liquidsoap
537
+ # ^^^^^^^ source.liquidsoap comment.line.number-sign.liquidsoap
536
538
  >def fade.scale(~id="fade.scale", x, s)
537
539
  #^^^ source.liquidsoap keyword.other.function.definition.liquidsoap
538
540
  # ^ source.liquidsoap