JS: add writeMetadataToString, serializeToString

This commit is contained in:
Michael Nedzelsky
2015-03-25 13:50:41 +03:00
parent 0951d69bdc
commit dbe59190ed
2 changed files with 10 additions and 3 deletions
@@ -41,10 +41,12 @@ public object KotlinJavascriptMetadataUtils {
public fun hasMetadata(text: String): Boolean = METADATA_PATTERN.matcher(text).find()
public fun writeMetadata(moduleName: String, content: ByteArray, metaFile: File) {
val text = "// Kotlin.$KOTLIN_JAVASCRIPT_METHOD_NAME($ABI_VERSION, \"$moduleName\", \"${printBase64Binary(content)}\");\n"
FileUtil.writeToFile(metaFile, text)
FileUtil.writeToFile(metaFile, writeMetadataToString(moduleName, content))
}
public fun writeMetadataToString(moduleName: String, content: ByteArray): String =
"// Kotlin.$KOTLIN_JAVASCRIPT_METHOD_NAME($ABI_VERSION, \"$moduleName\", \"${printBase64Binary(content)}\");\n"
platformStatic
public fun loadMetadata(file: File): List<KotlinJavascriptMetadata> {
assert(file.exists()) { "Library " + file + " not found" }
@@ -16,6 +16,7 @@
package org.jetbrains.kotlin.utils.serializer
import com.intellij.openapi.util.io.FileUtil
import org.jetbrains.kotlin.builtins.BuiltInsSerializationUtil
import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
@@ -36,6 +37,10 @@ import java.io.File
public class KotlinJavaScriptSerializer() {
public fun serialize(moduleName: String, moduleDescriptor: ModuleDescriptor, metaFile: File) {
FileUtil.writeToFile(metaFile, serializeToString(moduleName, moduleDescriptor))
}
public fun serializeToString(moduleName: String, moduleDescriptor: ModuleDescriptor): String {
val contentMap = hashMapOf<String, ByteArray>()
DescriptorUtils.getPackagesFqNames(moduleDescriptor).forEach {
@@ -47,7 +52,7 @@ public class KotlinJavaScriptSerializer() {
}
val content = KotlinJavascriptSerializationUtil.contentMapToByteArray(contentMap)
KotlinJavascriptMetadataUtils.writeMetadata(moduleName, content, metaFile)
return KotlinJavascriptMetadataUtils.writeMetadataToString(moduleName, content)
}
fun serializePackage(module: ModuleDescriptor, fqName: FqName, writeFun: (String, ByteArrayOutputStream) -> Unit) {