Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JarvisCraft/a556e297f3e6650b9e0eb067f7b6a2f3 to your computer and use it in GitHub Desktop.
Save JarvisCraft/a556e297f3e6650b9e0eb067f7b6a2f3 to your computer and use it in GitHub Desktop.
TextModel generation
package ru.progrm_jarvis.ultimatemessenger.format.model;
import ru.progrm_jarvis.ultimatemessenger.format.model.TextModel;
import ru.progrm_jarvis.ultimatemessenger.format.model.AsmTextModelFactory.TextModelBuilder;
public final class AsmTextModelFactory$TextModelBuilder$$Generated$$TextModel$$1 implements TextModel {
public static final TextModel D0 = TextModelBuilder.internal$getDynamicTextModel("1");
public static final TextModel D1 = TextModelBuilder.internal$getDynamicTextModel("2");
public static final TextModel D2 = TextModelBuilder.internal$getDynamicTextModel("3");
public static final TextModel D3 = TextModelBuilder.internal$getDynamicTextModel("4");
public static final TextModel D4 = TextModelBuilder.internal$getDynamicTextModel("5");
public String getText(Object var1) {
return (new StringBuilder(296))
.append("Привет, ")
.append(D0.getText(var1))
.append(", это правда, что твоя фамилия ")
.append(D1.getText(var1))
.append("? А то я уже засомневался, ребята с возрастом в ")
.append(D2.getText(var1))
.append(" лет редко встречаются с такими. Но ничего, ты главное на позитиве будь :) \nА я вот тут строки переносить научился, дак еще и с умом, хех\nВот как тут например -- конфигам каеф\nА еще, зацени: ")
.append(D3.getText(var1))
.append("\nКак тебе такое, ")
.append(D4.getText(var1))
.append('?')
.toString();
}
}
Привет, JARvis, это правда, что твоя фамилия PROgrammer? А то я уже засомневался, ребята с возрастом в 17 годиков лет редко встречаются с такими. Но ничего, ты главное на позитиве будь :)
А я вот тут строки переносить научился, дак еще и с умом, хех
Вот как тут например -- конфигам каеф
А еще, зацени: -700227271
Как тебе такое, JARvis?
Привет, Japris, это правда, что твоя фамилия Pogrammer? А то я уже засомневался, ребята с возрастом в -889275714 годика лет редко встречаются с такими. Но ничего, ты главное на позитиве будь :)
А я вот тут строки переносить научился, дак еще и с умом, хех
Вот как тут например -- конфигам каеф
А еще, зацени: -1715157068
Как тебе такое, Japris?
Привет, Bodya, это правда, что твоя фамилия Sduev? А то я уже засомневался, ребята с возрастом в 31 годик лет редко встречаются с такими. Но ничего, ты главное на позитиве будь :)
А я вот тут строки переносить научился, дак еще и с умом, хех
Вот как тут например -- конфигам каеф
А еще, зацени: -903528121
Как тебе такое, Bodya?
package ru.progrm_jarvis.java.javaexperiments;
import lombok.AccessLevel;
import lombok.NonNull;
import lombok.Value;
import lombok.experimental.FieldDefaults;
import lombok.val;
import ru.progrm_jarvis.ultimatemessenger.format.model.TextModelFactories;
import ru.progrm_jarvis.ultimatemessenger.format.placeholder.SimplePlaceholders;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import java.util.Scanner;
public class TextModelWithPlurals {
public static void main(final String... args) {
val placeholders = SimplePlaceholders.<Player>builder().build();
placeholders.add("player", (value, player) -> {
switch (value) {
case "name": return player.getName();
case "surname": return player.getSurname();
case "age": {
val age = player.getAge();
switch (age) {
case 0: return "ньюфаг";
case 1: return "Годик";
case 2: return "2 Годика";
case 3: return "3 Годика";
case 4: return "5 Годика";
default: {
val ageString = Integer.toString(player.getAge());
if (5 <= age && age <= 20) return ageString + " годиков";
switch (ageString.charAt(ageString.length() - 1)) {
case '0': case '5': case '6': case '7': case '8': case '9': {
return ageString + " годиков";
}
case '1': {
return ageString + " годик";
}
case '2': case '3': case '4': {
return ageString + " годика";
}
}
}
}
}
default: return "<?>";
}
});
{
val scriptManager = new ScriptEngineManager().getEngineByName("javascript");
placeholders.add("js-expr", (value, player) -> {
try {
return String.valueOf(scriptManager.eval(value));
} catch (final ScriptException e) {
return "<?>";
}
});
}
val textModel = placeholders.parse(
TextModelFactories.getAvailable(),
"Привет, {player:name}, это правда, что твоя фамилия {player:surname}? "
+ "А то я уже засомневался, ребята с возрастом в {player:age} лет редко встречаются с такими. "
+ "Но ничего, ты главное на позитиве будь :) \\n"
+ "А я вот тут строки переносить научился, дак еще и с умом, хех\\n"
+ "Вот как тут например -- конфигам каеф\\n"
+ "А еще, зацени: {js-expr:java.util.concurrent.ThreadLocalRandom.current().nextInt()}\\n"
+ "Как тебе такое, {player:name}?"
);
System.out.println(textModel.getText(new Player("JARvis", "PROgrammer", 17)));
System.out.println(textModel.getText(new Player("Japris", "Pogrammer", 0xCAFEBABE)));
System.out.println(textModel.getText(new Player("Bodya", "Sduev", (int) (Math.random() * 18 * 2))));
val scanner = new Scanner(System.in);
scanner.nextLine();
}
@Value
@FieldDefaults(level = AccessLevel.PRIVATE)
private static class Player {
@NonNull String name;
@NonNull String surname;
@NonNull int age;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment