This commit is contained in:
35
docs/snippets/elixir/plugins/plugin_extractor.exs
Normal file
35
docs/snippets/elixir/plugins/plugin_extractor.exs
Normal file
@@ -0,0 +1,35 @@
|
||||
```elixir title="Elixir"
|
||||
defmodule MyApp.WordCountProcessor do
|
||||
@behaviour Kreuzberg.Plugin.PostProcessor
|
||||
|
||||
def name, do: "word_count_processor"
|
||||
|
||||
def version, do: "1.0.0"
|
||||
|
||||
def processing_stage, do: :late
|
||||
|
||||
def initialize, do: :ok
|
||||
|
||||
def shutdown, do: :ok
|
||||
|
||||
def process(result, _config) do
|
||||
word_count = result.content
|
||||
|> String.split()
|
||||
|> Enum.count()
|
||||
|
||||
metadata = Map.put(result.metadata || %{}, "word_count", word_count)
|
||||
%{result | metadata: metadata}
|
||||
end
|
||||
end
|
||||
|
||||
# Register post-processor
|
||||
Kreuzberg.Plugin.register_post_processor(MyApp.WordCountProcessor)
|
||||
|
||||
# Use with extraction
|
||||
{:ok, result} = Kreuzberg.extract_file(
|
||||
"document.pdf",
|
||||
nil
|
||||
)
|
||||
|
||||
IO.puts("Word count: #{result.metadata["word_count"]}")
|
||||
```
|
||||
Reference in New Issue
Block a user