-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>> ).