Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add typeof #4037

Open
wants to merge 180 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
180 commits
Select commit Hold shift + click to select a range
6780500
First stab.
toots Jul 18, 2024
b60d940
Fix json export.
toots Jul 18, 2024
4a354ed
First test.
toots Jul 18, 2024
94d6c46
Include default env.
toots Jul 18, 2024
58918a6
Cleanup.
toots Jul 18, 2024
a881f15
Bump pre-commit.
toots Jul 18, 2024
b9731ef
Simplify.
toots Jul 19, 2024
ca01fa8
Merge remote-tracking branch 'origin/main' into typeof
toots Jul 19, 2024
f25e853
Merge remote-tracking branch 'origin/main' into typeof
toots Jul 19, 2024
c775891
Merge remote-tracking branch 'origin/main' into typeof
toots Jul 19, 2024
7f78f14
Merge branch 'main' into typeof
toots Aug 20, 2024
d05ed54
Add top-level insert_tag. (#4101)
toots Aug 20, 2024
8324350
Saturn upper bound.
toots Aug 24, 2024
da547e2
Make frame slice be really at most. (#4104)
toots Aug 24, 2024
2c1da6c
Improve normalize_url option.
toots Aug 25, 2024
eede683
Improve.
toots Aug 25, 2024
e9af0ee
Take encoding into account in `string` functions. (#4111)
toots Aug 25, 2024
4002b0b
Generate cache during package install (#4113)
toots Aug 26, 2024
04d7bfd
switch: don't select the same source twice. (#4108)
toots Aug 26, 2024
16e3d46
Add regression test for #4116 (#4120)
toots Sep 2, 2024
eaaddd3
fix typo habor -> harbor (#4121)
fetsorn Sep 4, 2024
ff1ffc3
Fix test.fail calls. (#4129)
toots Sep 12, 2024
588b312
Fix #4124 (#4132)
toots Sep 13, 2024
bfb4b98
Dynamic source tracks. (#4128)
toots Sep 13, 2024
065bb7e
Prioritize, use file decoders file extensions when computing request …
toots Sep 14, 2024
027f566
Expand HLS segment name metadata (#4135)
toots Sep 15, 2024
be06ea1
Add metadata.parse.amplify.
toots Sep 15, 2024
a1e31ca
Default to decibel values.
toots Sep 15, 2024
3a0dcc4
Update ROADMAP.md
toots Sep 20, 2024
da5892e
Format ROADMAP.md
toots Sep 21, 2024
18a3c8c
Build with vx.y.z-*
toots Sep 21, 2024
89dd891
Update to latest TLS API. (#4141)
toots Sep 24, 2024
6529d37
Keep builtins at runtime (#4142)
toots Sep 24, 2024
b17848d
Fix call to `string.length` (#4145)
toots Sep 27, 2024
e6d1cf4
Fix pre-commit.
toots Sep 27, 2024
94bd991
Change the default amplify behavior in autocue.
toots Sep 28, 2024
3490485
Initialize ffmpeg filter input clocks as passive clocks. (#4146)
toots Sep 28, 2024
73754f6
Move doc generation to liquidsoap package, add pandoc and pandoc-include
toots Sep 28, 2024
3d1efb5
bump number of queues.
toots Sep 29, 2024
e498aa8
Set thread names. (#4148)
toots Sep 30, 2024
86ea361
Cleanup thread name code. (#4150)
toots Sep 30, 2024
c31fd7c
Fix append operator. (#4152)
toots Oct 1, 2024
4a5f888
Add generic thread queues, use them to implement autocue-specific que…
toots Oct 2, 2024
1267230
Update threads.md
toots Oct 2, 2024
5e1bffa
Fix formatting.
toots Oct 2, 2024
37870b3
Add method to return the sequence's current queue.
toots Oct 3, 2024
c15b3c1
Log.
toots Oct 3, 2024
b3fce2f
Cleanup source.dynamic, fix `append` (#4156)
toots Oct 4, 2024
1bbd026
Add spinitron API functions. (#4158)
toots Oct 7, 2024
b1a3067
Disable logs when values are zero, treat them as explicit disabled
toots Oct 7, 2024
810da01
Print positions in this log.
toots Oct 7, 2024
bf25a0d
Fix `blank.strip` (#4164)
toots Oct 8, 2024
cd6da13
FFmpeg filters: keep value in TS unit, move time-based values to `_time`
toots Oct 8, 2024
fa6120d
Add warning about frame duration in autocue/ebur128 filter.
toots Oct 9, 2024
6ec7041
Add request.duration.<decoder>, use it to get a precise duration in
toots Oct 9, 2024
e3a313f
Reuse initial request.duration.
toots Oct 9, 2024
b51adac
Better log.
toots Oct 10, 2024
ed6b33e
Reset last metadata on new track by default (#4166)
toots Oct 10, 2024
ff197c7
Add macos_say. (#4167)
toots Oct 10, 2024
9f19af1
Fix append logic (#4169)
toots Oct 11, 2024
b2ce54f
Revert "FFmpeg filters: keep value in TS unit, move time-based values…
toots Oct 11, 2024
71dc78f
Make sure we test for reselection when `source.dynamic` callback retu…
toots Oct 12, 2024
8aaaac5
Make pulseaudio input and output resilient to errors. (#4174)
toots Oct 13, 2024
5aa7c5c
Update README.md
toots Oct 13, 2024
6ec8b85
Catch and report exceptions raised when removing inotify handlers.
toots Oct 13, 2024
f81ddf7
Add liq_disable_autocue to the list of metadata used to disable autocue.
toots Oct 13, 2024
b1ad9fb
Fix this.
toots Oct 13, 2024
936ba19
Allow nested static request (#4175)
toots Oct 14, 2024
ac07f75
Fix logic.
toots Oct 14, 2024
2ebece6
Also mark last try when closing on error.
toots Oct 14, 2024
15ed3c9
Add debugging log.
toots Oct 14, 2024
5acc01e
Better.
toots Oct 14, 2024
dab14b2
Check if before source is ready in crossfade before returning it. (#4…
toots Oct 15, 2024
8392d18
Pulseaudio IO: use stream to control latency, not device!
toots Oct 16, 2024
8507406
Don't run automatic autocue when override metadata is detected.
toots Oct 16, 2024
624a57a
Use gettimeofday.
toots Oct 16, 2024
d2028d3
Remove log.
toots Oct 16, 2024
ba752fa
Better logging and doc.
toots Oct 16, 2024
c8c6650
Introducing Liquidsoap Guru on Gurubase.io (#4178)
kursataktas Oct 18, 2024
adaf6f0
Better doc.
toots Oct 20, 2024
a59e5b2
Prevent initializing stereotool with two different libraries. (#4182)
toots Oct 20, 2024
e0d80bb
Force string type.
toots Oct 21, 2024
7387b07
Add missing deps.
toots Oct 21, 2024
0705edb
Backport autocue improvements from 2.2.x (#4184)
toots Oct 23, 2024
fadb211
Change default values for fade out type and autocue loudness target (…
RM-FM Oct 24, 2024
8063c40
Show error message once for native fonts. (#4191)
smimram Oct 25, 2024
e223a4f
Fix tracks runtime type check. (#4193)
toots Oct 26, 2024
1477db3
Cleanup inotify watch when garbage collected.
toots Oct 27, 2024
2502e48
Set ratio to 70x
toots Oct 28, 2024
461b404
No TODO here.
toots Oct 28, 2024
f906abe
Add global request timeout setting. (#4196)
toots Oct 29, 2024
0117201
Add LIQ_COMPACT_AFTER_TYPECHECK
toots Oct 29, 2024
cc5b179
Add init.compact_before_start.
toots Oct 29, 2024
cb27b12
Experimental NDI output (#4181)
toots Oct 30, 2024
ebb8f27
Restore memetrace build config.
toots Oct 31, 2024
c0022f4
Prevent error here.
toots Oct 31, 2024
8205fb4
Don't retain passive clocks at top-level (#4198)
toots Nov 1, 2024
28a1d7e
Single: always return a fresh source. (#4200)
toots Nov 3, 2024
c4f2cd2
Better source telnet commands. (#4206)
toots Nov 9, 2024
2128d4b
Factor out source.dump/source.drop (#4207)
toots Nov 9, 2024
1516a22
Force sleep.
toots Nov 9, 2024
f7100ca
Make it possible to disable command registration in playlist, switch
toots Nov 10, 2024
266fea4
Don't run flush_source if scheduler is not started.
toots Nov 11, 2024
8a69deb
Make set_thread_name future proof.
toots Nov 11, 2024
8d85011
Get rid of stdlib wrapper.
toots Nov 11, 2024
e2a0c13
Remove this.
toots Nov 15, 2024
f761e12
Revert "Remove this."
toots Nov 15, 2024
fc75ffe
Factor out Http auth parse logic, test it. (#4211)
toots Nov 18, 2024
80e1cdd
Fix override implementation logic.
toots Nov 18, 2024
7193d68
Strip implicit tracks when evaluating values. (#4212)
toots Nov 18, 2024
d1ecc38
Update log.
toots Nov 18, 2024
138851d
Add global meta setting to amplify. (#4213)
toots Nov 19, 2024
75197d5
Remove this.
toots Nov 19, 2024
aeb88ca
Better clock filter.
toots Nov 19, 2024
3efd6bb
Remove `source.{dump, drop}`, add `request.{dump, process}`. (#4216)
toots Nov 19, 2024
ddacc98
Cleanup single fallible case. (#4218)
toots Nov 22, 2024
f57753a
Bring back default telnet commands.
toots Nov 22, 2024
b4baf8e
Revert scheduler changes. (#4219)
toots Nov 23, 2024
0452d1f
Cleanup logic.
toots Nov 24, 2024
0a5c8de
Use String.split_on_char.
toots Nov 24, 2024
4911be5
Use String.trim. Fixes: #4223
toots Nov 24, 2024
884a5b4
Add entry for regexp in migration doc.
toots Nov 24, 2024
5a59bd5
Cleanup regexp usages (#4224)
toots Nov 25, 2024
ada2078
Use new images. (#4226)
toots Nov 25, 2024
e869bbe
Prepare for release.
toots Nov 26, 2024
7fdc31b
Try this.
toots Nov 26, 2024
f631b7d
Add this.
toots Nov 26, 2024
457c7f0
Update README.md
toots Nov 26, 2024
60a6e53
Here too.
toots Nov 26, 2024
ed3ce0e
Add NDI entry.
toots Nov 26, 2024
4312bc4
Add explanation.
toots Nov 27, 2024
98aeeaa
Update README.md
toots Nov 27, 2024
b46551a
Fix.
toots Nov 27, 2024
073598a
Bump menhir.
toots Nov 29, 2024
b986061
Effect is a keywork on OCaml 5.3.
toots Nov 30, 2024
e31ed92
Format.
toots Nov 30, 2024
246e105
Try this.
toots Nov 30, 2024
7d48b79
Revert "Try this."
toots Nov 30, 2024
962a50b
Switch to new windows build image. (#4234)
toots Nov 30, 2024
6d0e3f5
Bump version.
toots Dec 4, 2024
3b8eafe
Minor bump for now.
toots Dec 4, 2024
1148bb3
Add support for WAVE_FORMAT_EXTENSIBLE
toots Dec 4, 2024
1d1c7ff
Revert this.
toots Dec 4, 2024
8a5acd3
Proper versions
toots Dec 4, 2024
b320ae7
Bump mm dep.
toots Dec 5, 2024
2c5b510
Convert all icy metadata to utf8.
toots Dec 6, 2024
44e38bf
ALSA fixes (#4242)
toots Dec 7, 2024
2765737
Add issue.
toots Dec 7, 2024
596e08a
Improve song metadata handling in `input.harbor` (#4244)
toots Dec 7, 2024
5467bf0
Fix mutual recursion between autocue and replaygain metadata resolver…
toots Dec 8, 2024
9ad6996
Fix changes.
toots Dec 8, 2024
67d7153
Fix typo. prevent CI run on non-essential files.
toots Dec 8, 2024
ee2c59c
let go YAML's `not_found` exception (#4249)
martinkirch Dec 9, 2024
056e5f9
Add string.compare.
toots Dec 10, 2024
000c74f
Add support for type annotations for optional types with methods. (#4…
toots Dec 10, 2024
709c677
SRT cleanup.
toots Dec 11, 2024
37d0086
Add support for native xml parsing. (#4252)
toots Dec 12, 2024
96bfd47
Add source.drop.track_marks and source.drop.metadata_track_marks, update
toots Dec 13, 2024
ed56242
Reimplement audioscrobbler natively (#4250)
toots Dec 14, 2024
a42b158
Remove assert
toots Dec 14, 2024
1501770
Add migration doc for `source.dynamic`. Fixes: #4268
toots Dec 14, 2024
5c4957d
Fix this.
toots Dec 14, 2024
906f8e3
Remove name.
toots Dec 14, 2024
c6d59c6
Send last metadata when connecting to icecast. (#4270)
toots Dec 14, 2024
be56830
Update audioscrobbler.liq (#4271)
gAlleb Dec 15, 2024
4b7aec8
Bump saturn. (#4105)
toots Dec 15, 2024
397f73b
Fix typo
toots Dec 15, 2024
6b3eed2
Fix inotify GC cleanup removing the watch function (#4278)
toots Dec 21, 2024
27426b1
Try this.
toots Dec 28, 2024
2c1ffa5
Rerun on .git change
toots Dec 28, 2024
41ed163
Fix delay initial conditions. (#4289)
toots Dec 28, 2024
f30dc86
Add more strings to test for parsing.
toots Dec 28, 2024
12a4018
Adapt to new ogg API. (#4291)
toots Jan 1, 2025
3ee8506
Fix parsing of rolling-release version. (#4294)
smimram Jan 1, 2025
6eaefc2
Fix video.add_text.ffmpeg.
toots Jan 2, 2025
a6ed06a
Print SDL version.
toots Jan 2, 2025
eae4897
Fix delay initial conditions again. (#4296)
toots Jan 3, 2025
2f4ba0b
Cleanup preliminary to typeof changes.
toots Jan 3, 2025
ca07c9d
Merge remote-tracking branch 'origin/typeof-cleanup' into typeof
toots Jan 3, 2025
17415ca
Merge remote-tracking branch 'origin/main' into typeof
toots Feb 2, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add support for native xml parsing. (#4252)
  • Loading branch information
toots committed Jan 3, 2025
commit 37d00860ede8066241da44815aa1d040e2fd6658
1 change: 1 addition & 0 deletions .github/opam/liquidsoap-core-windows.opam
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ depends: [
"fileutils"
"fileutils-windows"
"curl-windows"
"xml-light-windows"
"mem_usage-windows" {>= "0.1.1"}
"metadata-windows" {>= "0.3.0"}
"dune-site-windows"
Expand Down
2 changes: 2 additions & 0 deletions .github/scripts/build-posix.sh
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ echo "::endgroup::"

echo "::group::Setting up specific dependencies"

opam install -y xml-light

cd /tmp/liquidsoap-full/liquidsoap

./.github/scripts/checkout-deps.sh
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ jobs:
cd /tmp/liquidsoap-full/liquidsoap
eval "$(opam config env)"
opam update
opam install -y saturn_lockfree.0.4.1
opam install -y xml-light
dune build --profile release ./src/js/interactive_js.bc.js

tree_sitter_parse:
Expand Down
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ repos:
exclude: dune.inc

- repo: https://github.com/savonet/pre-commit-liquidsoap
rev: c5eab8dceed09fa985b3cf0ba3fe7f398fc00c04
rev: 056cf2da9d985e1915a069679f126a461206504a
hooks:
- id: liquidsoap-prettier

Expand Down
1 change: 1 addition & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

New:

- Added support for parsing and rendering XML natively (#4252)
- Added support for `WAVE_FORMAT_EXTENSIBLE` to the internal
wav dexcoder.
- Added optional `buffer_size` parameter to `input.alsa` and
Expand Down
160 changes: 160 additions & 0 deletions doc/content/xml.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
## Importing/exporting XML values

Support for XML parsing and rendering was first added in liquidsoap `2.3.1`.

You can parse XML strings using a decorator and type annotation. There are two different representations of XML you can use.

### Record access representation

This is the easiest representation. It is intended for quick access to parsed value via
record and tuples.

Here's an example:

```liquidsoap
s =
'<bla param="1" bla="true">
<foo opt="12.3">gni</foo>
<bar />
<bar>bla</bar>
<blo>1.23</blo>
<blu>false</blu>
<ble>123</ble>
</bla>'

let xml.parse (x :
{
bla: {
foo: string.{ xml_params: {opt: float} },
bar: (unit * string),
blo: float,
blu: bool,
ble: int,
xml_params: { bla: bool }
}
}
) = s

print("The value for blu is: #{x.bla.ble}")
```

Things to note:

- The basic mappings are: `<tag name> -> <tag content>`
- Tag content maps tag parameters to a `xml_params` method.
- When multiple tags are present, their values are collected as tuple (`bar` tag in the example)
- When a tag contains a single ground value (`string`, `bool`, `float` or `integer`), the mapping is from tag name to the corresponding value, with xml attributes attached as methods
- Tag parameters can be converted to ground values and omitted.

The parsing is driven by the type annotation and is intended to be permissive. For instance, this will work:

```liquidsoaop
s = '<bla>foo</bla>'

# Here, `foo` is omitted.
let xml.parse (x: { bla: unit }) = s

# x contains: { bla = () }

# Here, `foo` is made optional
let xml.parse (x: { bla: string? }) = s

# x contains: { bla = "foo" }
```

### Formal representation

Because XML format can result in complex values, the parser can also use a generic representation.

Here's an example:

```liquidsoap
s =
'<bla param="1" bla="true">
<foo opt="12.3">gni</foo>
<bar />
<bar>bla</bar>
<blo>1.23</blo>
<blu>false</blu>
<ble>123</ble>
</bla>'

let xml.parse (x :
(
string
*
{
xml_params: [(string * string)],
xml_children: [
(
string
*
{
xml_params: [(string * string)],
xml_children: [(string * {xml_text: string})]
}
)
]
}
)
) = s

# x contains:
(
"bla",
{
xml_children=
[
(
"foo",
{
xml_children=[("xml_text", {xml_text="gni"})],
xml_params=[("opt", "12.3")]
}
),
("bar", {xml_children=[], xml_params=[]}),
(
"bar",
{
xml_children=[("xml_text", {xml_text="bla"})],
xml_params=[("option", "aab")]
}
),
(
"blo",
{xml_children=[("xml_text", {xml_text="1.23"})], xml_params=[]}
),
(
"blu",
{xml_children=[("xml_text", {xml_text="false"})], xml_params=[]}
),
(
"ble",
{xml_children=[("xml_text", {xml_text="123"})], xml_params=[]}
)
],
xml_params=[("param", "1"), ("bla", "true")]
}
)
```

This representation is much less convenient to manipulate but allows an exact representation of all XML values.

Things to note:

- XML nodes are represented by a pair of the form: `(<tag name>, <tag properties>)`
- `<tag properties>` is a record containing the following methods:
- `xml_params`, represented as a list of pairs `(string * string)`
- `xml_children`, containing a list of the XML node's children. Each entry in the list is a node in the formal XML representation.
- `xml_text`, present when the node is a text node. In this case, `xml_params` and `xm_children` are empty.
- By convention, text nodes are labelled `xml_text` and are of the form: `{ xml_text: "node content" }`

### Rendering XML values

XML values can be converted back to strings using `xml.stringify`.

Both the formal and record-access form can be rendered back into XML strings however, with the record-access representations, if a node has multiple children with the same tag, the conversion to XML string will fail.

More generally, if the values you want to convert to XML strings are complex, for instance if they use several times the same tag as child node or if the order of child nodes matters, we recommend using the formal representation to make sure that children ordering is properly preserved.

This is because record methods are not ordered in the language so we make no guarantee that the child nodes they represent be rendered in a specific order.
129 changes: 129 additions & 0 deletions doc/dune.inc
Original file line number Diff line number Diff line change
Expand Up @@ -9281,6 +9281,134 @@
)
)

(rule
(alias doc)
(package liquidsoap)
(enabled_if (not %{bin-available:pandoc}))
(deps (:no_pandoc no-pandoc))
(target xml.html)
(action (run cp %{no_pandoc} %{target}))
)

(rule
(alias doc)
(package liquidsoap)
(enabled_if %{bin-available:pandoc})
(deps
liquidsoap.xml
language.dtd
template.html
content/liq/append-silence.liq
content/liq/archive-cleaner.liq
content/liq/basic-radio.liq
content/liq/beets-amplify.liq
content/liq/beets-protocol-short.liq
content/liq/beets-protocol.liq
content/liq/beets-source.liq
content/liq/blank-detect.liq
content/liq/blank-sorry.liq
content/liq/complete-case.liq
content/liq/cross.custom.liq
content/liq/crossfade.liq
content/liq/decoder-faad.liq
content/liq/decoder-flac.liq
content/liq/decoder-metaflac.liq
content/liq/dump-hourly.liq
content/liq/dump-hourly2.liq
content/liq/dynamic-source.liq
content/liq/external-output.file.liq
content/liq/fallback.liq
content/liq/ffmpeg-filter-dynamic-volume.liq
content/liq/ffmpeg-filter-flanger-highpass.liq
content/liq/ffmpeg-filter-hflip.liq
content/liq/ffmpeg-filter-hflip2.liq
content/liq/ffmpeg-filter-parallel-flanger-highpass.liq
content/liq/ffmpeg-live-switch.liq
content/liq/ffmpeg-relay-ondemand.liq
content/liq/ffmpeg-relay.liq
content/liq/ffmpeg-shared-encoding-rtmp.liq
content/liq/ffmpeg-shared-encoding.liq
content/liq/fixed-time1.liq
content/liq/fixed-time2.liq
content/liq/frame-size.liq
content/liq/harbor-auth.liq
content/liq/harbor-dynamic.liq
content/liq/harbor-insert-metadata.liq
content/liq/harbor-metadata.liq
content/liq/harbor-redirect.liq
content/liq/harbor-simple.liq
content/liq/harbor-usage.liq
content/liq/harbor.http.register.liq
content/liq/harbor.http.response.liq
content/liq/hls-metadata.liq
content/liq/hls-mp4.liq
content/liq/http-input.liq
content/liq/icy-update.liq
content/liq/input.mplayer.liq
content/liq/jingle-hour.liq
content/liq/json-ex.liq
content/liq/json-stringify.liq
content/liq/json1.liq
content/liq/live-switch.liq
content/liq/medialib-predicate.liq
content/liq/medialib.liq
content/liq/medialib.sqlite.liq
content/liq/multitrack-add-video-track.liq
content/liq/multitrack-add-video-track2.liq
content/liq/multitrack-default-video-track.liq
content/liq/multitrack.liq
content/liq/multitrack2.liq
content/liq/multitrack3.liq
content/liq/output.file.hls.liq
content/liq/playlists.liq
content/liq/prometheus-callback.liq
content/liq/prometheus-settings.liq
content/liq/radiopi.liq
content/liq/re-encode.liq
content/liq/regular.liq
content/liq/replaygain-metadata.liq
content/liq/replaygain-playlist.liq
content/liq/request.dynamic.liq
content/liq/rtmp.liq
content/liq/samplerate3.liq
content/liq/scheduling.liq
content/liq/seek-telnet.liq
content/liq/settings.liq
content/liq/shoutcast.liq
content/liq/single.liq
content/liq/source-cue.liq
content/liq/space_overhead.liq
content/liq/split-cue.liq
content/liq/sqlite.liq
content/liq/srt-receiver.liq
content/liq/srt-sender.liq
content/liq/switch-show.liq
content/liq/transcoding.liq
content/liq/video-anonymizer.liq
content/liq/video-bluescreen.liq
content/liq/video-canvas-example.liq
content/liq/video-default-canvas.liq
content/liq/video-in-video.liq
content/liq/video-logo.liq
content/liq/video-osc.liq
content/liq/video-simple.liq
content/liq/video-static.liq
content/liq/video-text.liq
content/liq/video-transition.liq
content/liq/video-weather.liq
content/liq/video-webcam.liq
(:md content/xml.md)
)
(target xml.html)
(action
(pipe-stdout
(run pandoc %{md} -t json)
(run pandoc-include --directory content/liq)
(run pandoc -f json --syntax-definition=liquidsoap.xml --highlight=pygments --metadata pagetitle=xml --template=template.html -o %{target})
)
)
)

(rule
(alias doc)
(package liquidsoap)
Expand Down Expand Up @@ -10496,6 +10624,7 @@
(strings_encoding.html as html/strings_encoding.html)
(video-static.html as html/video-static.html)
(video.html as html/video.html)
(xml.html as html/xml.html)
(yaml.html as html/yaml.html)
)
)
1 change: 1 addition & 0 deletions dune-project
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,7 @@
(ppx_hash :build)
(sedlex (>= 3.2))
(menhir (>= 20240715))
xml-light
)
(sites (share libs) (share bin) (share cache) (lib_root lib_root))
(synopsis "Liquidsoap language library"))
Expand Down
1 change: 1 addition & 0 deletions liquidsoap-lang.opam
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ depends: [
"ppx_hash" {build}
"sedlex" {>= "3.2"}
"menhir" {>= "20240715"}
"xml-light"
"odoc" {with-doc}
]
build: [
Expand Down
Loading