
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