All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.skillw.asahi.api.member.namespace.NamespaceContainer.kt Maven / Gradle / Ivy

There is a newer version: 1.6.7-beta-6
Show newest version
package com.skillw.asahi.api.member.namespace

import com.skillw.asahi.api.AsahiManager

/**
 * @className NamespaceContainer
 *
 * @author Glom
 * @date 2023/1/27 16:11 Copyright 2024 Glom.
 */
class NamespaceContainer(private val namespaces: LinkedHashSet = LinkedHashSet()) :
    Set by namespaces {

    init {
        AsahiManager.loadSharedNamespace(this)
    }

    fun namespaceNames(): Array = namespaces.map { it.key }.toTypedArray()

    /**
     * 添加命名空间
     *
     * @param names 命名空间id
     * @return 自身
     */
    fun addNamespaces(vararg names: String) {
        addNamespaces(AsahiManager.getNamespaces(*names))
    }

    /**
     * 删除命名空间
     *
     * @param names 命名空间id
     * @return 自身
     */
    fun removeSpaces(vararg names: String) {
        removeSpaces(AsahiManager.getNamespaces(*names))
    }

    /**
     * 添加命名空间
     *
     * @param namespaces 命名空间
     * @return 自身
     */
    fun addNamespaces(vararg namespaces: Namespace) {
        addNamespaces(namespaces.toSet())
    }

    /**
     * 删除命名空间
     *
     * @param namespaces 命名空间
     * @return 自身
     */
    fun removeSpaces(vararg namespaces: Namespace) {
        removeSpaces(namespaces.toSet())
    }

    /**
     * 添加命名空间
     *
     * @param namespaces 命名空间
     * @return 自身
     */
    fun addNamespaces(namespaces: Collection) {
        this.namespaces.addAll(namespaces)
        this.namespaces.sorted()
    }

    /**
     * 删除命名空间
     *
     * @param namespaces 命名空间
     * @return 自身
     */
    fun removeSpaces(namespaces: Collection) {
        this.namespaces.removeAll(namespaces.toSet())
        this.namespaces.sorted()
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy