Better parse multiple imetas with multiple urls into appropriate properties
This commit is contained in:
@@ -89,10 +89,7 @@ object Nip19Parser {
|
||||
if (uri == null) return null
|
||||
|
||||
try {
|
||||
val matcher = nip19PlusNip46regex.find(uri)
|
||||
if (matcher == null) {
|
||||
return null
|
||||
}
|
||||
val matcher = nip19PlusNip46regex.find(uri) ?: return null
|
||||
|
||||
val type = matcher.groups[3]?.value ?: matcher.groups[5]?.value // npub1
|
||||
val key = matcher.groups[4]?.value ?: matcher.groups[6]?.value // bech32
|
||||
|
||||
@@ -42,18 +42,14 @@ class IMetaTag(
|
||||
const val TAG_NAME = "imeta"
|
||||
const val ANCHOR_PROPERTY = "url"
|
||||
|
||||
fun parse(tag: Array<String>): IMetaTag? {
|
||||
fun parse(tag: Array<String>): List<IMetaTag>? {
|
||||
ensure(tag.has(1)) { return null }
|
||||
ensure(tag[0] == TAG_NAME) { return null }
|
||||
ensure(tag[1].isNotEmpty()) { return null }
|
||||
|
||||
val allTags = parseIMeta(tag)
|
||||
val url = allTags[ANCHOR_PROPERTY]?.firstOrNull()
|
||||
|
||||
return if (url != null) {
|
||||
IMetaTag(url, allTags.minus(ANCHOR_PROPERTY))
|
||||
} else {
|
||||
null
|
||||
return allTags[ANCHOR_PROPERTY]?.map {
|
||||
IMetaTag(it, allTags.minus(ANCHOR_PROPERTY))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -22,6 +22,6 @@ package com.vitorpamplona.quartz.nip92IMeta
|
||||
|
||||
import com.vitorpamplona.quartz.nip01Core.core.TagArray
|
||||
|
||||
fun TagArray.imetas() = this.mapNotNull(IMetaTag::parse)
|
||||
fun TagArray.imetas() = this.mapNotNull(IMetaTag::parse).flatten()
|
||||
|
||||
fun TagArray.imetasByUrl() = this.imetas().associateBy { it.url }
|
||||
|
||||
Reference in New Issue
Block a user