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.
- package/.github/workflows/check-formatting.yml +32 -0
- package/README.md +31 -5
- package/package.json +1 -1
- package/src/cli.js +104 -9
- package/tests/liq/audio.liq +460 -0
- package/tests/liq/autocue.liq +1081 -0
- package/tests/liq/clock.liq +14 -0
- package/tests/liq/cron.liq +74 -0
- package/tests/liq/error.liq +48 -0
- package/tests/liq/extra/audio.liq +677 -0
- package/tests/liq/extra/audioscrobbler.liq +482 -0
- package/tests/liq/extra/deprecations.liq +976 -0
- package/tests/liq/extra/externals.liq +196 -0
- package/tests/liq/extra/fades.liq +260 -0
- package/tests/liq/extra/file.liq +66 -0
- package/tests/liq/extra/http.liq +160 -0
- package/tests/liq/extra/interactive.liq +917 -0
- package/tests/liq/extra/metadata.liq +75 -0
- package/tests/liq/extra/native.liq +201 -0
- package/tests/liq/extra/openai.liq +150 -0
- package/tests/liq/extra/server.liq +177 -0
- package/tests/liq/extra/source.liq +476 -0
- package/tests/liq/extra/spinitron.liq +272 -0
- package/tests/liq/extra/telnet.liq +266 -0
- package/tests/liq/extra/video.liq +59 -0
- package/tests/liq/extra/visualization.liq +68 -0
- package/tests/liq/fades.liq +941 -0
- package/tests/liq/ffmpeg.liq +605 -0
- package/tests/liq/file.liq +387 -0
- package/tests/liq/getter.liq +74 -0
- package/tests/liq/hls.liq +329 -0
- package/tests/liq/http.liq +1048 -0
- package/tests/liq/http_codes.liq +447 -0
- package/tests/liq/icecast.liq +58 -0
- package/tests/liq/io.liq +106 -0
- package/tests/liq/liquidsoap.liq +31 -0
- package/tests/liq/list.liq +440 -0
- package/tests/liq/log.liq +47 -0
- package/tests/liq/lufs.liq +295 -0
- package/tests/liq/math.liq +23 -0
- package/tests/liq/medialib.liq +752 -0
- package/tests/liq/metadata.liq +253 -0
- package/tests/liq/nfo.liq +258 -0
- package/tests/liq/null.liq +71 -0
- package/tests/liq/playlist.liq +1347 -0
- package/tests/liq/predicate.liq +106 -0
- package/tests/liq/process.liq +93 -0
- package/tests/liq/profiler.liq +5 -0
- package/tests/liq/protocols.liq +1139 -0
- package/tests/liq/ref.liq +28 -0
- package/tests/liq/replaygain.liq +135 -0
- package/tests/liq/request.liq +467 -0
- package/tests/liq/resolvers.liq +33 -0
- package/tests/liq/runtime.liq +70 -0
- package/tests/liq/server.liq +99 -0
- package/tests/liq/settings.liq +41 -0
- package/tests/liq/socket.liq +33 -0
- package/tests/liq/source.liq +362 -0
- package/tests/liq/sqlite.liq +161 -0
- package/tests/liq/stdlib.liq +172 -0
- package/tests/liq/string.liq +476 -0
- package/tests/liq/switches.liq +197 -0
- package/tests/liq/testing.liq +37 -0
- package/tests/liq/thread.liq +161 -0
- package/tests/liq/tracks.liq +100 -0
- package/tests/liq/utils.liq +81 -0
- 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
|