-module(gg_cn@internal@sort_modifiers). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/gg_cn/internal/sort_modifiers.gleam"). -export([sort_modifiers/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. ?MODULEDOC(false). -file("src/gg_cn/internal/sort_modifiers.gleam", 34). ?DOC(false). -spec flush(list(binary()), list(binary())) -> list(binary()). flush(Segment, Result_rev) -> _pipe = Segment, _pipe@1 = gleam@list:sort(_pipe, fun gleam@string:compare/2), gleam@list:fold(_pipe@1, Result_rev, fun(Acc, Item) -> [Item | Acc] end). -file("src/gg_cn/internal/sort_modifiers.gleam", 14). ?DOC(false). -spec sort_modifiers(gleam@set:set(binary()), list(binary())) -> list(binary()). sort_modifiers(Order_sensitive, Modifiers) -> {Result_rev@1, Segment@1} = gleam@list:fold( Modifiers, {[], []}, fun(Acc, Modifier) -> {Result_rev, Segment} = Acc, Is_arbitrary = gleam_stdlib:string_starts_with( Modifier, <<"["/utf8>> ), Is_order_sensitive = gleam@set:contains(Order_sensitive, Modifier), case Is_arbitrary orelse Is_order_sensitive of true -> {[Modifier | flush(Segment, Result_rev)], []}; false -> {Result_rev, [Modifier | Segment]} end end ), lists:reverse(flush(Segment@1, Result_rev@1)).