Convert Namespace to kotlin

This commit is contained in:
Paul Hawke 2024-12-06 11:37:54 -06:00
parent 11ade09287
commit a9c872602e

View file

@ -1,26 +1,20 @@
package fr.free.nrw.commons.wikidata.model.page; package fr.free.nrw.commons.wikidata.model.page
import androidx.annotation.NonNull; import fr.free.nrw.commons.wikidata.model.EnumCode
import fr.free.nrw.commons.wikidata.model.EnumCodeMap
import fr.free.nrw.commons.wikidata.model.EnumCode;
import fr.free.nrw.commons.wikidata.model.EnumCodeMap;
/** An enumeration describing the different possible namespace codes. Do not attempt to use this /** An enumeration describing the different possible namespace codes. Do not attempt to use this
* class to preserve URL path information such as Talk: or User: or localization. * class to preserve URL path information such as Talk: or User: or localization.
* @see <a href='https://en.wikipedia.org/wiki/Wikipedia:Namespace'>Wikipedia:Namespace</a> *
* @see <a href='https://www.mediawiki.org/wiki/Extension_default_namespaces'>Extension default namespaces</a> * @see [Wikipedia:Namespace](https://en.wikipedia.org/wiki/Wikipedia:Namespace)
* @see <a href='https://github.com/wikimedia/wikipedia-ios/blob/master/Wikipedia/Code/NSNumber+MWKTitleNamespace.h'>NSNumber+MWKTitleNamespace.h (iOS implementation)</a> * @see [Extension default namespaces](https://www.mediawiki.org/wiki/Extension_default_namespaces)
* @see <a href='https://www.mediawiki.org/wiki/Manual:Namespace#Built-in_namespaces'>Manual:Namespace</a> * @see [NSNumber+MWKTitleNamespace.h
* @see <a href='https://en.wikipedia.org/w/api.php?action=query&meta=siteinfo&siprop=namespaces|namespacealiases'>Namespaces reported by API</a> * @see [Manual:Namespace](https://www.mediawiki.org/wiki/Manual:Namespace.Built-in_namespaces)
* @see [Namespaces reported by API](https://en.wikipedia.org/w/api.php?action=query&meta=siteinfo&siprop=namespaces|namespacealiases)](https://github.com/wikimedia/wikipedia-ios/blob/master/Wikipedia/Code/NSNumber+MWKTitleNamespace.h)
*/ */
public enum Namespace implements EnumCode { enum class Namespace(private val code: Int) : EnumCode {
MEDIA(-2), MEDIA(-2),
SPECIAL(-1) { SPECIAL(-1) { override fun talk(): Boolean = false },
@Override
public boolean talk() {
return false;
}
},
MAIN(0), // Main or Article MAIN(0), // Main or Article
TALK(1), TALK(1),
USER(2), USER(2),
@ -137,38 +131,20 @@ public enum Namespace implements EnumCode {
GADGET_DEFINITION_TALK(2303), GADGET_DEFINITION_TALK(2303),
TOPIC(2600); TOPIC(2600);
private static final int TALK_MASK = 0x1; override fun code(): Int = code
private static final EnumCodeMap<Namespace> MAP = new EnumCodeMap<>(Namespace.class);
private final int code; fun special(): Boolean = this === SPECIAL
@NonNull fun main(): Boolean = this === MAIN
public static Namespace of(int code) {
return MAP.get(code);
}
@Override fun file(): Boolean = this === FILE
public int code() {
return code;
}
public boolean special() { open fun talk(): Boolean = (code and TALK_MASK) == TALK_MASK
return this == SPECIAL;
}
public boolean main() { companion object {
return this == MAIN; private const val TALK_MASK = 0x1
} private val MAP = EnumCodeMap(Namespace::class.java)
public boolean file() { fun of(code: Int): Namespace = MAP[code]
return this == FILE;
}
public boolean talk() {
return (code & TALK_MASK) == TALK_MASK;
}
Namespace(int code) {
this.code = code;
} }
} }