From 370a67e75378e8b554c0501f7fcc2d0e59c67cdd Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Mon, 6 Apr 2015 22:11:32 +0300 Subject: [PATCH] js.stdlib: native replace made private. --- js/js.libraries/src/core/string.kt | 10 ++++++++++ js/js.libraries/src/core/stringsCode.kt | 4 ++++ 2 files changed, 14 insertions(+) diff --git a/js/js.libraries/src/core/string.kt b/js/js.libraries/src/core/string.kt index 7c202f42c42..345c34b776a 100644 --- a/js/js.libraries/src/core/string.kt +++ b/js/js.libraries/src/core/string.kt @@ -50,6 +50,16 @@ public val CharSequence.size: Int get() = noImpl library public fun CharSequence.isEmpty(): Boolean = noImpl + + +// native because we need to escape newValue +native("replace") +private fun String.nativeReplace(oldValue: String, newValue: String): String = noImpl + +native("replace") +private fun String.nativeReplace(pattern: RegExp, replacement: String): String = noImpl + + /* native public fun String.equalsIgnoreCase(anotherString: String) : Boolean = (this as java.lang.String).equalsIgnoreCase(anotherString) diff --git a/js/js.libraries/src/core/stringsCode.kt b/js/js.libraries/src/core/stringsCode.kt index a11da1e350d..06f21436f1f 100644 --- a/js/js.libraries/src/core/stringsCode.kt +++ b/js/js.libraries/src/core/stringsCode.kt @@ -78,3 +78,7 @@ public inline fun String.capitalize(): String { public inline fun String.decapitalize(): String { return if (isNotEmpty()) substring(0, 1).toLowerCase() + substring(1) else this } + + +public fun String.replace(oldValue: String, newValue: String): String = nativeReplace(oldValue, newValue.nativeReplace("$", "$$")) +