-module(automata@fsevent@op).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/automata/fsevent/op.gleam").
-export([empty_ops/0, single_op/1, ops_from_list/1, combine/2, has/2, op_to_string/1, all_ops/0, to_list/1, ops_to_string/1]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
-file("src/automata/fsevent/op.gleam", 8).
?DOC(
" The empty op set. Used by `WatchEvent` constructors that build up\n"
" op sets incrementally.\n"
).
-spec empty_ops() -> gleam@set:set(automata@fsevent@ast:op()).
empty_ops() ->
gleam@set:new().
-file("src/automata/fsevent/op.gleam", 18).
?DOC(" A single-element op set.\n").
-spec single_op(automata@fsevent@ast:op()) -> gleam@set:set(automata@fsevent@ast:op()).
single_op(Op) ->
gleam@set:from_list([Op]).
-file("src/automata/fsevent/op.gleam", 23).
?DOC(" Build an op set from a list. Duplicates are collapsed (set semantics).\n").
-spec ops_from_list(list(automata@fsevent@ast:op())) -> gleam@set:set(automata@fsevent@ast:op()).
ops_from_list(Ops) ->
gleam@set:from_list(Ops).
-file("src/automata/fsevent/op.gleam", 28).
?DOC(" Union of two op sets.\n").
-spec combine(
gleam@set:set(automata@fsevent@ast:op()),
gleam@set:set(automata@fsevent@ast:op())
) -> gleam@set:set(automata@fsevent@ast:op()).
combine(Left, Right) ->
gleam@set:union(Left, Right).
-file("src/automata/fsevent/op.gleam", 33).
?DOC(" `True` when `ops` contains `op`.\n").
-spec has(gleam@set:set(automata@fsevent@ast:op()), automata@fsevent@ast:op()) -> boolean().
has(Ops, Op) ->
gleam@set:contains(Ops, Op).
-file("src/automata/fsevent/op.gleam", 47).
?DOC(
" Render an op as one of `\"CREATE\"`, `\"WRITE\"`, `\"REMOVE\"`,\n"
" `\"RENAME\"`, `\"CHMOD\"`.\n"
).
-spec op_to_string(automata@fsevent@ast:op()) -> binary().
op_to_string(Op) ->
case Op of
create ->
<<"CREATE"/utf8>>;
write ->
<<"WRITE"/utf8>>;
remove ->
<<"REMOVE"/utf8>>;
rename ->
<<"RENAME"/utf8>>;
chmod ->
<<"CHMOD"/utf8>>
end.
-file("src/automata/fsevent/op.gleam", 66).
-spec canonical_order() -> list(automata@fsevent@ast:op()).
canonical_order() ->
[create, write, remove, rename, chmod].
-file("src/automata/fsevent/op.gleam", 13).
?DOC(" All ops the differ knows about, in canonical order.\n").
-spec all_ops() -> gleam@set:set(automata@fsevent@ast:op()).
all_ops() ->
gleam@set:from_list(canonical_order()).
-file("src/automata/fsevent/op.gleam", 41).
?DOC(
" Convert an op set into a list whose order is fixed across runs and\n"
" targets: `[Create, Write, Remove, Rename, Chmod]`. Stable rendering\n"
" matters for tests that compare event sequences across the BEAM and\n"
" JavaScript targets.\n"
).
-spec to_list(gleam@set:set(automata@fsevent@ast:op())) -> list(automata@fsevent@ast:op()).
to_list(Ops) ->
gleam@list:filter(
canonical_order(),
fun(Op) -> gleam@set:contains(Ops, Op) end
).
-file("src/automata/fsevent/op.gleam", 59).
?DOC(
" Render an op set as `\"CREATE|WRITE\"` (canonical order). Empty sets\n"
" render as the empty string.\n"
).
-spec ops_to_string(gleam@set:set(automata@fsevent@ast:op())) -> binary().
ops_to_string(Ops) ->
_pipe = Ops,
_pipe@1 = to_list(_pipe),
_pipe@2 = gleam@list:map(_pipe@1, fun op_to_string/1),
gleam@string:join(_pipe@2, <<"|"/utf8>>).