-module(glean@testing@function_provider). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/glean/testing/function_provider.gleam"). -export([function_provider/2]). -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/glean/testing/function_provider.gleam", 23). ?DOC( " Create a provider backed by a user-supplied function.\n" " The function receives each request and returns a result or error.\n" "\n" " ## Example\n" "\n" " ```gleam\n" " let provider = function_provider(\"test\", fn(request) {\n" " case list.length(request.messages) {\n" " 1 -> Ok(test_provider.text_result(\"Hello!\"))\n" " _ -> Ok(test_provider.text_result(\"Goodbye!\"))\n" " }\n" " })\n" " ```\n" ). -spec function_provider( binary(), fun((glean@provider:generate_request()) -> {ok, glean@provider:generate_result()} | {error, glean@error:glean_error()}) ) -> glean@provider:provider(). function_provider(Name, Handler) -> Stream_fn = fun(Request, _) -> Handler(Request) end, {provider, Name, <>, Handler, Stream_fn}.