Files
nu-ffmpeg/filters.nu
2024-01-08 13:35:14 -05:00

23 lines
811 B
Nu
Executable File

#!/usr/bin/env -S nu --stdin
def "parse filter" [
] {
$in | parse --regex '^(?<name>[^=]+)=(?<params>.*)' | first |
update params {|row| $row.params | parse --regex `(?<param>[^=]+)=(?<value>[^:]+):?` }
}
def "filter to-string" [] {
each { |filter| $'($filter.name)=($filter.params | format '{param}={value}')' } |
str join ':'
}
def "complex-filters to-string" [
--pretty-print (-p)
]: table<input: list<string>, filters: table<name: string, params: table<param: string, value: string>>, output: string> -> string {
$in | update filters {
|$row| $row.filters | flatten | filter to-string
} | update input { |row|
$row.input | str join ']['
} | format '[{input}]{filters}[{output}]' | str join (";" + (if $pretty_print { "\n" } else { "" })) | str replace --all '[]' ''
}