mirror of
https://github.com/InsanusMokrassar/MicroUtils.git
synced 2026-10-25 14:17:14 +00:00
some fixes
This commit is contained in:
1 parent
0dd8f41eb0
commit
d94cd7ea94
7 files changed
+4303
-2736
No files matched your search
@@ -0,0 +1 @@
|
||||
[{"alpha3-b":"aar","alpha3-t":null,"alpha2":"aa","English":"Afar","French":"afar"},{"alpha3-b":"abk","alpha3-t":null,"alpha2":"ab","English":"Abkhazian","French":"abkhaze"},{"alpha3-b":"ace","alpha3-t":null,"alpha2":null,"English":"Achinese","French":"aceh"},{"alpha3-b":"ach","alpha3-t":null,"alpha2":null,"English":"Acoli","French":"acoli"},{"alpha3-b":"ada","alpha3-t":null,"alpha2":null,"English":"Adangme","French":"adangme"},{"alpha3-b":"ady","alpha3-t":null,"alpha2":null,"English":"Adyghe; Adygei","French":"adyghé"},{"alpha3-b":"afa","alpha3-t":null,"alpha2":null,"English":"Afro-Asiatic languages","French":"afro-asiatiques, langues"},{"alpha3-b":"afh","alpha3-t":null,"alpha2":null,"English":"Afrihili","French":"afrihili"},{"alpha3-b":"afr","alpha3-t":null,"alpha2":"af","English":"Afrikaans","French":"afrikaans"},{"alpha3-b":"ain","alpha3-t":null,"alpha2":null,"English":"Ainu","French":"aïnou"},{"alpha3-b":"aka","alpha3-t":null,"alpha2":"ak","English":"Akan","French":"akan"},{"alpha3-b":"akk","alpha3-t":null,"alpha2":null,"English":"Akkadian","French":"akkadien"},{"alpha3-b":"alb","alpha3-t":"sqi","alpha2":"sq","English":"Albanian","French":"albanais"},{"alpha3-b":"ale","alpha3-t":null,"alpha2":null,"English":"Aleut","French":"aléoute"},{"alpha3-b":"alg","alpha3-t":null,"alpha2":null,"English":"Algonquian languages","French":"algonquines, langues"},{"alpha3-b":"alt","alpha3-t":null,"alpha2":null,"English":"Southern Altai","French":"altai du Sud"},{"alpha3-b":"amh","alpha3-t":null,"alpha2":"am","English":"Amharic","French":"amharique"},{"alpha3-b":"ang","alpha3-t":null,"alpha2":null,"English":"English, Old (ca.450-1100)","French":"anglo-saxon (ca.450-1100)"},{"alpha3-b":"anp","alpha3-t":null,"alpha2":null,"English":"Angika","French":"angika"},{"alpha3-b":"apa","alpha3-t":null,"alpha2":null,"English":"Apache languages","French":"apaches, langues"},{"alpha3-b":"ara","alpha3-t":null,"alpha2":"ar","English":"Arabic","French":"arabe"},{"alpha3-b":"arc","alpha3-t":null,"alpha2":null,"English":"Official Aramaic (700-300 BCE); Imperial Aramaic (700-300 BCE)","French":"araméen d'empire (700-300 BCE)"},{"alpha3-b":"arg","alpha3-t":null,"alpha2":"an","English":"Aragonese","French":"aragonais"},{"alpha3-b":"arm","alpha3-t":"hye","alpha2":"hy","English":"Armenian","French":"arménien"},{"alpha3-b":"arn","alpha3-t":null,"alpha2":null,"English":"Mapudungun; Mapuche","French":"mapudungun; mapuche; mapuce"},{"alpha3-b":"arp","alpha3-t":null,"alpha2":null,"English":"Arapaho","French":"arapaho"},{"alpha3-b":"art","alpha3-t":null,"alpha2":null,"English":"Artificial languages","French":"artificielles, langues"},{"alpha3-b":"arw","alpha3-t":null,"alpha2":null,"English":"Arawak","French":"arawak"},{"alpha3-b":"asm","alpha3-t":null,"alpha2":"as","English":"Assamese","French":"assamais"},{"alpha3-b":"ast","alpha3-t":null,"alpha2":null,"English":"Asturian; Bable; Leonese; Asturleonese","French":"asturien; bable; léonais; asturoléonais"},{"alpha3-b":"ath","alpha3-t":null,"alpha2":null,"English":"Athapascan languages","French":"athapascanes, langues"},{"alpha3-b":"aus","alpha3-t":null,"alpha2":null,"English":"Australian languages","French":"australiennes, langues"},{"alpha3-b":"ava","alpha3-t":null,"alpha2":"av","English":"Avaric","French":"avar"},{"alpha3-b":"ave","alpha3-t":null,"alpha2":"ae","English":"Avestan","French":"avestique"},{"alpha3-b":"awa","alpha3-t":null,"alpha2":null,"English":"Awadhi","French":"awadhi"},{"alpha3-b":"aym","alpha3-t":null,"alpha2":"ay","English":"Aymara","French":"aymara"},{"alpha3-b":"aze","alpha3-t":null,"alpha2":"az","English":"Azerbaijani","French":"azéri"},{"alpha3-b":"bad","alpha3-t":null,"alpha2":null,"English":"Banda languages","French":"banda, langues"},{"alpha3-b":"bai","alpha3-t":null,"alpha2":null,"English":"Bamileke languages","French":"bamiléké, langues"},{"alpha3-b":"bak","alpha3-t":null,"alpha2":"ba","English":"Bashkir","French":"bachkir"},{"alpha3-b":"bal","alpha3-t":null,"alpha2":null,"English":"Baluchi","French":"baloutchi"},{"alpha3-b":"bam","alpha3-t":null,"alpha2":"bm","English":"Bambara","French":"bambara"},{"alpha3-b":"ban","alpha3-t":null,"alpha2":null,"English":"Balinese","French":"balinais"},{"alpha3-b":"baq","alpha3-t":"eus","alpha2":"eu","English":"Basque","French":"basque"},{"alpha3-b":"bas","alpha3-t":null,"alpha2":null,"English":"Basa","French":"basa"},{"alpha3-b":"bat","alpha3-t":null,"alpha2":null,"English":"Baltic languages","French":"baltes, langues"},{"alpha3-b":"bej","alpha3-t":null,"alpha2":null,"English":"Beja; Bedawiyet","French":"bedja"},{"alpha3-b":"bel","alpha3-t":null,"alpha2":"be","English":"Belarusian","French":"biélorusse"},{"alpha3-b":"bem","alpha3-t":null,"alpha2":null,"English":"Bemba","French":"bemba"},{"alpha3-b":"ben","alpha3-t":null,"alpha2":"bn","English":"Bengali","French":"bengali"},{"alpha3-b":"ber","alpha3-t":null,"alpha2":null,"English":"Berber languages","French":"berbères, langues"},{"alpha3-b":"bho","alpha3-t":null,"alpha2":nulLine truncated
|
||||
@@ -22,17 +22,24 @@ private const val baseClassSerializerAnnotationName = "@Serializable(${baseClass
|
||||
|
||||
@Serializable
|
||||
private data class LanguageCode(
|
||||
@SerialName("alpha2")
|
||||
val tag: String,
|
||||
@SerialName("English")
|
||||
val title: String
|
||||
)
|
||||
val title: String,
|
||||
@SerialName("alpha2")
|
||||
val alpha: String? = null,
|
||||
@SerialName("alpha3-b")
|
||||
val alpha2: String? = null,
|
||||
@SerialName("alpha3-t")
|
||||
val alpha3: String? = null,
|
||||
) {
|
||||
val tag: String
|
||||
get() = alpha ?: alpha2 ?: alpha3!!
|
||||
}
|
||||
|
||||
fun String.adaptAsTitle() = if (first().isDigit()) {
|
||||
fun String.adaptAsTitle() = (if (first().isDigit()) {
|
||||
"L$this"
|
||||
} else {
|
||||
this
|
||||
}
|
||||
}).replace(".", "_").replace("'", "_")
|
||||
|
||||
fun String.normalized() = Normalizer.normalize(this, Normalizer.Form.NFD).replace(Regex("[^\\p{ASCII}]"), "")
|
||||
|
||||
@@ -73,7 +80,10 @@ data class Tag(
|
||||
val title: String,
|
||||
val tag: String,
|
||||
val subtags: List<Tag>
|
||||
)
|
||||
) {
|
||||
val adaptedTitle
|
||||
get() = title.adaptAsTitle()
|
||||
}
|
||||
|
||||
private fun printLanguageCodeAndTags(
|
||||
tag: Tag,
|
||||
@@ -81,17 +91,19 @@ private fun printLanguageCodeAndTags(
|
||||
indents: String = " "
|
||||
): String = if (tag.subtags.isEmpty()) {
|
||||
"""${indents}${baseClassSerializerAnnotationName}
|
||||
${indents}object ${tag.title} : ${parent ?.title ?: baseClassName}() { override val code: String = "${tag.tag}"${parent ?.let { parent -> "; override val parentLang: ${parent.title} get() = ${parent.title};" } ?: ""} }"""
|
||||
${indents}object ${tag.adaptedTitle} : ${parent ?.adaptedTitle ?: baseClassName} { override val code: String = "${tag.tag}"${parent ?.let { parent -> "; override val parentLang: ${parent.adaptedTitle} get() = ${parent.adaptedTitle}" } ?: ""}; override fun toString() = code }"""
|
||||
} else {
|
||||
"""
|
||||
${indents}${baseClassSerializerAnnotationName}
|
||||
${indents}sealed class ${tag.title} : ${parent ?.title ?: baseClassName}() {
|
||||
${indents} override val code: String = "${tag.tag}"${parent ?.let { parent -> "\n${indents} override val parentLang: ${parent.title} get() = ${parent.title};" } ?: ""}
|
||||
${indents}sealed interface ${tag.adaptedTitle} : ${parent ?.adaptedTitle ?: baseClassName} {
|
||||
|
||||
${tag.subtags.joinToString("\n") { printLanguageCodeAndTags(it, tag, "${indents} ") }}
|
||||
|
||||
${indents} ${baseClassSerializerAnnotationName}
|
||||
${indents} companion object : ${tag.title}()
|
||||
${indents} companion object : ${tag.adaptedTitle} {
|
||||
${indents} override val code: String = "${tag.tag}"${parent ?.let { parent -> "\n${indents} override val parentLang: ${parent.adaptedTitle} get() = ${parent.adaptedTitle};" } ?: ""}
|
||||
${indents} override fun toString() = code
|
||||
${indents} }
|
||||
${indents}}
|
||||
"""
|
||||
}
|
||||
@@ -105,23 +117,22 @@ import kotlinx.serialization.Serializable
|
||||
* https://datahub.io/core/language-codes/ files (base and tags) and create the whole hierarchy using it.
|
||||
*/
|
||||
${baseClassSerializerAnnotationName}
|
||||
sealed class $baseClassName {
|
||||
abstract val code: String
|
||||
open val parentLang: $baseClassName?
|
||||
get() = null
|
||||
open val withoutDialect: String
|
||||
sealed interface $baseClassName {
|
||||
val code: String
|
||||
val parentLang: $baseClassName?
|
||||
get() = code.split("-").takeIf { it.size > 1 } ?.first() ?.let(::$unknownBaseClassName)
|
||||
val withoutDialect: String
|
||||
get() = parentLang ?.code ?: code
|
||||
|
||||
${tags.joinToString("\n") { printLanguageCodeAndTags(it, indents = " ") } }
|
||||
|
||||
$baseClassSerializerAnnotationName
|
||||
data class $unknownBaseClassName (override val code: String) : $baseClassName() {
|
||||
data class $unknownBaseClassName (override val code: String) : $baseClassName {
|
||||
override val parentLang = code.dropLastWhile { it != '-' }.removeSuffix("-").takeIf { it.length > 0 } ?.let(::$unknownBaseClassName)
|
||||
}
|
||||
@Deprecated("Renamed", ReplaceWith("$baseClassName.$unknownBaseClassName", "${if (prePackage.isNotEmpty()) "$prePackage." else ""}$baseClassName.$unknownBaseClassName"))
|
||||
val $oldUnknownBaseClassName = $unknownBaseClassName
|
||||
|
||||
override fun toString() = code
|
||||
val $oldUnknownBaseClassName
|
||||
get() = $unknownBaseClassName
|
||||
}
|
||||
@Deprecated("Renamed", ReplaceWith("$baseClassName", "${if (prePackage.isNotEmpty()) "$prePackage." else ""}$baseClassName"))
|
||||
typealias $oldBaseClassName = $baseClassName
|
||||
@@ -133,7 +144,7 @@ fun createStringConverterCode(tags: List<Tag>, prePackage: String): String {
|
||||
pretitle: String = baseClassName,
|
||||
indents: String = " "
|
||||
): String {
|
||||
val currentTitle = "$pretitle.${tag.title}"
|
||||
val currentTitle = "$pretitle.${tag.adaptedTitle}"
|
||||
return """${indents}$currentTitle.code -> $currentTitle${if (tag.subtags.isNotEmpty()) tag.subtags.joinToString("\n", "\n") { createDeserializeVariantForTag(it, currentTitle, indents) } else ""}"""
|
||||
}
|
||||
fun createInheritorVariantForTag(
|
||||
@@ -141,7 +152,7 @@ fun createStringConverterCode(tags: List<Tag>, prePackage: String): String {
|
||||
pretitle: String = baseClassName,
|
||||
indents: String = " "
|
||||
): String {
|
||||
val currentTitle = "$pretitle.${tag.title}"
|
||||
val currentTitle = "$pretitle.${tag.adaptedTitle}"
|
||||
val subtags = if (tag.subtags.isNotEmpty()) {
|
||||
tag.subtags.joinToString(",\n", ",\n") { createInheritorVariantForTag(it, currentTitle, "$indents ") }
|
||||
} else {
|
||||
@@ -155,7 +166,7 @@ fun createStringConverterCode(tags: List<Tag>, prePackage: String): String {
|
||||
indents: String = " ",
|
||||
codeSuffix: String = ""
|
||||
): String {
|
||||
val currentTitle = "$pretitle.${tag.title}"
|
||||
val currentTitle = "$pretitle.${tag.adaptedTitle}"
|
||||
val subtags = if (tag.subtags.isNotEmpty()) {
|
||||
tag.subtags.joinToString(",\n", ",\n") { createInheritorVariantForMapForTag(it, currentTitle, "$indents ", codeSuffix) }
|
||||
} else {
|
||||
@@ -266,7 +277,7 @@ suspend fun main(vararg args: String) {
|
||||
File(outputFolder, "LanguageCodes.kt").apply {
|
||||
delete()
|
||||
createNewFile()
|
||||
writeText(targetPackagePrefix + buildKtFileContent(tags, targetPackage ?: ""))
|
||||
writeText("@file:Suppress(\"SERIALIZER_TYPE_INCOMPATIBLE\")\n\n" + targetPackagePrefix + buildKtFileContent(tags, targetPackage ?: ""))
|
||||
}
|
||||
|
||||
File(outputFolder, "StringToLanguageCodes.kt").apply {
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
[{"lang":"af","langType":"af","territory":null,"revGenDate":null,"defs":9,"dftLang":0,"file":"af.xml"},{"lang":"af-NA","langType":"af","territory":"NA","revGenDate":null,"defs":2,"dftLang":0,"file":"af_NA.xml"},{"lang":"af-ZA","langType":"af","territory":"ZA","revGenDate":null,"defs":0,"dftLang":0,"file":"af_ZA.xml"},{"lang":"agq","langType":"agq","territory":null,"revGenDate":null,"defs":6,"dftLang":0,"file":"agq.xml"},{"lang":"agq-CM","langType":"agq","territory":"CM","revGenDate":null,"defs":0,"dftLang":0,"file":"agq_CM.xml"},{"lang":"ak","langType":"ak","territory":null,"revGenDate":null,"defs":6,"dftLang":0,"file":"ak.xml"},{"lang":"ak-GH","langType":"ak","territory":"GH","revGenDate":null,"defs":0,"dftLang":0,"file":"ak_GH.xml"},{"lang":"am","langType":"am","territory":null,"revGenDate":null,"defs":9,"dftLang":0,"file":"am.xml"},{"lang":"am-ET","langType":"am","territory":"ET","revGenDate":null,"defs":0,"dftLang":0,"file":"am_ET.xml"},{"lang":"ar","langType":"ar","territory":null,"revGenDate":null,"defs":10,"dftLang":0,"file":"ar.xml"},{"lang":"ar-001","langType":"ar","territory":1,"revGenDate":null,"defs":0,"dftLang":0,"file":"ar_001.xml"},{"lang":"ar-AE","langType":"ar","territory":"AE","revGenDate":null,"defs":3,"dftLang":0,"file":"ar_AE.xml"},{"lang":"ar-BH","langType":"ar","territory":"BH","revGenDate":null,"defs":0,"dftLang":0,"file":"ar_BH.xml"},{"lang":"ar-DJ","langType":"ar","territory":"DJ","revGenDate":null,"defs":1,"dftLang":0,"file":"ar_DJ.xml"},{"lang":"ar-DZ","langType":"ar","territory":"DZ","revGenDate":null,"defs":2,"dftLang":0,"file":"ar_DZ.xml"},{"lang":"ar-EG","langType":"ar","territory":"EG","revGenDate":null,"defs":1,"dftLang":0,"file":"ar_EG.xml"},{"lang":"ar-EH","langType":"ar","territory":"EH","revGenDate":null,"defs":1,"dftLang":0,"file":"ar_EH.xml"},{"lang":"ar-ER","langType":"ar","territory":"ER","revGenDate":null,"defs":1,"dftLang":0,"file":"ar_ER.xml"},{"lang":"ar-IL","langType":"ar","territory":"IL","revGenDate":null,"defs":1,"dftLang":0,"file":"ar_IL.xml"},{"lang":"ar-IQ","langType":"ar","territory":"IQ","revGenDate":null,"defs":1,"dftLang":0,"file":"ar_IQ.xml"},{"lang":"ar-JO","langType":"ar","territory":"JO","revGenDate":null,"defs":1,"dftLang":0,"file":"ar_JO.xml"},{"lang":"ar-KM","langType":"ar","territory":"KM","revGenDate":null,"defs":1,"dftLang":0,"file":"ar_KM.xml"},{"lang":"ar-KW","langType":"ar","territory":"KW","revGenDate":null,"defs":0,"dftLang":0,"file":"ar_KW.xml"},{"lang":"ar-LB","langType":"ar","territory":"LB","revGenDate":null,"defs":2,"dftLang":0,"file":"ar_LB.xml"},{"lang":"ar-LY","langType":"ar","territory":"LY","revGenDate":null,"defs":3,"dftLang":0,"file":"ar_LY.xml"},{"lang":"ar-MA","langType":"ar","territory":"MA","revGenDate":null,"defs":3,"dftLang":0,"file":"ar_MA.xml"},{"lang":"ar-MR","langType":"ar","territory":"MR","revGenDate":null,"defs":2,"dftLang":0,"file":"ar_MR.xml"},{"lang":"ar-OM","langType":"ar","territory":"OM","revGenDate":null,"defs":0,"dftLang":0,"file":"ar_OM.xml"},{"lang":"ar-PS","langType":"ar","territory":"PS","revGenDate":null,"defs":1,"dftLang":0,"file":"ar_PS.xml"},{"lang":"ar-QA","langType":"ar","territory":"QA","revGenDate":null,"defs":0,"dftLang":0,"file":"ar_QA.xml"},{"lang":"ar-SA","langType":"ar","territory":"SA","revGenDate":null,"defs":3,"dftLang":0,"file":"ar_SA.xml"},{"lang":"ar-SD","langType":"ar","territory":"SD","revGenDate":null,"defs":0,"dftLang":0,"file":"ar_SD.xml"},{"lang":"ar-SO","langType":"ar","territory":"SO","revGenDate":null,"defs":1,"dftLang":0,"file":"ar_SO.xml"},{"lang":"ar-SS","langType":"ar","territory":"SS","revGenDate":null,"defs":1,"dftLang":0,"file":"ar_SS.xml"},{"lang":"ar-SY","langType":"ar","territory":"SY","revGenDate":null,"defs":1,"dftLang":0,"file":"ar_SY.xml"},{"lang":"ar-TD","langType":"ar","territory":"TD","revGenDate":null,"defs":0,"dftLang":0,"file":"ar_TD.xml"},{"lang":"ar-TN","langType":"ar","territory":"TN","revGenDate":null,"defs":2,"dftLang":0,"file":"ar_TN.xml"},{"lang":"ar-YE","langType":"ar","territory":"YE","revGenDate":null,"defs":0,"dftLang":0,"file":"ar_YE.xml"},{"lang":"as","langType":"as","territory":null,"revGenDate":null,"defs":4,"dftLang":0,"file":"as.xml"},{"lang":"as-IN","langType":"as","territory":"IN","revGenDate":null,"defs":0,"dftLang":0,"file":"as_IN.xml"},{"lang":"asa","langType":"asa","territory":null,"revGenDate":null,"defs":6,"dftLang":0,"file":"asa.xml"},{"lang":"asa-TZ","langType":"asa","territory":"TZ","revGenDate":null,"defs":0,"dftLang":0,"file":"asa_TZ.xml"},{"lang":"ast","langType":"ast","territory":null,"revGenDate":null,"defs":9,"dftLang":0,"file":"ast.xml"},{"lang":"ast-ES","langType":"ast","territory":"ES","revGenDate":null,"defs":0,"dftLang":0,"file":"ast_ES.xml"},{"lang":"az","langType":"az","territory":null,"revGenDate":null,"defs":9,"dftLang":0,"file":"az.xml"},{"lang":"az-Cyrl","langType":"az","territory":null,"revGenDate":null,"defs":5,"dftLang":0,"file":"az_Cyrl.xml"},{"lang":"az-Cyrl-AZ","langType":"az","territory":"AZ","revGenDLine truncated
|
||||
Reference in new issue
Block a user