musikr: extract out shared parse fns

Into the util module
This commit is contained in:
Alexander Capehart 2024-12-16 13:41:57 -05:00
parent 4d0465e012
commit 14355a1005
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
10 changed files with 19 additions and 39 deletions

View file

@ -36,8 +36,8 @@ import org.oxycblt.musikr.metadata.Properties
import org.oxycblt.musikr.pipeline.RawSong import org.oxycblt.musikr.pipeline.RawSong
import org.oxycblt.musikr.tag.Date import org.oxycblt.musikr.tag.Date
import org.oxycblt.musikr.tag.parse.ParsedTags import org.oxycblt.musikr.tag.parse.ParsedTags
import org.oxycblt.musikr.tag.util.correctWhitespace import org.oxycblt.musikr.util.correctWhitespace
import org.oxycblt.musikr.tag.util.splitEscaped import org.oxycblt.musikr.util.splitEscaped
@Database(entities = [CachedSong::class], version = 50, exportSchema = false) @Database(entities = [CachedSong::class], version = 50, exportSchema = false)
abstract class CacheDatabase : RoomDatabase() { abstract class CacheDatabase : RoomDatabase() {

View file

@ -24,7 +24,7 @@ import android.net.Uri
import android.provider.DocumentsContract import android.provider.DocumentsContract
import org.oxycblt.musikr.fs.path.DocumentPathFactory import org.oxycblt.musikr.fs.path.DocumentPathFactory
import org.oxycblt.musikr.fs.query.contentResolverSafe import org.oxycblt.musikr.fs.query.contentResolverSafe
import org.oxycblt.musikr.tag.util.splitEscaped import org.oxycblt.musikr.util.splitEscaped
class MusicLocation internal constructor(val uri: Uri, val path: Path) { class MusicLocation internal constructor(val uri: Uri, val path: Path) {
override fun equals(other: Any?) = other is MusicLocation && uri == other.uri override fun equals(other: Any?) = other is MusicLocation && uri == other.uri

View file

@ -33,7 +33,7 @@ import org.oxycblt.musikr.playlist.ExportConfig
import org.oxycblt.musikr.playlist.ImportedPlaylist import org.oxycblt.musikr.playlist.ImportedPlaylist
import org.oxycblt.musikr.playlist.PossiblePaths import org.oxycblt.musikr.playlist.PossiblePaths
import org.oxycblt.musikr.tag.Name import org.oxycblt.musikr.tag.Name
import org.oxycblt.musikr.tag.util.correctWhitespace import org.oxycblt.musikr.util.correctWhitespace
import org.oxycblt.musikr.util.unlikelyToBeNull import org.oxycblt.musikr.util.unlikelyToBeNull
/** /**

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package org.oxycblt.musikr.tag.util package org.oxycblt.musikr.tag.format
/// --- ID3v2 PARSING --- /// --- ID3v2 PARSING ---

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package org.oxycblt.musikr.tag.util package org.oxycblt.musikr.tag.format
import org.oxycblt.musikr.util.positiveOrNull import org.oxycblt.musikr.util.positiveOrNull

View file

@ -18,8 +18,8 @@
package org.oxycblt.musikr.tag.interpret package org.oxycblt.musikr.tag.interpret
import org.oxycblt.musikr.tag.util.correctWhitespace import org.oxycblt.musikr.util.correctWhitespace
import org.oxycblt.musikr.tag.util.splitEscaped import org.oxycblt.musikr.util.splitEscaped
/** /**
* Defines the user-specified parsing of multi-value tags. This should be used to parse any tags * Defines the user-specified parsing of multi-value tags. This should be used to parse any tags

View file

@ -27,7 +27,7 @@ import org.oxycblt.musikr.tag.Placeholder
import org.oxycblt.musikr.tag.ReleaseType import org.oxycblt.musikr.tag.ReleaseType
import org.oxycblt.musikr.tag.ReplayGainAdjustment import org.oxycblt.musikr.tag.ReplayGainAdjustment
import org.oxycblt.musikr.tag.parse.ParsedTags import org.oxycblt.musikr.tag.parse.ParsedTags
import org.oxycblt.musikr.tag.util.parseId3GenreNames import org.oxycblt.musikr.tag.format.parseId3GenreNames
import org.oxycblt.musikr.util.toUuidOrNull import org.oxycblt.musikr.util.toUuidOrNull
interface TagInterpreter { interface TagInterpreter {

View file

@ -21,8 +21,8 @@ package org.oxycblt.musikr.tag.parse
import androidx.core.text.isDigitsOnly import androidx.core.text.isDigitsOnly
import org.oxycblt.musikr.metadata.Metadata import org.oxycblt.musikr.metadata.Metadata
import org.oxycblt.musikr.tag.Date import org.oxycblt.musikr.tag.Date
import org.oxycblt.musikr.tag.util.parseId3v2PositionField import org.oxycblt.musikr.tag.format.parseId3v2PositionField
import org.oxycblt.musikr.tag.util.parseXiphPositionField import org.oxycblt.musikr.tag.format.parseXiphPositionField
import org.oxycblt.musikr.util.nonZeroOrNull import org.oxycblt.musikr.util.nonZeroOrNull
// Song // Song

View file

@ -1,26 +1,4 @@
/* package org.oxycblt.musikr.util
* Copyright (c) 2022 Auxio Project
* Transform.kt is part of Auxio.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* 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.util
/// --- GENERIC PARSING ---
// TODO: Remove the escaping checks, it's too expensive to do this for every single tag.
/** /**
* Split a [String] by the given selector, automatically handling escaped characters that satisfy * Split a [String] by the given selector, automatically handling escaped characters that satisfy
@ -67,6 +45,8 @@ inline fun String.splitEscaped(selector: (Char) -> Boolean): List<String> {
return split return split
} }
// TODO: Remove the escaping checks, it's too expensive to do this for every single tag.
/** /**
* Fix trailing whitespace or blank contents in a [String]. * Fix trailing whitespace or blank contents in a [String].
* *

View file

@ -20,11 +20,11 @@ package org.oxycblt.musikr.tag.parse
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Test import org.junit.Test
import org.oxycblt.musikr.tag.util.correctWhitespace import org.oxycblt.musikr.util.correctWhitespace
import org.oxycblt.musikr.tag.util.parseId3GenreNames import org.oxycblt.musikr.tag.format.parseId3GenreNames
import org.oxycblt.musikr.tag.util.parseId3v2PositionField import org.oxycblt.musikr.tag.format.parseId3v2PositionField
import org.oxycblt.musikr.tag.util.parseXiphPositionField import org.oxycblt.musikr.tag.format.parseXiphPositionField
import org.oxycblt.musikr.tag.util.splitEscaped import org.oxycblt.musikr.util.splitEscaped
class TagUtilTest { class TagUtilTest {
@Test @Test