Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 11 additions & 2 deletions musikr/src/main/java/org/oxycblt/musikr/tag/interpret/Naming.kt
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,11 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/

package org.oxycblt.musikr.tag.interpret

import android.icu.text.Transliterator
import android.os.Build
import java.text.CollationKey
import java.text.Collator
import org.oxycblt.musikr.tag.Name
Expand Down Expand Up @@ -84,7 +86,7 @@ private data class IntelligentKnownName(override val raw: String, override val s
private fun parseTokens(name: String): List<Token> {
// TODO: This routine is consuming much of the song building runtime, find a way to
// optimize it
val stripped =
var stripped =
name
// Remove excess punctuation from the string, as those usually aren't
// considered in sorting.
Expand All @@ -101,6 +103,13 @@ private data class IntelligentKnownName(override val raw: String, override val s
}
}

// Transliterate to latin if available
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && Transliterator.getAvailableIDs()
.toList().contains("Any-Latin")
) {
stripped = Transliterator.getInstance("Any-Latin;").transliterate(stripped)
}

// To properly compare numeric components in names, we have to split them up into
// individual lexicographic and numeric tokens and then individually compare them
// with special logic.
Expand Down