Current section
Files
Jump to
Current section
Files
src/builder@asset.erl
-module(builder@asset).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/builder/asset.gleam").
-export([new_build_asset/1, add_extension/2, change_extension/2]).
-export_type([gleam_asset/0, build_asset/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
-type gleam_asset() :: {gleam_build_asset,
builder@module:module_(),
build_asset()}.
-type build_asset() :: {build_asset, binary(), binary()}.
-file("src/builder/asset.gleam", 15).
?DOC(false).
-spec new_build_asset(binary()) -> build_asset().
new_build_asset(Path) ->
{build_asset, Path, case filepath:extension(Path) of
{ok, Ext} ->
<<"."/utf8, Ext/binary>>;
_ ->
<<""/utf8>>
end}.
-file("src/builder/asset.gleam", 25).
?DOC(
" Add an additional extension to a build asset's path\n"
"\n"
" Example: \"file.gleam\" + \".js\" -> \"file.gleam.js\"\n"
).
-spec add_extension(build_asset(), binary()) -> build_asset().
add_extension(Asset, Extension) ->
new_build_asset(<<(erlang:element(2, Asset))/binary, Extension/binary>>).
-file("src/builder/asset.gleam", 32).
?DOC(
" Replace the extension of a build asset\n"
"\n"
" Example: \"file.gleam\" changed to \".js\" -> \"file.js\"\n"
).
-spec change_extension(build_asset(), binary()) -> build_asset().
change_extension(Asset, Extension) ->
new_build_asset(
<<(filepath:strip_extension(erlang:element(2, Asset)))/binary,
Extension/binary>>
).