Web Dev Solutions

Catalin Mititiuc

aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorCatalin Mititiuc <webdevcat@proton.me>2025-01-20 14:55:24 -0800
committerCatalin Mititiuc <webdevcat@proton.me>2025-01-20 14:55:24 -0800
commita2442650188d5cfe2b3ca763ab520f286500263e (patch)
tree939a0c65c1daaca4ff18faa1c5cb874d8fdbe0a1 /lib
parentf85f240e2b7ec64a96c626857281c1a7d694c053 (diff)
Handle renaming documentsHEADv0.3.2master
Diffstat (limited to 'lib')
-rw-r--r--lib/pandoc/watcher.ex14
1 files changed, 8 insertions, 6 deletions
diff --git a/lib/pandoc/watcher.ex b/lib/pandoc/watcher.ex
index 9ff2620..515407c 100644
--- a/lib/pandoc/watcher.ex
+++ b/lib/pandoc/watcher.ex
@@ -3,6 +3,8 @@ defmodule Pandoc.Watcher do
use GenServer
+ @events MapSet.new([:closed, :deleted, :moved_from, :moved_to])
+
def start_link(args) do
GenServer.start_link(__MODULE__, args)
end
@@ -18,12 +20,8 @@ defmodule Pandoc.Watcher do
@impl true
def handle_info({:file_event, watcher_pid, {path, events}}, %{watcher_pid: watcher_pid} = state) do
- case {String.match?(path, state[:pattern]), :closed in events or :deleted in events} do
- {true, true} ->
- Pandoc.install_and_run(state[:profile], [Path.basename(path) | state[:extra_args]])
-
- _ ->
- nil
+ if String.match?(path, state[:pattern]) and update?(events) do
+ Pandoc.install_and_run(state[:profile], [Path.basename(path) | state[:extra_args]])
end
{:noreply, state}
@@ -32,4 +30,8 @@ defmodule Pandoc.Watcher do
def handle_info({:file_event, watcher_pid, :stop}, %{watcher_pid: watcher_pid} = state) do
{:noreply, state}
end
+
+ defp update?(events) do
+ events |> MapSet.new() |> MapSet.intersection(@events) |> MapSet.size() > 0
+ end
end