| import org.jetbrains.kotlinx.dataframe.* |
| import org.jetbrains.kotlinx.dataframe.annotations.* |
| import org.jetbrains.kotlinx.dataframe.api.* |
| import org.jetbrains.kotlinx.dataframe.io.* |
| |
| @DataSchema |
| class Bridge(val type: Type, |
| val approximation: String, |
| val converter: String, |
| val lens: String, |
| val supported: Boolean = false) : DataRowSchema |
| |
| @DataSchema |
| data class Type(val name: String, val vararg: Boolean) |
| |
| @DataSchema |
| class Parameter( |
| val name: String, |
| val returnType: Type, |
| val defaultValue: String?, |
| ) : DataRowSchema |
| |
| @DataSchema |
| class Function( |
| val receiverType: String, |
| val function: String, |
| val functionReturnType: Type, |
| val parameters: List<Parameter> |
| ) : DataRowSchema { |
| } |
| |
| |
| @DataSchema |
| class RefinedFunction( |
| val receiverType: String, |
| val function: String, |
| val functionReturnType: Type, |
| val parameters: List<Parameter>, |
| val startingSchema: Parameter |
| ) : DataRowSchema |
| |
| fun DataFrame<Function>.refine(bridges: DataFrame<Bridge>) { |
| val functions = this |
| val df1 = functions.join(bridges) { |
| functions.functionReturnType.name.match(right.type.name) |
| } |
| val col: DataColumn<DataFrame<*>> = df1.parameters |
| } |
| |
| fun box(): String = "OK" |