musikr: extract out shared parse fns
Into the util module
This commit is contained in:
parent
4d0465e012
commit
14355a1005
10 changed files with 19 additions and 39 deletions
|
@ -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() {
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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 ---
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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].
|
||||||
*
|
*
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue