liquidsoap-prettier 1.8.2 → 1.8.3

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 (67) hide show
  1. package/.github/workflows/check-formatting.yml +32 -0
  2. package/README.md +31 -5
  3. package/package.json +1 -1
  4. package/src/cli.js +104 -9
  5. package/tests/liq/audio.liq +460 -0
  6. package/tests/liq/autocue.liq +1081 -0
  7. package/tests/liq/clock.liq +14 -0
  8. package/tests/liq/cron.liq +74 -0
  9. package/tests/liq/error.liq +48 -0
  10. package/tests/liq/extra/audio.liq +677 -0
  11. package/tests/liq/extra/audioscrobbler.liq +482 -0
  12. package/tests/liq/extra/deprecations.liq +976 -0
  13. package/tests/liq/extra/externals.liq +196 -0
  14. package/tests/liq/extra/fades.liq +260 -0
  15. package/tests/liq/extra/file.liq +66 -0
  16. package/tests/liq/extra/http.liq +160 -0
  17. package/tests/liq/extra/interactive.liq +917 -0
  18. package/tests/liq/extra/metadata.liq +75 -0
  19. package/tests/liq/extra/native.liq +201 -0
  20. package/tests/liq/extra/openai.liq +150 -0
  21. package/tests/liq/extra/server.liq +177 -0
  22. package/tests/liq/extra/source.liq +476 -0
  23. package/tests/liq/extra/spinitron.liq +272 -0
  24. package/tests/liq/extra/telnet.liq +266 -0
  25. package/tests/liq/extra/video.liq +59 -0
  26. package/tests/liq/extra/visualization.liq +68 -0
  27. package/tests/liq/fades.liq +941 -0
  28. package/tests/liq/ffmpeg.liq +605 -0
  29. package/tests/liq/file.liq +387 -0
  30. package/tests/liq/getter.liq +74 -0
  31. package/tests/liq/hls.liq +329 -0
  32. package/tests/liq/http.liq +1048 -0
  33. package/tests/liq/http_codes.liq +447 -0
  34. package/tests/liq/icecast.liq +58 -0
  35. package/tests/liq/io.liq +106 -0
  36. package/tests/liq/liquidsoap.liq +31 -0
  37. package/tests/liq/list.liq +440 -0
  38. package/tests/liq/log.liq +47 -0
  39. package/tests/liq/lufs.liq +295 -0
  40. package/tests/liq/math.liq +23 -0
  41. package/tests/liq/medialib.liq +752 -0
  42. package/tests/liq/metadata.liq +253 -0
  43. package/tests/liq/nfo.liq +258 -0
  44. package/tests/liq/null.liq +71 -0
  45. package/tests/liq/playlist.liq +1347 -0
  46. package/tests/liq/predicate.liq +106 -0
  47. package/tests/liq/process.liq +93 -0
  48. package/tests/liq/profiler.liq +5 -0
  49. package/tests/liq/protocols.liq +1139 -0
  50. package/tests/liq/ref.liq +28 -0
  51. package/tests/liq/replaygain.liq +135 -0
  52. package/tests/liq/request.liq +467 -0
  53. package/tests/liq/resolvers.liq +33 -0
  54. package/tests/liq/runtime.liq +70 -0
  55. package/tests/liq/server.liq +99 -0
  56. package/tests/liq/settings.liq +41 -0
  57. package/tests/liq/socket.liq +33 -0
  58. package/tests/liq/source.liq +362 -0
  59. package/tests/liq/sqlite.liq +161 -0
  60. package/tests/liq/stdlib.liq +172 -0
  61. package/tests/liq/string.liq +476 -0
  62. package/tests/liq/switches.liq +197 -0
  63. package/tests/liq/testing.liq +37 -0
  64. package/tests/liq/thread.liq +161 -0
  65. package/tests/liq/tracks.liq +100 -0
  66. package/tests/liq/utils.liq +81 -0
  67. package/tests/liq/video.liq +918 -0
@@ -0,0 +1,106 @@
1
+ predicate = ()
2
+
3
+ # Detect when a predicate becomes true.
4
+ # @category Programming
5
+ # @param ~init Detect at beginning.
6
+ # @param p Predicate.
7
+ def predicate.activates(~init=false, p) =
8
+ last = ref(not init)
9
+ fun () ->
10
+ begin
11
+ cur = p()
12
+ ans = (not last()) and cur
13
+ last := cur
14
+ ans
15
+ end
16
+ end
17
+
18
+ # Become true once every time a predicate is true.
19
+ # @category Programming
20
+ # @param p Predicate.
21
+ def predicate.once(p) =
22
+ predicate.activates(init=true, p)
23
+ end
24
+
25
+ # Limit the number of times a predicate is true is a row.
26
+ # @category Programming
27
+ # @param n Number of times the predicate is allowed to be true.
28
+ # @param p Predicate.
29
+ def predicate.at_most(n, p) =
30
+ k = ref(0)
31
+ fun () ->
32
+ begin
33
+ if
34
+ p()
35
+ then
36
+ ref.incr(k)
37
+ k() <= n
38
+ else
39
+ k := 0
40
+ false
41
+ end
42
+ end
43
+ end
44
+
45
+ # Detect when a predicate changes.
46
+ # @category Programming
47
+ # @param p Predicate.
48
+ def predicate.changes(p) =
49
+ last = ref(p())
50
+ fun () ->
51
+ begin
52
+ cur = p()
53
+ ans = (cur != last())
54
+ last := cur
55
+ ans
56
+ end
57
+ end
58
+
59
+ # First occurrence of a predicate.
60
+ # @category Programming
61
+ # @param p Predicate.
62
+ def predicate.first(p) =
63
+ done = ref(false)
64
+ fun () ->
65
+ begin
66
+ if
67
+ done()
68
+ then
69
+ false
70
+ else
71
+ if
72
+ p()
73
+ then
74
+ done := true
75
+ true
76
+ else
77
+ false
78
+ end
79
+ end
80
+ end
81
+ end
82
+
83
+ # Predicate which is true when a signal is sent. The returned predicate has a
84
+ # method `signal` to send the signal.
85
+ # @category Programming
86
+ # @method signal Send a signal.
87
+ def predicate.signal() =
88
+ state = ref(false)
89
+
90
+ def signal() =
91
+ state := true
92
+ end
93
+
94
+ def p() =
95
+ if
96
+ state()
97
+ then
98
+ state := false
99
+ true
100
+ else
101
+ false
102
+ end
103
+ end
104
+
105
+ p.{signal = signal}
106
+ end
@@ -0,0 +1,93 @@
1
+ # Perform a shell call and return its output.
2
+ # @category System
3
+ # @param ~timeout Cancel process after `timeout` has elapsed. Ignored if negative.
4
+ # @param ~env Process environment
5
+ # @param ~inherit_env Inherit calling process's environment when `env` parameter is empty.
6
+ # @param ~log_errors Log details if the command does not return 0.
7
+ # @param command Command to run
8
+ def process.read(
9
+ ~timeout=(-1.),
10
+ ~env=[],
11
+ ~inherit_env=true,
12
+ ~log_errors=true,
13
+ command
14
+ ) =
15
+ p = process.run(timeout=timeout, env=env, inherit_env=inherit_env, command)
16
+ if
17
+ log_errors and (p.status != "exit" or p.status.code != 0)
18
+ then
19
+ log.important(
20
+ "Failed to execute `#{command}`: #{p.status} (#{p.status.code}) #{
21
+ p.stdout
22
+ } #{p.stderr}"
23
+ )
24
+ end
25
+
26
+ p.stdout
27
+ end
28
+
29
+ # Perform a shell call and return the list of its output lines.
30
+ # @category System
31
+ # @param ~timeout Cancel process after `timeout` has elapsed. Ignored if negative.
32
+ # @param ~env Process environment
33
+ # @param ~inherit_env Inherit calling process's environment when `env` parameter is empty.
34
+ # @param ~log_errors Log details if the command does not return 0.
35
+ # @param command Command to run
36
+ def process.read.lines(
37
+ ~timeout=(-1.),
38
+ ~env=[],
39
+ ~inherit_env=true,
40
+ ~log_errors=true,
41
+ command
42
+ ) =
43
+ s =
44
+ process.read(
45
+ timeout=timeout,
46
+ env=env,
47
+ inherit_env=inherit_env,
48
+ log_errors=log_errors,
49
+ command
50
+ )
51
+
52
+ r/\r?\n/.split(s)
53
+ end
54
+
55
+ # Return true if process exited with 0 code.
56
+ # @category System
57
+ # @param ~timeout Cancel process after `timeout` has elapsed. Ignored if negative.
58
+ # @param ~env Process environment
59
+ # @param ~inherit_env Inherit calling process's environment when `env` parameter is empty.
60
+ # @param command Command to test
61
+ def process.test(~timeout=(-1.), ~env=[], ~inherit_env=true, command) =
62
+ p = process.run(timeout=timeout, env=env, inherit_env=inherit_env, command)
63
+ p.status == "exit" and p.status.code == 0
64
+ end
65
+
66
+ # Read some value from standard input (console).
67
+ # @category System
68
+ # @param ~hide Hide typed characters (for passwords).
69
+ def read(~hide=false) =
70
+ if
71
+ hide
72
+ then
73
+ process.run(
74
+ "stty -echo"
75
+ )
76
+ end
77
+ s =
78
+ list.hd(
79
+ default="",
80
+ process.read.lines(
81
+ "read BLA && echo $BLA"
82
+ )
83
+ )
84
+ if
85
+ hide
86
+ then
87
+ process.run(
88
+ "stty echo"
89
+ )
90
+ end
91
+ print("")
92
+ s
93
+ end
@@ -0,0 +1,5 @@
1
+ # Print profiling information.
2
+ # @category Liquidsoap
3
+ def profiler.print() =
4
+ print(profiler.stats.string())
5
+ end