Simplifying conditionals for the ATag parser
This commit is contained in:
+7
-7
@@ -22,9 +22,11 @@ package com.vitorpamplona.quartz.experimental.interactiveStories.tags
|
|||||||
|
|
||||||
import androidx.compose.runtime.Immutable
|
import androidx.compose.runtime.Immutable
|
||||||
import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
||||||
|
import com.vitorpamplona.quartz.nip01Core.core.has
|
||||||
import com.vitorpamplona.quartz.nip01Core.tags.addressables.Address
|
import com.vitorpamplona.quartz.nip01Core.tags.addressables.Address
|
||||||
import com.vitorpamplona.quartz.utils.arrayOfNotNull
|
import com.vitorpamplona.quartz.utils.arrayOfNotNull
|
||||||
import com.vitorpamplona.quartz.utils.bytesUsedInMemory
|
import com.vitorpamplona.quartz.utils.bytesUsedInMemory
|
||||||
|
import com.vitorpamplona.quartz.utils.ensure
|
||||||
import com.vitorpamplona.quartz.utils.pointerSizeInBytes
|
import com.vitorpamplona.quartz.utils.pointerSizeInBytes
|
||||||
import com.vitorpamplona.quartz.utils.removeTrailingNullsAndEmptyOthers
|
import com.vitorpamplona.quartz.utils.removeTrailingNullsAndEmptyOthers
|
||||||
|
|
||||||
@@ -66,15 +68,13 @@ data class RootSceneTag(
|
|||||||
dTag: String,
|
dTag: String,
|
||||||
) = Address.assemble(kind, pubKeyHex, dTag)
|
) = Address.assemble(kind, pubKeyHex, dTag)
|
||||||
|
|
||||||
fun parse(
|
|
||||||
aTagId: String,
|
|
||||||
relay: String?,
|
|
||||||
) = Address.parse(aTagId)?.let { RootSceneTag(it.kind, it.pubKeyHex, it.dTag, relay) }
|
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun parse(tag: Array<String>): RootSceneTag? {
|
fun parse(tag: Array<String>): RootSceneTag? {
|
||||||
if (tag.size < TAG_SIZE || tag[0] != TAG_NAME) return null
|
ensure(tag.has(1)) { return null }
|
||||||
return parse(tag[1], tag.getOrNull(2))
|
ensure(tag[0] == TAG_NAME) { return null }
|
||||||
|
ensure(tag[1].isNotEmpty()) { return null }
|
||||||
|
val address = Address.parse(tag[1]) ?: return null
|
||||||
|
return RootSceneTag(address.kind, address.pubKeyHex, address.dTag, tag.getOrNull(2))
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
|
|||||||
+5
-3
@@ -20,9 +20,11 @@
|
|||||||
*/
|
*/
|
||||||
package com.vitorpamplona.quartz.experimental.interactiveStories.tags
|
package com.vitorpamplona.quartz.experimental.interactiveStories.tags
|
||||||
|
|
||||||
|
import com.vitorpamplona.quartz.nip01Core.core.has
|
||||||
import com.vitorpamplona.quartz.nip01Core.tags.addressables.Address
|
import com.vitorpamplona.quartz.nip01Core.tags.addressables.Address
|
||||||
import com.vitorpamplona.quartz.nip46RemoteSigner.getOrNull
|
import com.vitorpamplona.quartz.nip46RemoteSigner.getOrNull
|
||||||
import com.vitorpamplona.quartz.utils.arrayOfNotNull
|
import com.vitorpamplona.quartz.utils.arrayOfNotNull
|
||||||
|
import com.vitorpamplona.quartz.utils.ensure
|
||||||
|
|
||||||
class StoryOptionTag(
|
class StoryOptionTag(
|
||||||
val option: String,
|
val option: String,
|
||||||
@@ -37,10 +39,10 @@ class StoryOptionTag(
|
|||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun parse(tag: Array<String>): StoryOptionTag? {
|
fun parse(tag: Array<String>): StoryOptionTag? {
|
||||||
if (tag.size < TAG_SIZE || tag[0] != TAG_NAME) return null
|
ensure(tag.has(2)) { return null }
|
||||||
|
ensure(tag[0] == TAG_NAME) { return null }
|
||||||
|
ensure(tag[2].isNotEmpty()) { return null }
|
||||||
val address = Address.parse(tag[2]) ?: return null
|
val address = Address.parse(tag[2]) ?: return null
|
||||||
|
|
||||||
return StoryOptionTag(tag[1], address, tag.getOrNull(3))
|
return StoryOptionTag(tag[1], address, tag.getOrNull(3))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,12 +22,14 @@ package com.vitorpamplona.quartz.nip01Core.tags.addressables
|
|||||||
|
|
||||||
import androidx.compose.runtime.Immutable
|
import androidx.compose.runtime.Immutable
|
||||||
import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
||||||
|
import com.vitorpamplona.quartz.nip01Core.core.has
|
||||||
import com.vitorpamplona.quartz.nip01Core.core.match
|
import com.vitorpamplona.quartz.nip01Core.core.match
|
||||||
import com.vitorpamplona.quartz.nip01Core.core.name
|
import com.vitorpamplona.quartz.nip01Core.core.name
|
||||||
import com.vitorpamplona.quartz.nip01Core.core.value
|
import com.vitorpamplona.quartz.nip01Core.core.value
|
||||||
import com.vitorpamplona.quartz.nip01Core.hints.types.AddressHint
|
import com.vitorpamplona.quartz.nip01Core.hints.types.AddressHint
|
||||||
import com.vitorpamplona.quartz.utils.arrayOfNotNull
|
import com.vitorpamplona.quartz.utils.arrayOfNotNull
|
||||||
import com.vitorpamplona.quartz.utils.bytesUsedInMemory
|
import com.vitorpamplona.quartz.utils.bytesUsedInMemory
|
||||||
|
import com.vitorpamplona.quartz.utils.ensure
|
||||||
import com.vitorpamplona.quartz.utils.pointerSizeInBytes
|
import com.vitorpamplona.quartz.utils.pointerSizeInBytes
|
||||||
import com.vitorpamplona.quartz.utils.removeTrailingNullsAndEmptyOthers
|
import com.vitorpamplona.quartz.utils.removeTrailingNullsAndEmptyOthers
|
||||||
|
|
||||||
@@ -110,31 +112,43 @@ data class ATag(
|
|||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun parse(tag: Array<String>): ATag? {
|
fun parse(tag: Array<String>): ATag? {
|
||||||
if (tag.size < TAG_SIZE || tag[0] != TAG_NAME) return null
|
ensure(tag.has(1)) { return null }
|
||||||
|
ensure(tag[0] == TAG_NAME) { return null }
|
||||||
|
ensure(tag[1].isNotEmpty()) { return null }
|
||||||
return parse(tag[1], tag.getOrNull(2))
|
return parse(tag[1], tag.getOrNull(2))
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun parseValidAddress(tag: Array<String>): String? {
|
fun parseValidAddress(tag: Array<String>): String? {
|
||||||
if (tag.size < TAG_SIZE || tag[0] != TAG_NAME) return null
|
ensure(tag.has(1)) { return null }
|
||||||
|
ensure(tag[0] == TAG_NAME) { return null }
|
||||||
|
ensure(tag[1].isNotEmpty()) { return null }
|
||||||
return Address.parse(tag[1])?.toValue()
|
return Address.parse(tag[1])?.toValue()
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun parseAddress(tag: Array<String>): Address? {
|
fun parseAddress(tag: Array<String>): Address? {
|
||||||
if (tag.size < TAG_SIZE || tag[0] != TAG_NAME) return null
|
ensure(tag.has(1)) { return null }
|
||||||
|
ensure(tag[0] == TAG_NAME) { return null }
|
||||||
|
ensure(tag[1].isNotEmpty()) { return null }
|
||||||
return Address.parse(tag[1])
|
return Address.parse(tag[1])
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun parseAddressId(tag: Array<String>): String? {
|
fun parseAddressId(tag: Array<String>): String? {
|
||||||
if (tag.size < TAG_SIZE || tag[0] != TAG_NAME) return null
|
ensure(tag.has(1)) { return null }
|
||||||
|
ensure(tag[0] == TAG_NAME) { return null }
|
||||||
|
ensure(tag[1].isNotEmpty()) { return null }
|
||||||
return tag[1]
|
return tag[1]
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun parseAsHint(tag: Array<String>): AddressHint? {
|
fun parseAsHint(tag: Array<String>): AddressHint? {
|
||||||
if (tag.size < 3 || tag[0] != TAG_NAME || !tag[1].contains(':') || tag[2].isEmpty()) return null
|
ensure(tag.has(2)) { return null }
|
||||||
|
ensure(tag[0] == TAG_NAME) { return null }
|
||||||
|
ensure(tag[1].isNotEmpty()) { return null }
|
||||||
|
ensure(tag[1].contains(':')) { return null }
|
||||||
|
ensure(tag[2].isNotEmpty()) { return null }
|
||||||
return AddressHint(tag[1], tag[2])
|
return AddressHint(tag[1], tag[2])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+5
-1
@@ -22,9 +22,11 @@ package com.vitorpamplona.quartz.nip18Reposts.quotes
|
|||||||
|
|
||||||
import androidx.compose.runtime.Immutable
|
import androidx.compose.runtime.Immutable
|
||||||
import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
||||||
|
import com.vitorpamplona.quartz.nip01Core.core.has
|
||||||
import com.vitorpamplona.quartz.nip01Core.tags.addressables.Address
|
import com.vitorpamplona.quartz.nip01Core.tags.addressables.Address
|
||||||
import com.vitorpamplona.quartz.utils.arrayOfNotNull
|
import com.vitorpamplona.quartz.utils.arrayOfNotNull
|
||||||
import com.vitorpamplona.quartz.utils.bytesUsedInMemory
|
import com.vitorpamplona.quartz.utils.bytesUsedInMemory
|
||||||
|
import com.vitorpamplona.quartz.utils.ensure
|
||||||
import com.vitorpamplona.quartz.utils.pointerSizeInBytes
|
import com.vitorpamplona.quartz.utils.pointerSizeInBytes
|
||||||
|
|
||||||
@Immutable
|
@Immutable
|
||||||
@@ -61,7 +63,9 @@ data class QAddressableTag(
|
|||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun parse(tag: Array<String>): QAddressableTag? {
|
fun parse(tag: Array<String>): QAddressableTag? {
|
||||||
if (tag.size < TAG_SIZE || tag[0] != QTag.TAG_NAME) return null
|
ensure(tag.has(1)) { return null }
|
||||||
|
ensure(tag[0] == QTag.TAG_NAME) { return null }
|
||||||
|
ensure(tag[1].isNotEmpty()) { return null }
|
||||||
val address = Address.parse(tag[1]) ?: return null
|
val address = Address.parse(tag[1]) ?: return null
|
||||||
return QAddressableTag(address, tag.getOrNull(2))
|
return QAddressableTag(address, tag.getOrNull(2))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,11 +23,13 @@ package com.vitorpamplona.quartz.nip22Comments.tags
|
|||||||
import androidx.compose.runtime.Immutable
|
import androidx.compose.runtime.Immutable
|
||||||
import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
import com.vitorpamplona.quartz.nip01Core.core.HexKey
|
||||||
import com.vitorpamplona.quartz.nip01Core.core.Tag
|
import com.vitorpamplona.quartz.nip01Core.core.Tag
|
||||||
|
import com.vitorpamplona.quartz.nip01Core.core.has
|
||||||
import com.vitorpamplona.quartz.nip01Core.core.match
|
import com.vitorpamplona.quartz.nip01Core.core.match
|
||||||
import com.vitorpamplona.quartz.nip01Core.core.valueIfMatches
|
import com.vitorpamplona.quartz.nip01Core.core.valueIfMatches
|
||||||
import com.vitorpamplona.quartz.nip01Core.hints.types.AddressHint
|
import com.vitorpamplona.quartz.nip01Core.hints.types.AddressHint
|
||||||
import com.vitorpamplona.quartz.nip01Core.tags.addressables.Address
|
import com.vitorpamplona.quartz.nip01Core.tags.addressables.Address
|
||||||
import com.vitorpamplona.quartz.utils.arrayOfNotNull
|
import com.vitorpamplona.quartz.utils.arrayOfNotNull
|
||||||
|
import com.vitorpamplona.quartz.utils.ensure
|
||||||
|
|
||||||
@Immutable
|
@Immutable
|
||||||
class RootAddressTag(
|
class RootAddressTag(
|
||||||
@@ -63,7 +65,9 @@ class RootAddressTag(
|
|||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun parseValidAddress(tag: Array<String>): String? {
|
fun parseValidAddress(tag: Array<String>): String? {
|
||||||
if (tag.size < TAG_SIZE || tag[0] != TAG_NAME) return null
|
ensure(tag.has(1)) { return null }
|
||||||
|
ensure(tag[0] == TAG_NAME) { return null }
|
||||||
|
ensure(tag[1].isNotEmpty()) { return null }
|
||||||
return Address.parse(tag[1])?.toValue()
|
return Address.parse(tag[1])?.toValue()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+5
-1
@@ -22,10 +22,12 @@ package com.vitorpamplona.quartz.nip89AppHandlers.recommendation.tags
|
|||||||
|
|
||||||
import androidx.compose.runtime.Immutable
|
import androidx.compose.runtime.Immutable
|
||||||
import com.vitorpamplona.quartz.nip01Core.core.Tag
|
import com.vitorpamplona.quartz.nip01Core.core.Tag
|
||||||
|
import com.vitorpamplona.quartz.nip01Core.core.has
|
||||||
import com.vitorpamplona.quartz.nip01Core.core.match
|
import com.vitorpamplona.quartz.nip01Core.core.match
|
||||||
import com.vitorpamplona.quartz.nip01Core.core.valueIfMatches
|
import com.vitorpamplona.quartz.nip01Core.core.valueIfMatches
|
||||||
import com.vitorpamplona.quartz.nip01Core.tags.addressables.Address
|
import com.vitorpamplona.quartz.nip01Core.tags.addressables.Address
|
||||||
import com.vitorpamplona.quartz.utils.arrayOfNotNull
|
import com.vitorpamplona.quartz.utils.arrayOfNotNull
|
||||||
|
import com.vitorpamplona.quartz.utils.ensure
|
||||||
|
|
||||||
@Immutable
|
@Immutable
|
||||||
class RecommendationTag(
|
class RecommendationTag(
|
||||||
@@ -44,7 +46,9 @@ class RecommendationTag(
|
|||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun parse(tag: Array<String>): RecommendationTag? {
|
fun parse(tag: Array<String>): RecommendationTag? {
|
||||||
if (tag.size < TAG_SIZE || tag[0] != TAG_NAME) return null
|
ensure(tag.has(1)) { return null }
|
||||||
|
ensure(tag[0] == TAG_NAME) { return null }
|
||||||
|
ensure(tag[1].isNotEmpty()) { return null }
|
||||||
val address = Address.parse(tag[1]) ?: return null
|
val address = Address.parse(tag[1]) ?: return null
|
||||||
return RecommendationTag(address, tag.getOrNull(2), tag.getOrNull(3))
|
return RecommendationTag(address, tag.getOrNull(2), tag.getOrNull(3))
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user