-module(testcontainer@formula). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/testcontainer/formula.gleam"). -export([new/2, spec/1, extract/2]). -export_type([formula/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. -opaque formula(FRQ) :: {formula, testcontainer@container:container_spec(), fun((testcontainer@container:container()) -> {ok, FRQ} | {error, testcontainer@error:error()})}. -file("src/testcontainer/formula.gleam", 26). ?DOC( " Create a Formula from a ContainerSpec and an extraction function.\n" " Called by formula modules (e.g. `testcontainer_formulas/postgres`).\n" ). -spec new( testcontainer@container:container_spec(), fun((testcontainer@container:container()) -> {ok, FRR} | {error, testcontainer@error:error()}) ) -> formula(FRR). new(Spec, Extract) -> {formula, Spec, Extract}. -file("src/testcontainer/formula.gleam", 38). ?DOC(false). -spec spec(formula(any())) -> testcontainer@container:container_spec(). spec(F) -> erlang:element(2, F). -file("src/testcontainer/formula.gleam", 43). ?DOC(false). -spec extract(formula(FRX), testcontainer@container:container()) -> {ok, FRX} | {error, testcontainer@error:error()}. extract(F, C) -> (erlang:element(3, F))(C).