Skip to content

Commit

Permalink
refactor:
Browse files Browse the repository at this point in the history
* update new version
  • Loading branch information
Jian-Min-Huang committed May 27, 2022
1 parent 478e684 commit 1375a98
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 21 deletions.
5 changes: 0 additions & 5 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
id("maven-publish")
kotlin("jvm") version "1.6.21"
application
}

group = "net.purefunc"
Expand Down Expand Up @@ -36,8 +35,4 @@ publishing {
from(components["java"])
}
}
}

application {
mainClass.set("net.purefunc.generate.MainKt")
}
48 changes: 32 additions & 16 deletions src/main/kotlin/net/purefunc/generate/Main.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,35 @@ import java.io.FileOutputStream
import java.util.Locale

fun main() {
// collect emoji lines
val lines = mutableListOf<String>()
var flag = false
File("emoji-test.txt").forEachLine { line ->
if (line == "") flag = false
if (flag) lines.add(line)
if (line.startsWith("# subgroup: ")) flag = true
}
val resulta = lines.filter { it.contains("fully-qualified") }.map { it.split(" ") }.map {

val bigEnum = lines.filter {
it.contains("fully-qualified")
}.map {
it.split(" ")
}.map {
val items = mutableListOf<String>()
items.add(it[0])

// find code part
var codeIdx = 0
it.forEachIndexed { index, element -> if (element == "") codeIdx = index }
(0 until codeIdx).forEach { i ->
items.add(it[i])
}

// find index start from E
var idx = 0
it.forEachIndexed { index, element -> if (element.startsWith("E") && element.contains(".")) idx = index }

items.addAll(
// process item name
it.subList(idx + 1, it.size).map { str ->
str.replace("", "")
.replace("", "")
Expand All @@ -38,34 +54,34 @@ fun main() {
.replace("&", "and")
}
)

items
}

val size = (resulta.size / 1000)

val resultList = (0..size).map {
if (resulta.size < 1000 * (it + 1)) {
resulta.subList(1000 * it, resulta.size)
val pageCount = 1000
val pageSize = (bigEnum.size / pageCount)
val pagingItems = (0..pageSize).map { page ->
if (pageCount * (page + 1) > bigEnum.size) {
bigEnum.subList(pageCount * page, bigEnum.size)
} else {

resulta.subList(1000 * it, 1000 * (it + 1))
bigEnum.subList(pageCount * page, pageCount * (page + 1))
}
}

resultList.forEachIndexed { idx, result ->
val fos = FileOutputStream(File("src/main/kotlin/net/purefunc/emoji/Emoji$idx.kt"))
pagingItems.forEachIndexed { fileIdx, item ->
val fos = FileOutputStream(File("src/main/kotlin/net/purefunc/emoji/Emoji$fileIdx.kt"))
fos.write("package net.purefunc.emoji\n".toByteArray())
fos.write("\n".toByteArray())
fos.write("enum class Emoji$idx(\n".toByteArray())
fos.write(" private val code: Int,\n".toByteArray())
fos.write("enum class Emoji$fileIdx(\n".toByteArray())
fos.write(" private val intArray: IntArray,\n".toByteArray())
fos.write(") {\n".toByteArray())
fos.write("\n".toByteArray())

result.forEachIndexed { index, strings ->
item.forEachIndexed { idx, strings ->
val s = " ${
strings.subList(1, strings.size).joinToString("_") { it.uppercase(Locale.getDefault()) }
}(0x${strings[0]})"
if (index == result.size - 1) {
}(intArrayOf(0x${strings[0]}))"
if (idx == item.size - 1) {
fos.write("$s;\n".toByteArray())
} else {
fos.write("$s,\n".toByteArray())
Expand Down
3 changes: 3 additions & 0 deletions src/test/kotlin/net/purefunc/emoji/EmojiTests.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ class EmojiTests {

@Test
internal fun `println emoji`() {
val ints = arrayOf(0x263A, 0xFE0F).toIntArray()
println(String(ints, 0, ints.size))

Emoji0.values().forEach {
println(it)
}
Expand Down

0 comments on commit 1375a98

Please sign in to comment.