Last active
August 20, 2019 21:24
-
-
Save JarvisCraft/a556e297f3e6650b9e0eb067f7b6a2f3 to your computer and use it in GitHub Desktop.
TextModel generation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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(); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Привет, JARvis, это правда, что твоя фамилия PROgrammer? А то я уже засомневался, ребята с возрастом в 17 годиков лет редко встречаются с такими. Но ничего, ты главное на позитиве будь :) | |
А я вот тут строки переносить научился, дак еще и с умом, хех | |
Вот как тут например -- конфигам каеф | |
А еще, зацени: -700227271 | |
Как тебе такое, JARvis? | |
Привет, Japris, это правда, что твоя фамилия Pogrammer? А то я уже засомневался, ребята с возрастом в -889275714 годика лет редко встречаются с такими. Но ничего, ты главное на позитиве будь :) | |
А я вот тут строки переносить научился, дак еще и с умом, хех | |
Вот как тут например -- конфигам каеф | |
А еще, зацени: -1715157068 | |
Как тебе такое, Japris? | |
Привет, Bodya, это правда, что твоя фамилия Sduev? А то я уже засомневался, ребята с возрастом в 31 годик лет редко встречаются с такими. Но ничего, ты главное на позитиве будь :) | |
А я вот тут строки переносить научился, дак еще и с умом, хех | |
Вот как тут например -- конфигам каеф | |
А еще, зацени: -903528121 | |
Как тебе такое, Bodya? |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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