All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.ramcosta.composedestinations.codegen.templates.DestinationTemplate.kt Maven / Gradle / Ivy

package com.ramcosta.composedestinations.codegen.templates

import com.ramcosta.composedestinations.codegen.codeGenBasePackageName
import com.ramcosta.composedestinations.codegen.commons.CORE_DIRECTION
import com.ramcosta.composedestinations.codegen.commons.CORE_PACKAGE_NAME
import com.ramcosta.composedestinations.codegen.commons.CORE_STRING_NAV_TYPE

//region anchors
const val ADDITIONAL_IMPORTS = "[ADDITIONAL_IMPORTS]"
const val DESTINATION_NAME = "[DESTINATION_NAME]"
const val COMPOSED_ROUTE = "[COMPOSED_ROUTE]"
const val NAV_ARGUMENTS = "[NAV_ARGUMENTS]"
const val DEEP_LINKS = "[DEEP_LINKS]"
const val DESTINATION_STYLE = "[DESTINATION_STYLE]"
const val ARGS_TO_ROUTED_METHOD = "[ARGS_TO_ROUTED_METHOD]"
const val ARGS_FROM_METHODS = "[ARGS_FROM_METHODS]"
const val CONTENT_FUNCTION_CODE = "[CONTENT_FUNCTION_CODE]"
const val REQUIRE_OPT_IN_ANNOTATIONS_PLACEHOLDER = "[REQUIRE_OPT_IN_ANNOTATIONS_PLACEHOLDER]"
const val NAV_ARGS_DATA_CLASS = "[NAV_ARGS_DATA_CLASS]"
const val SUPERTYPE = "[SUPERTYPE]"
//endregion

val destinationTemplate="""
package $codeGenBasePackageName.destinations

import androidx.compose.runtime.Composable
import androidx.navigation.NavBackStackEntry
import androidx.navigation.NavHostController
import androidx.navigation.NavType
import androidx.navigation.navArgument
import $CORE_PACKAGE_NAME.navigation.DestinationDependenciesContainer
import $CORE_PACKAGE_NAME.navargs.$CORE_STRING_NAV_TYPE
import $CORE_PACKAGE_NAME.spec.$CORE_DIRECTION$ADDITIONAL_IMPORTS

${REQUIRE_OPT_IN_ANNOTATIONS_PLACEHOLDER}object $DESTINATION_NAME : $SUPERTYPE {
    $ARGS_TO_ROUTED_METHOD
    override val route = "$COMPOSED_ROUTE"
    $NAV_ARGUMENTS$DEEP_LINKS$DESTINATION_STYLE
    @Composable
    override fun Content(
        navController: NavHostController,
        navBackStackEntry: NavBackStackEntry,
        dependencyContainer: DestinationDependenciesContainer
    ) {
$CONTENT_FUNCTION_CODE
    }
    $ARGS_FROM_METHODS$NAV_ARGS_DATA_CLASS
}
""".trimIndent()




© 2015 - 2025 Weber Informatics LLC | Privacy Policy