diff --git a/dataforge-meta/src/jsMain/kotlin/space/kscience/dataforge/meta/DynamicMeta.kt b/dataforge-meta/src/jsMain/kotlin/space/kscience/dataforge/meta/DynamicMeta.kt index b11c85d6..480edc85 100644 --- a/dataforge-meta/src/jsMain/kotlin/space/kscience/dataforge/meta/DynamicMeta.kt +++ b/dataforge-meta/src/jsMain/kotlin/space/kscience/dataforge/meta/DynamicMeta.kt @@ -53,13 +53,23 @@ public class DynamicMeta(internal val obj: dynamic) : Meta { } override val items: Map - get() = keys().flatMap> { key -> + get() = if (isPrimitive(obj)) { + emptyMap() + } else if (isArray(obj)) { + if((obj as Array).all { isPrimitive(it) }){ + emptyMap() + } else{ + TODO() + } + } else keys().flatMap> { key -> val value = obj[key] ?: return@flatMap emptyList() when { isArray(value) -> { val array = value as Array if (array.all { isPrimitive(it) }) { - emptyList() + //primitive value + //emptyList() + listOf(NameToken(key) to DynamicMeta(value)) } else { array.mapIndexedNotNull { index, it -> val item = DynamicMeta(it) @@ -67,9 +77,6 @@ public class DynamicMeta(internal val obj: dynamic) : Meta { } } } - isPrimitive(obj) -> { - emptyList() - } else -> { val item = DynamicMeta(value) listOf(NameToken(key) to item)