Fixes r-tag migration
This commit is contained in:
@@ -20,19 +20,12 @@
|
|||||||
*/
|
*/
|
||||||
package com.vitorpamplona.quartz.nip01Core.tags.references
|
package com.vitorpamplona.quartz.nip01Core.tags.references
|
||||||
|
|
||||||
import com.vitorpamplona.quartz.nip01Core.HexKey
|
|
||||||
import com.vitorpamplona.quartz.nip01Core.core.Event
|
import com.vitorpamplona.quartz.nip01Core.core.Event
|
||||||
|
|
||||||
fun Event.forEachReferenceTag(onEach: (eventId: HexKey) -> Unit) = tags.forEachReference(onEach)
|
|
||||||
|
|
||||||
fun Event.anyReferenceTag(onEach: (str: String) -> Boolean) = tags.anyReference(onEach)
|
|
||||||
|
|
||||||
fun Event.hasReferenceTag() = tags.hasReferences()
|
fun Event.hasReferenceTag() = tags.hasReferences()
|
||||||
|
|
||||||
fun Event.references() = tags.references()
|
fun Event.references() = tags.references()
|
||||||
|
|
||||||
fun Event.isTaggedReference(hashtag: String) = tags.isTaggedReference(hashtag)
|
fun Event.isTaggedReference(reference: String) = tags.isTaggedReference(reference)
|
||||||
|
|
||||||
fun Event.isTaggedReferences(hashtags: Set<String>) = tags.isTaggedReferences(hashtags)
|
fun Event.isTaggedReferences(references: Set<String>) = tags.isTaggedReferences(references)
|
||||||
|
|
||||||
fun Event.firstIsTaggedReferences(hashtags: Set<String>) = tags.firstIsTaggedReferences(hashtags)
|
|
||||||
|
|||||||
+20
@@ -27,14 +27,34 @@ class ReferenceTag {
|
|||||||
const val TAG_NAME = "r"
|
const val TAG_NAME = "r"
|
||||||
const val TAG_SIZE = 2
|
const val TAG_SIZE = 2
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
fun isTagged(
|
||||||
|
tag: Array<String>,
|
||||||
|
reference: String,
|
||||||
|
): Boolean = tag.size >= 2 && tag[0] == TAG_NAME && tag[1] == reference
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
fun isIn(
|
||||||
|
tag: Array<String>,
|
||||||
|
references: Set<String>,
|
||||||
|
): Boolean = tag.size >= 2 && tag[0] == TAG_NAME && tag[1] in references
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
fun hasReference(tag: Array<String>): Boolean {
|
||||||
|
if (tag.size < TAG_SIZE || tag[0] != TAG_NAME) return false
|
||||||
|
return tag[1].isNotEmpty()
|
||||||
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun parse(tag: Array<String>): String? {
|
fun parse(tag: Array<String>): String? {
|
||||||
if (tag.size < TAG_SIZE || tag[0] != TAG_NAME) return null
|
if (tag.size < TAG_SIZE || tag[0] != TAG_NAME) return null
|
||||||
return tag[1]
|
return tag[1]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
fun assemble(url: String) = arrayOf(TAG_NAME, HttpUrlFormatter.normalize(url))
|
fun assemble(url: String) = arrayOf(TAG_NAME, HttpUrlFormatter.normalize(url))
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
fun assemble(urls: List<String>): List<Array<String>> = urls.mapTo(HashSet()) { HttpUrlFormatter.normalize(it) }.map { arrayOf(TAG_NAME, it) }
|
fun assemble(urls: List<String>): List<Array<String>> = urls.mapTo(HashSet()) { HttpUrlFormatter.normalize(it) }.map { arrayOf(TAG_NAME, it) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-18
@@ -20,26 +20,13 @@
|
|||||||
*/
|
*/
|
||||||
package com.vitorpamplona.quartz.nip01Core.tags.references
|
package com.vitorpamplona.quartz.nip01Core.tags.references
|
||||||
|
|
||||||
import com.vitorpamplona.quartz.nip01Core.HexKey
|
|
||||||
import com.vitorpamplona.quartz.nip01Core.core.TagArray
|
import com.vitorpamplona.quartz.nip01Core.core.TagArray
|
||||||
import com.vitorpamplona.quartz.nip01Core.core.anyTagged
|
import com.vitorpamplona.quartz.nip01Core.core.any
|
||||||
import com.vitorpamplona.quartz.nip01Core.core.firstAnyLowercaseTaggedValue
|
|
||||||
import com.vitorpamplona.quartz.nip01Core.core.forEachTagged
|
|
||||||
import com.vitorpamplona.quartz.nip01Core.core.hasTagWithContent
|
|
||||||
import com.vitorpamplona.quartz.nip01Core.core.isAnyLowercaseTagged
|
|
||||||
import com.vitorpamplona.quartz.nip01Core.core.isTagged
|
|
||||||
import com.vitorpamplona.quartz.nip01Core.core.mapValues
|
|
||||||
|
|
||||||
fun TagArray.forEachReference(onEach: (eventId: HexKey) -> Unit) = this.forEachTagged(ReferenceTag.TAG_NAME, onEach)
|
fun TagArray.hasReferences() = this.any(ReferenceTag::hasReference)
|
||||||
|
|
||||||
fun TagArray.anyReference(onEach: (str: String) -> Boolean) = this.anyTagged(ReferenceTag.TAG_NAME, onEach)
|
fun TagArray.references() = this.mapNotNull(ReferenceTag::parse)
|
||||||
|
|
||||||
fun TagArray.hasReferences() = this.hasTagWithContent(ReferenceTag.TAG_NAME)
|
fun TagArray.isTaggedReference(reference: String) = this.any(ReferenceTag::isTagged, reference)
|
||||||
|
|
||||||
fun TagArray.references() = this.mapValues(ReferenceTag.TAG_NAME)
|
fun TagArray.isTaggedReferences(references: Set<String>) = this.any(ReferenceTag::isIn, references)
|
||||||
|
|
||||||
fun TagArray.isTaggedReference(hashtag: String) = this.isTagged(ReferenceTag.TAG_NAME, hashtag, true)
|
|
||||||
|
|
||||||
fun TagArray.isTaggedReferences(hashtags: Set<String>) = this.isAnyLowercaseTagged(ReferenceTag.TAG_NAME, hashtags)
|
|
||||||
|
|
||||||
fun TagArray.firstIsTaggedReferences(hashtags: Set<String>) = this.firstAnyLowercaseTaggedValue(ReferenceTag.TAG_NAME, hashtags)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user