Skip to content

Commit

Permalink
icerockdev#329 extract LanguageType to separate file
Browse files Browse the repository at this point in the history
  • Loading branch information
Alex009 committed Jul 24, 2022
1 parent 34d66c5 commit 8a16392
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 49 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
/*
* Copyright 2022 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license.
*/

package dev.icerock.gradle.generator

import java.util.Locale as JvmLocale

sealed interface LanguageType {

fun toAndroidResourcesString(): String

object Base : LanguageType {
override fun toAndroidResourcesString(): String = "values"
}

class Locale(languageTag: String) : LanguageType {

private val locale: JvmLocale = JvmLocale.forLanguageTag(languageTag)

fun toBcpString(): String = locale.toLanguageTag()
fun toLocaleString(): String = locale.toString()
override fun toAndroidResourcesString(): String = buildString {
append("values")
append("-")
append(locale.language)
if (locale.country.isNotBlank()) {
append("-r")
append(locale.country)
}
}

/**
* Throw an error here so that we safeguard ourselves from implcitly calling `Local.toString`.
* You should always use the more explicit methods defined above.
*/
override fun toString(): String = TODO("Use toLocaleString or toBcpString instead!")

override fun hashCode(): Int = locale.hashCode()
override fun equals(other: Any?): Boolean {
return other is Locale && other.locale == locale
}
}

companion object {

private const val BASE = "base"

fun fromFileName(fileName: String): LanguageType = when (fileName) {
BASE -> Base
else -> Locale(fileName.replace("-r", "-"))
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,57 +13,8 @@ import dev.icerock.gradle.generator.jvm.JvmStringsGenerator
import dev.icerock.gradle.utils.removeLineWraps
import org.gradle.api.file.FileTree
import java.io.File
import java.util.Locale as JvmLocale
import javax.xml.parsers.DocumentBuilderFactory

sealed interface LanguageType {

fun toAndroidResourcesString(): String

object Base : LanguageType {
override fun toAndroidResourcesString(): String = "values"
}

class Locale(languageTag: String) : LanguageType {

private val locale: JvmLocale = JvmLocale.forLanguageTag(languageTag)

fun toBcpString(): String = locale.toLanguageTag()
fun toLocaleString(): String = locale.toString()
override fun toAndroidResourcesString(): String = buildString {
append("values")
append("-")
append(locale.language)
if (locale.country.isNotBlank()) {
append("-r")
append(locale.country)
}
}

/**
* Throw an error here so that we safeguard ourselves from implcitly calling `Local.toString`.
* You should always use the more explicit methods defined above.
*/
override fun toString(): String = TODO("Use toLocaleString or toBcpString instead!")

override fun hashCode(): Int = locale.hashCode()
override fun equals(other: Any?): Boolean {
return other is Locale && other.locale == locale
}
}

companion object {

private const val BASE = "base"

fun fromFileName(fileName: String): LanguageType = when (fileName) {
BASE -> Base
else -> Locale(fileName.replace("-r", "-"))
}
}
}


typealias KeyType = String

abstract class StringsGenerator(
Expand Down

0 comments on commit 8a16392

Please sign in to comment.