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

dk.nstack.kotlin.plugin.RateReminderActionsGenerator.groovy Maven / Gradle / Ivy

package dk.nstack.kotlin.plugin

import groovy.json.JsonSlurper

class RateReminderActionsGenerator {

    static String generateActions(String packageName) {
        def url = TranslationPlugin.project.translation.contentUrl + "api/v2/notify/rate_reminder_v2/actions"

        def actionsJson = Util.getTextFromUrlWithErrorResponse(url)
        if (actionsJson.isEmpty()) {
            return ""
        }
        def actions = new JsonSlurper().parseText(actionsJson).data as List

        def generated = "package $packageName\n\n"
        generated += "import dk.nodes.nstack.kotlin.NStack\n\n"
        generated += "/**\n * Generated by the NStack gradle plugin\n */\n"
        generated += "object RateReminderActions {\n\n"
        actions.forEach {
            generated += "\tprivate const val ${actionToConstantName(it)} = \"$it\"\n"
        }
        actions.forEach {
            generated += "\n\tsuspend fun ${actionToMethodName(it)}() {\n"
            generated += "\t\tsend(${actionToConstantName(it)})\n\t}\n"
        }
        generated += "\n" +
                "\tprivate suspend fun send(action: String) {\n" +
                "\t\tNStack.RateReminder.action(action)\n" +
                "\t}\n}\n"
        return generated
    }

    private static String actionToConstantName(String action) {
        return action.replace("-", "_").toUpperCase()
    }

    private static String actionToMethodName(String action) {
        def split = action.split("-")
        def result = split[0]
        for (def i = 1; i < split.length; ++i) {
            result += split[i].capitalize()
        }
        return result
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy