From c469d4b7c07e224f685202ddf3308a2aff1093d1 Mon Sep 17 00:00:00 2001 From: Cameron Taylor <cameron.taylor.ninja@gmail.com> Date: Mon, 7 Aug 2023 16:01:22 -0400 Subject: [PATCH] regexp filter --- source/funkin/FreeplayState.hx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/source/funkin/FreeplayState.hx b/source/funkin/FreeplayState.hx index 277db9873..bc3d9bbce 100644 --- a/source/funkin/FreeplayState.hx +++ b/source/funkin/FreeplayState.hx @@ -393,7 +393,7 @@ class FreeplayState extends MusicBeatSubState case "ALL": generateSongList(null, true); default: - generateSongList({filterType: STARTSWITH, filterData: str}, true); + generateSongList({filterType: REGEXP, filterData: str}, true); } }; @@ -477,6 +477,13 @@ class FreeplayState extends MusicBeatSubState { switch (filterStuff.filterType) { + case REGEXP: + // filterStuff.filterData has a string with the first letter of the sorting range, and the second one + // this creates a filter to return all the songs that start with a letter between those two + var filterRegexp = new EReg("^[" + filterStuff.filterData + "].*", "i"); + tempSongs = tempSongs.filter(str -> { + return filterRegexp.match(str.songName); + }); case STARTSWITH: tempSongs = tempSongs.filter(str -> { return str.songName.toLowerCase().startsWith(filterStuff.filterData); @@ -1045,6 +1052,7 @@ typedef SongFilter = enum abstract FilterType(String) { var STARTSWITH; + var REGEXP; var FAVORITE; var ALL; }