[WASM] Add std text implementations
This commit is contained in:
committed by
TeamCityServer
parent
1b4f519701
commit
9408499da9
@@ -100,10 +100,10 @@ fun main(args: Array<String>) {
|
||||
oneToManyMappingsGenerators.add(lowercase)
|
||||
}
|
||||
|
||||
val categoryTestGenerator: CharCategoryTestGenerator
|
||||
val stringUppercaseGenerators = mutableListOf<StringUppercaseGenerator>()
|
||||
val stringLowercaseGenerators = mutableListOf<StringLowercaseGenerator>()
|
||||
|
||||
val stringUppercaseGenerator: StringUppercaseGenerator
|
||||
val stringLowercaseGenerator: StringLowercaseGenerator
|
||||
val categoryTestGenerator: CharCategoryTestGenerator
|
||||
|
||||
val stringCasingTestGenerator: StringCasingTestGenerator
|
||||
|
||||
@@ -115,7 +115,9 @@ fun main(args: Array<String>) {
|
||||
categoryTestGenerator = CharCategoryTestGenerator(categoryTestFile)
|
||||
|
||||
val commonGeneratedDir = baseDir.resolve("libraries/stdlib/common/src/generated")
|
||||
oneToManyMappingsGenerators.add(OneToManyMappingsGenerator.forTitlecase(commonGeneratedDir.resolve("_OneToManyTitlecaseMappings.kt"), bmpUnicodeDataLines))
|
||||
oneToManyMappingsGenerators.add(
|
||||
OneToManyMappingsGenerator.forTitlecase(commonGeneratedDir.resolve("_OneToManyTitlecaseMappings.kt"), bmpUnicodeDataLines)
|
||||
)
|
||||
|
||||
val jsGeneratedDir = baseDir.resolve("libraries/stdlib/js/src/generated/")
|
||||
addRangesGenerators(jsGeneratedDir, KotlinTarget.JS)
|
||||
@@ -129,8 +131,19 @@ fun main(args: Array<String>) {
|
||||
addRangesGenerators(nativeGeneratedDir, KotlinTarget.Native)
|
||||
addOneToOneMappingsGenerators(nativeGeneratedDir, KotlinTarget.Native)
|
||||
addOneToManyMappingsGenerators(nativeGeneratedDir, KotlinTarget.Native)
|
||||
stringUppercaseGenerator = StringUppercaseGenerator(nativeGeneratedDir.resolve("_StringUppercase.kt"), unicodeDataLines)
|
||||
stringLowercaseGenerator = StringLowercaseGenerator(nativeGeneratedDir.resolve("_StringLowercase.kt"), unicodeDataLines)
|
||||
stringUppercaseGenerators.add(StringUppercaseGenerator(nativeGeneratedDir.resolve("_StringUppercase.kt"), unicodeDataLines))
|
||||
stringLowercaseGenerators.add(
|
||||
StringLowercaseGenerator(nativeGeneratedDir.resolve("_StringLowercase.kt"), unicodeDataLines, KotlinTarget.Native)
|
||||
)
|
||||
|
||||
val wasmGeneratedDir = baseDir.resolve("libraries/stdlib/wasm/src/generated/")
|
||||
addRangesGenerators(wasmGeneratedDir, KotlinTarget.WASM)
|
||||
addOneToOneMappingsGenerators(wasmGeneratedDir, KotlinTarget.WASM)
|
||||
addOneToManyMappingsGenerators(wasmGeneratedDir, KotlinTarget.WASM)
|
||||
stringUppercaseGenerators.add(StringUppercaseGenerator(wasmGeneratedDir.resolve("_StringUppercase.kt"), unicodeDataLines))
|
||||
stringLowercaseGenerators.add(
|
||||
StringLowercaseGenerator(wasmGeneratedDir.resolve("_StringLowercase.kt"), unicodeDataLines, KotlinTarget.WASM)
|
||||
)
|
||||
|
||||
val nativeTestDir = baseDir.resolve("kotlin-native/backend.native/tests/stdlib_external/text")
|
||||
stringCasingTestGenerator = StringCasingTestGenerator(nativeTestDir)
|
||||
@@ -186,15 +199,17 @@ fun main(args: Array<String>) {
|
||||
it.generate()
|
||||
}
|
||||
|
||||
stringUppercaseGenerator.let {
|
||||
stringUppercaseGenerators.forEach {
|
||||
specialCasingLines.forEach { line -> it.appendSpecialCasingLine(line) }
|
||||
it.generate()
|
||||
}
|
||||
stringLowercaseGenerator.let {
|
||||
|
||||
stringLowercaseGenerators.forEach {
|
||||
specialCasingLines.forEach { line -> it.appendSpecialCasingLine(line) }
|
||||
wordBreakPropertyLines.forEach { line -> it.appendWordBreakPropertyLine(line) }
|
||||
it.generate()
|
||||
}
|
||||
|
||||
stringCasingTestGenerator.let {
|
||||
derivedCorePropertiesLines.forEach { line -> it.appendDerivedCorePropertiesLine(line) }
|
||||
it.generate()
|
||||
|
||||
+2
-1
@@ -18,6 +18,7 @@ import java.io.FileWriter
|
||||
internal class StringLowercaseGenerator(
|
||||
private val outputFile: File,
|
||||
unicodeDataLines: List<UnicodeDataLine>,
|
||||
private val target: KotlinTarget,
|
||||
) : StringCasingGenerator(unicodeDataLines) {
|
||||
|
||||
private val casedRanges = mutableListOf<IntRange>()
|
||||
@@ -60,7 +61,7 @@ internal class StringLowercaseGenerator(
|
||||
casedRanges.sortBy { it.first }
|
||||
caseIgnorableRanges.sortBy { it.first }
|
||||
|
||||
val strategy = RangesWritingStrategy.of(KotlinTarget.Native)
|
||||
val strategy = RangesWritingStrategy.of(target)
|
||||
|
||||
FileWriter(outputFile).use { writer ->
|
||||
writer.writeHeader(outputFile, "kotlin.text")
|
||||
|
||||
+4
-3
@@ -5,6 +5,7 @@
|
||||
|
||||
package generators.unicode.ranges
|
||||
|
||||
import templates.Backend
|
||||
import templates.KotlinTarget
|
||||
import templates.Platform
|
||||
import java.io.FileWriter
|
||||
@@ -21,15 +22,15 @@ internal sealed class RangesWritingStrategy {
|
||||
fun of(target: KotlinTarget, wrapperName: String? = null): RangesWritingStrategy {
|
||||
return when (target.platform) {
|
||||
Platform.JS -> JsRangesWritingStrategy(wrapperName!!)
|
||||
else -> NativeRangesWritingStrategy
|
||||
else -> NativeRangesWritingStrategy(useNativeRangesAnnotation = target.backend != Backend.Wasm)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal object NativeRangesWritingStrategy : RangesWritingStrategy() {
|
||||
internal class NativeRangesWritingStrategy(private val useNativeRangesAnnotation: Boolean) : RangesWritingStrategy() {
|
||||
override val indentation: String get() = ""
|
||||
override val rangesAnnotation: String get() = "@SharedImmutable\n"
|
||||
override val rangesAnnotation: String get() = if (useNativeRangesAnnotation) "@SharedImmutable\n" else ""
|
||||
override val rangesVisibilityModifier: String get() = "private"
|
||||
override fun beforeWritingRanges(writer: FileWriter) {}
|
||||
override fun afterWritingRanges(writer: FileWriter) {}
|
||||
|
||||
Reference in New Issue
Block a user