diff --git a/build.gradle b/build.gradle index 095935c..208bab7 100644 --- a/build.gradle +++ b/build.gradle @@ -42,7 +42,6 @@ junitPlatform { apply plugin: 'kotlin' repositories { - maven { url "https://dl.bintray.com/jetbrains/spek" } mavenCentral() } @@ -51,8 +50,8 @@ dependencies { compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" testCompile 'com.winterbe:expekt:0.5.0' - testCompile 'org.jetbrains.spek:spek-api:1.1.0-beta3' + testCompile 'org.jetbrains.spek:spek-api:1.1.0' testRuntime 'org.junit.platform:junit-platform-launcher:1.0.0-M3' - testRuntime 'org.jetbrains.spek:spek-junit-platform-engine:1.1.0-beta3' + testRuntime 'org.jetbrains.spek:spek-junit-platform-engine:1.1.0' testCompile 'com.google.code.findbugs:jsr305:3.0.1' } diff --git a/src/main/kotlin/me/ntrrgc/tsGenerator/TypeScriptGenerator.kt b/src/main/kotlin/me/ntrrgc/tsGenerator/TypeScriptGenerator.kt index 0d34c96..7f6aaa5 100644 --- a/src/main/kotlin/me/ntrrgc/tsGenerator/TypeScriptGenerator.kt +++ b/src/main/kotlin/me/ntrrgc/tsGenerator/TypeScriptGenerator.kt @@ -24,6 +24,7 @@ import kotlin.reflect.full.createType import kotlin.reflect.full.isSubclassOf import kotlin.reflect.full.superclasses import kotlin.reflect.jvm.javaType +import me.ntrrgc.tsGenerator.defaultEnumTransformer /** * TypeScript definition generator. @@ -78,7 +79,9 @@ class TypeScriptGenerator( private val mappings: Map, String> = mapOf(), classTransformers: List = listOf(), ignoreSuperclasses: Set> = setOf(), - private val intTypeName: String = "number" + private val intTypeName: String = "number", + addExportStatements: Boolean = false, + private val enumTransformer: (KClass<*>, Any) -> String = ::defaultEnumTransformer ) { private val visitedClasses: MutableSet> = java.util.HashSet() private val generatedDefinitions = mutableListOf() @@ -88,6 +91,7 @@ class TypeScriptGenerator( java.io.Serializable::class, Comparable::class ).plus(ignoreSuperclasses) + private val export = if (addExportStatements) "export " else "" init { rootClasses.forEach { visitClass(it) } @@ -183,9 +187,9 @@ class TypeScriptGenerator( } private fun generateEnum(klass: KClass<*>): String { - return "type ${klass.simpleName} = ${klass.java.enumConstants - .map { constant: Any -> - constant.toString().toJSString() + return "${export}type ${klass.simpleName} = ${klass.java.enumConstants + .map { constant: Any -> + enumTransformer(klass, constant).toJSString() } .joinToString(" | ") };" @@ -220,7 +224,7 @@ class TypeScriptGenerator( "" } - return "interface ${klass.simpleName}$templateParameters$extendsString {\n" + + return "${export}interface ${klass.simpleName}$templateParameters$extendsString {\n" + klass.declaredMemberProperties .filter { !isFunctionType(it.returnType.javaType) } .filter { diff --git a/src/main/kotlin/me/ntrrgc/tsGenerator/defaultEnumTransformer.kt b/src/main/kotlin/me/ntrrgc/tsGenerator/defaultEnumTransformer.kt new file mode 100644 index 0000000..cbbf8ef --- /dev/null +++ b/src/main/kotlin/me/ntrrgc/tsGenerator/defaultEnumTransformer.kt @@ -0,0 +1,5 @@ +package me.ntrrgc.tsGenerator + +import kotlin.reflect.KClass + +fun defaultEnumTransformer(klass: KClass<*>, enumValue: Any) = enumValue.toString() \ No newline at end of file