Skip to content

Commit dbbdb13

Browse files
authored
Merge pull request #41 from icerockdev/develop
Release 0.8.0
2 parents 20283c7 + 85ae1f1 commit dbbdb13

10 files changed

Lines changed: 62 additions & 26 deletions

File tree

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ This is a Kotlin MultiPlatform library that provides access to the resources on
3737
- 0.6.1
3838
- 0.6.2
3939
- 0.7.0
40+
- 0.8.0
4041

4142
## Installation
4243
root build.gradle
@@ -47,7 +48,7 @@ buildscript {
4748
}
4849
4950
dependencies {
50-
classpath "dev.icerock.moko:resources-generator:0.7.0"
51+
classpath "dev.icerock.moko:resources-generator:0.8.0"
5152
}
5253
}
5354
@@ -64,7 +65,7 @@ project build.gradle
6465
apply plugin: "dev.icerock.mobile.multiplatform-resources"
6566
6667
dependencies {
67-
commonMainApi("dev.icerock.moko:resources:0.7.0")
68+
commonMainApi("dev.icerock.moko:resources:0.8.0")
6869
}
6970
7071
multiplatformResources {

buildSrc/src/main/kotlin/Versions.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ object Versions {
1111

1212
const val kotlin = "1.3.61"
1313

14-
private const val mokoResources = "0.7.0"
14+
private const val mokoResources = "0.8.0"
1515

1616
object Plugins {
1717
const val android = "3.5.2"

resources/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
plugins {
66
id("com.android.library")
77
id("org.jetbrains.kotlin.multiplatform")
8+
id("kotlin-android-extensions")
89
id("dev.icerock.mobile.multiplatform")
910
id("maven-publish")
1011
}

resources/src/androidMain/kotlin/dev/icerock/moko/resources/FontResource.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,17 @@ package dev.icerock.moko.resources
66

77
import android.content.Context
88
import android.graphics.Typeface
9+
import android.os.Parcelable
910
import androidx.annotation.FontRes
1011
import androidx.core.content.res.ResourcesCompat
12+
import kotlinx.android.parcel.Parcelize
1113

14+
@Parcelize
1215
actual class FontResource(
1316
@FontRes
1417
private val fontResourceId: Int
15-
) {
18+
) : Parcelable {
19+
1620
fun getTypeface(context: Context): Typeface? {
1721
return ResourcesCompat.getFont(context, fontResourceId)
1822
}

resources/src/androidMain/kotlin/dev/icerock/moko/resources/ImageResource.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@
44

55
package dev.icerock.moko.resources
66

7+
import android.os.Parcelable
78
import androidx.annotation.DrawableRes
9+
import kotlinx.android.parcel.Parcelize
810

9-
actual class ImageResource(@DrawableRes val drawableResId: Int)
11+
@Parcelize
12+
actual class ImageResource(
13+
@DrawableRes val drawableResId: Int
14+
) : Parcelable

resources/src/androidMain/kotlin/dev/icerock/moko/resources/PluralsResource.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@
44

55
package dev.icerock.moko.resources
66

7+
import android.os.Parcelable
78
import androidx.annotation.PluralsRes
9+
import kotlinx.android.parcel.Parcelize
810

9-
actual class PluralsResource(@PluralsRes val resourceId: Int)
11+
@Parcelize
12+
actual class PluralsResource(
13+
@PluralsRes val resourceId: Int
14+
) : Parcelable

resources/src/androidMain/kotlin/dev/icerock/moko/resources/StringResource.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@
44

55
package dev.icerock.moko.resources
66

7+
import android.os.Parcelable
78
import androidx.annotation.StringRes
9+
import kotlinx.android.parcel.Parcelize
810

9-
actual class StringResource(@StringRes val resourceId: Int)
11+
@Parcelize
12+
actual class StringResource(
13+
@StringRes val resourceId: Int
14+
) : Parcelable

resources/src/androidMain/kotlin/dev/icerock/moko/resources/desc/StringDesc.kt

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,19 @@
55
package dev.icerock.moko.resources.desc
66

77
import android.content.Context
8+
import android.os.Parcel
9+
import android.os.Parcelable
810
import dev.icerock.moko.resources.PluralsResource
911
import dev.icerock.moko.resources.StringResource
12+
import kotlinx.android.parcel.Parcelize
1013

1114
actual sealed class StringDesc {
12-
actual data class Resource actual constructor(val stringRes: StringResource) : StringDesc() {
15+
protected fun processArgs(args: List<Any>, context: Context): Array<out Any> {
16+
return args.toList().map { (it as? StringDesc)?.toString(context) ?: it }.toTypedArray()
17+
}
18+
19+
@Parcelize
20+
actual data class Resource actual constructor(val stringRes: StringResource) : StringDesc(), Parcelable {
1321
override fun toString(context: Context): String {
1422
return context.getString(stringRes.resourceId)
1523
}
@@ -20,7 +28,9 @@ actual sealed class StringDesc {
2028
val args: List<Any>
2129
) : StringDesc() {
2230
override fun toString(context: Context): String {
23-
return context.getString(stringRes.resourceId, *(args.toTypedArray()))
31+
return context.getString(
32+
stringRes.resourceId, *processArgs(args, context)
33+
)
2434
}
2535

2636
actual constructor(stringRes: StringResource, vararg args: Any) : this(
@@ -29,8 +39,11 @@ actual sealed class StringDesc {
2939
)
3040
}
3141

32-
actual data class Plural actual constructor(val pluralsRes: PluralsResource, val number: Int) :
33-
StringDesc() {
42+
@Parcelize
43+
actual data class Plural actual constructor(
44+
val pluralsRes: PluralsResource,
45+
val number: Int
46+
) : StringDesc(), Parcelable {
3447
override fun toString(context: Context): String {
3548
return context.resources.getQuantityString(pluralsRes.resourceId, number)
3649
}
@@ -45,7 +58,7 @@ actual sealed class StringDesc {
4558
return context.resources.getQuantityString(
4659
pluralsRes.resourceId,
4760
number,
48-
*(args.toTypedArray())
61+
*processArgs(args, context)
4962
)
5063
}
5164

@@ -56,17 +69,21 @@ actual sealed class StringDesc {
5669
)
5770
}
5871

59-
actual data class Raw actual constructor(val string: String) : StringDesc() {
72+
@Parcelize
73+
actual data class Raw actual constructor(
74+
val string: String
75+
) : StringDesc(), Parcelable {
6076
override fun toString(context: Context): String {
6177
return string
6278
}
6379
}
6480

65-
actual data class Composition actual constructor(val args: List<StringDesc>, val separator: String?) : StringDesc() {
81+
actual data class Composition actual constructor(val args: List<StringDesc>, val separator: String?) :
82+
StringDesc() {
6683
override fun toString(context: Context): String {
6784
return StringBuilder().apply {
6885
args.forEachIndexed { index, stringDesc ->
69-
if(index != 0 && separator != null) {
86+
if (index != 0 && separator != null) {
7087
append(separator)
7188
}
7289
append(stringDesc.toString(context))

resources/src/iosMain/kotlin/dev/icerock/moko/resources/FontResource.kt

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,9 @@
55
package dev.icerock.moko.resources
66

77
import kotlinx.cinterop.CPointer
8-
import kotlinx.cinterop.CValuesRef
9-
import kotlinx.cinterop.pointed
108
import platform.CoreFoundation.CFDataCreate
11-
import platform.CoreFoundation.CFDataCreateWithBytesNoCopy
12-
import platform.CoreFoundation.CFDataRef
139
import platform.CoreFoundation.kCFAllocatorDefault
1410
import platform.CoreGraphics.CGDataProviderCreateWithCFData
15-
import platform.CoreGraphics.CGFloat
1611
import platform.CoreGraphics.CGFontCreateWithDataProvider
1712
import platform.CoreGraphics.CGFontRef
1813
import platform.CoreText.CTFontCreateWithGraphicsFont
@@ -21,22 +16,21 @@ import platform.Foundation.NSBundle
2116
import platform.Foundation.NSData
2217
import platform.Foundation.create
2318
import platform.UIKit.UIFont
24-
import platform.UIKit.UIFontDescriptor
25-
import platform.darwin.UInt8
2619
import platform.darwin.UInt8Var
27-
import platform.darwin.nil
2820
import platform.objc.object_getClass
2921

3022
actual class FontResource(fontName: String) {
3123
private val fontRef: CGFontRef
24+
3225
init {
3326
val bundle = NSBundle.bundleForClass(object_getClass(this)!!)
3427
val pathForResourceString = bundle.pathForResource(name = "$fontName.ttf", ofType = null)!!
3528
val fontData = NSData.create(contentsOfFile = pathForResourceString)!!
3629
val cfDataRef = CFDataCreate(
3730
kCFAllocatorDefault,
3831
fontData.bytes() as CPointer<UInt8Var>,
39-
fontData.length.toLong())
32+
fontData.length.toLong()
33+
)
4034
val dataProvider = CGDataProviderCreateWithCFData(cfDataRef)
4135
fontRef = CGFontCreateWithDataProvider(dataProvider)!!
4236
}

resources/src/iosMain/kotlin/dev/icerock/moko/resources/desc/StringDesc.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ import platform.Foundation.NSString
1111
import platform.Foundation.stringWithFormat
1212

1313
actual sealed class StringDesc {
14+
protected fun processArgs(args: List<Any>): Array<out Any> {
15+
return args.toList().map { (it as? StringDesc)?.localized() ?: it }.toTypedArray()
16+
}
17+
1418
actual data class Resource actual constructor(val stringRes: StringResource) : StringDesc() {
1519
override fun localized(): String {
1620
return stringRes.bundle.localizedStringForKey(stringRes.resourceId, null, null)
@@ -28,7 +32,7 @@ actual sealed class StringDesc {
2832

2933
override fun localized(): String {
3034
val string = stringRes.bundle.localizedStringForKey(stringRes.resourceId, null, null)
31-
return stringWithFormat(string, args.toTypedArray())
35+
return stringWithFormat(string, processArgs(args))
3236
}
3337
}
3438

@@ -62,7 +66,7 @@ actual sealed class StringDesc {
6266
resourceId = pluralsRes.resourceId,
6367
number = number
6468
)!!
65-
return stringWithFormat(pluralized, args.toTypedArray())
69+
return stringWithFormat(pluralized, processArgs(args))
6670
}
6771
}
6872

0 commit comments

Comments
 (0)