From 602129e73fd3c07ed7116f05f2f1966a0851807f Mon Sep 17 00:00:00 2001 From: Robin Cheney Date: Thu, 27 Nov 2025 16:34:54 +0100 Subject: [PATCH] Added emojis that don't work in vs codes console, but should work in interfaces or discord or modern terminals that support emojis --- pom.xml | 2 +- .../java/de/ddnss/eternal/utils/Emoji.java | 1449 +++++++++++++++++ .../de/ddnss/eternal/utils/io/ics/ICS.java | 46 + 3 files changed, 1496 insertions(+), 1 deletion(-) create mode 100644 src/main/java/de/ddnss/eternal/utils/Emoji.java create mode 100644 src/main/java/de/ddnss/eternal/utils/io/ics/ICS.java diff --git a/pom.xml b/pom.xml index 3e18f3e..8215cd8 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ de.ddnss.eternal.utils utils - 1.4.1 + 1.5.0 UTF-8 diff --git a/src/main/java/de/ddnss/eternal/utils/Emoji.java b/src/main/java/de/ddnss/eternal/utils/Emoji.java new file mode 100644 index 0000000..b6747d8 --- /dev/null +++ b/src/main/java/de/ddnss/eternal/utils/Emoji.java @@ -0,0 +1,1449 @@ +package de.ddnss.eternal.utils; + +/** + * Emoji constants. Very Large. Be Careful + * + * @since 1.5.0 + * + * @author Robin Cheney + */ +public enum Emoji { + + GRIN("😀"), + GRINNING_FACE("😀"), + GRINNING_FACE_BIG_EYES("😃"), + GRINNING_FACE_SMILING_EYES("😄"), + GRINNING_FACE_SWEAT("😅"), + GRINNING_FACE_TEAR("😂"), + JOY("😂"), + ROFL("🤣"), + LOL_ROLLING("🤣"), + SMILE("😃"), + HAPPY("🙂"), + UPSIDE_DOWN("🙃"), + WINK("😉"), + BLUSH("😊"), + SMILING_HEART_EYES("😍"), + HEART_EYES("😍"), + STAR_STRUCK("🤩"), + KISS("😗"), + KISSING_HEART("😘"), + KISSING_CLOSED_EYES("😚"), + KISSING_SMILING_EYES("😙"), + SMIRK("😏"), + RELIEVED("😌"), + HOT_FACE("🥵"), + COLD_FACE("🥶"), + FLUSHED("😳"), + EXPLODING_HEAD("🤯"), + MIND_BLOWN("🤯"), + THINKING("🤔"), + RAISED_EYEBROW("🤨"), + NEUTRAL("😐"), + EXPRESSIONLESS("😑"), + UNAMUSED("😒"), + FACE_WITH_ROLLING_EYES("🙄"), + SMH("🙄"), + GRIMACE("😬"), + LIE_FACE("🤥"), + DROOLING("🤤"), + SLEEPY("😪"), + SLEEPING("😴"), + MASK("😷"), + THERMOMETER_FACE("🤒"), + BANDAGE_FACE("🤕"), + NAUSEATED("🤢"), + VOMIT("🤮"), + SNEEZING("🤧"), + DIZZY_FACE("😵"), + PARTYING_FACE("🥳"), + MONEY_MOUTH("🤑"), + HUGGING("🤗"), + SHUSH("🤫"), + THINKING_SHUSH("🤭"), + ZIPPER_MOUTH("🤐"), + NERD("🤓"), + SUNGLASSES("😎"), + CLOWN("🤡"), + OGRE("👹"), + GOBLIN("👺"), + SKULL("💀"), + SKULL_CROSSBONES("☠️"), + POO("💩"), + GHOST("👻"), + ALIEN("👽"), + ROBOT("🤖"), + PILE_OF_POO("💩"), + SMILING_HORNS("😈"), + ANGRY_HORNS("👿"), + JACK_O_LANTERN("🎃"), + HEART("❤️"), + BROKEN_HEART("💔"), + TWO_HEARTS("💕"), + HEART_PULSE("💗"), + HEARTBEAT("💓"), + SPARKLING_HEART("💖"), + REVOLVING_HEARTS("💞"), + LOVE_LETTER("💌"), + KISS_MARK("💋"), + WAVE("👋"), + RAISED_HAND("✋"), + HAND_SPLAY("🖐️"), + VICTORY("✌️"), + OK_HAND("👌"), + PINCHED_FINGERS("🤌"), + PINCHING_HAND("🤏"), + CROSS_FINGERS("🤞"), + LOVE_YOU("🤟"), + ROCK_ON("🤘"), + CALL_ME("🤙"), + THUMBS_UP("👍"), + THUMBS_DOWN("👎"), + FIST("✊"), + LEFT_FIST("🤛"), + RIGHT_FIST("🤜"), + OPEN_HANDS("👐"), + PALM_UP("🤲"), + HANDSHAKE("🤝"), + WRITING_HAND("✍️"), + NAIL_POLISH("💅"), + SELFIE("🤳"), + FLEXED_BICEPS("💪"), + MECHANICAL_ARM("🦾"), + MECHANICAL_LEG("🦿"), + LEG("🦵"), + FOOT("🦶"), + EAR("👂"), + EAR_WITH_HEARING_AID("🦻"), + NOSE("👃"), + EYES("👀"), + EYE("👁️"), + BRAIN("🧠"), + ANATOMICAL_HEART("🫀"), + LUNGS("🫁"), + TONGUE("👅"), + MOUTH("👄"), + + BABY("👶"), + CHILD("🧒"), + BOY("👦"), + GIRL("👧"), + PERSON("🧑"), + ADULT("🧑"), + MAN("👨"), + WOMAN("👩"), + OLDER_PERSON("🧓"), + OLD_MAN("👴"), + OLD_WOMAN("👵"), + + BEARDED_PERSON("🧔"), + BEARDED_MAN("🧔‍♂️"), + BEARDED_WOMAN("🧔‍♀️"), + + RED_HAIR_PERSON("🧑‍🦰"), + CURLY_HAIR_PERSON("🧑‍🦱"), + BALD_PERSON("🧑‍🦲"), + WHITE_HAIR_PERSON("🧑‍🦳"), + + MAN_RED_HAIR("👨‍🦰"), + WOMAN_RED_HAIR("👩‍🦰"), + MAN_CURLY_HAIR("👨‍🦱"), + WOMAN_CURLY_HAIR("👩‍🦱"), + MAN_BALD("👨‍🦲"), + WOMAN_BALD("👩‍🦲"), + MAN_WHITE_HAIR("👨‍🦳"), + WOMAN_WHITE_HAIR("👩‍🦳"), + + PERSON_FROWNING("🙍"), + MAN_FROWNING("🙍‍♂️"), + WOMAN_FROWNING("🙍‍♀️"), + + PERSON_POUTING("🙎"), + MAN_POUTING("🙎‍♂️"), + WOMAN_POUTING("🙎‍♀️"), + + PERSON_GESTURING_NO("🙅"), + MAN_GESTURING_NO("🙅‍♂️"), + WOMAN_GESTURING_NO("🙅‍♀️"), + + PERSON_GESTURING_OK("🙆"), + MAN_GESTURING_OK("🙆‍♂️"), + WOMAN_GESTURING_OK("🙆‍♀️"), + + PERSON_TIPPING_HAND("💁"), + MAN_TIPPING_HAND("💁‍♂️"), + WOMAN_TIPPING_HAND("💁‍♀️"), + + PERSON_RAISING_HAND("🙋"), + MAN_RAISING_HAND("🙋‍♂️"), + WOMAN_RAISING_HAND("🙋‍♀️"), + + PERSON_BOWING("🙇"), + MAN_BOWING("🙇‍♂️"), + WOMAN_BOWING("🙇‍♀️"), + + PERSON_FACEPALM("🤦"), + MAN_FACEPALM("🤦‍♂️"), + WOMAN_FACEPALM("🤦‍♀️"), + + PERSON_SHRUGGING("🤷"), + MAN_SHRUGGING("🤷‍♂️"), + WOMAN_SHRUGGING("🤷‍♀️"), + + HEALTH_WORKER("🧑‍⚕️"), + MAN_HEALTH_WORKER("👨‍⚕️"), + WOMAN_HEALTH_WORKER("👩‍⚕️"), + + STUDENT("🧑‍🎓"), + MAN_STUDENT("👨‍🎓"), + WOMAN_STUDENT("👩‍🎓"), + + TEACHER("🧑‍🏫"), + MAN_TEACHER("👨‍🏫"), + WOMAN_TEACHER("👩‍🏫"), + + JUDGE("🧑‍⚖️"), + MAN_JUDGE("👨‍⚖️"), + WOMAN_JUDGE("👩‍⚖️"), + + FARMER("🧑‍🌾"), + MAN_FARMER("👨‍🌾"), + WOMAN_FARMER("👩‍🌾"), + + COOK("🧑‍🍳"), + MAN_COOK("👨‍🍳"), + WOMAN_COOK("👩‍🍳"), + + MECHANIC("🧑‍🔧"), + MAN_MECHANIC("👨‍🔧"), + WOMAN_MECHANIC("👩‍🔧"), + + FACTORY_WORKER("🧑‍🏭"), + MAN_FACTORY_WORKER("👨‍🏭"), + WOMAN_FACTORY_WORKER("👩‍🏭"), + + OFFICE_WORKER("🧑‍💼"), + MAN_OFFICE_WORKER("👨‍💼"), + WOMAN_OFFICE_WORKER("👩‍💼"), + + SCIENTIST("🧑‍🔬"), + MAN_SCIENTIST("👨‍🔬"), + WOMAN_SCIENTIST("👩‍🔬"), + + TECHNOLOGIST("🧑‍💻"), + MAN_TECHNOLOGIST("👨‍💻"), + WOMAN_TECHNOLOGIST("👩‍💻"), + + SINGER("🧑‍🎤"), + MAN_SINGER("👨‍🎤"), + WOMAN_SINGER("👩‍🎤"), + + ARTIST("🧑‍🎨"), + MAN_ARTIST("👨‍🎨"), + WOMAN_ARTIST("👩‍🎨"), + + PILOT("🧑‍✈️"), + MAN_PILOT("👨‍✈️"), + WOMAN_PILOT("👩‍✈️"), + + ASTRONAUT("🧑‍🚀"), + MAN_ASTRONAUT("👨‍🚀"), + WOMAN_ASTRONAUT("👩‍🚀"), + + FIREFIGHTER("🧑‍🚒"), + MAN_FIREFIGHTER("👨‍🚒"), + WOMAN_FIREFIGHTER("👩‍🚒"), + + POLICE("👮"), + MAN_POLICE("👮‍♂️"), + WOMAN_POLICE("👮‍♀️"), + + DETECTIVE("🕵️"), + MAN_DETECTIVE("🕵️‍♂️"), + WOMAN_DETECTIVE("🕵️‍♀️"), + + GUARD("💂"), + MAN_GUARD("💂‍♂️"), + WOMAN_GUARD("💂‍♀️"), + + NINJA("🥷"), PERSON_DANCING("💃"), + WOMAN_DANCING("💃"), + MAN_DANCING("🕺"), + + PEOPLE_WITH_BUNNY_EARS("👯"), + WOMAN_WITH_BUNNY_EARS("👯‍♀️"), + MAN_WITH_BUNNY_EARS("👯‍♂️"), + + PERSON_WALKING("🚶"), + MAN_WALKING("🚶‍♂️"), + WOMAN_WALKING("🚶‍♀️"), + + PERSON_RUNNING("🏃"), + MAN_RUNNING("🏃‍♂️"), + WOMAN_RUNNING("🏃‍♀️"), + + PERSON_STANDING("🧍"), + MAN_STANDING("🧍‍♂️"), + WOMAN_STANDING("🧍‍♀️"), + + PERSON_KNEELING("🧎"), + MAN_KNEELING("🧎‍♂️"), + WOMAN_KNEELING("🧎‍♀️"), + + PERSON_WITH_WHITE_CANE("🧑‍🦯"), + MAN_WITH_WHITE_CANE("👨‍🦯"), + WOMAN_WITH_WHITE_CANE("👩‍🦯"), + + PERSON_IN_MOTORIZED_WHEELCHAIR("🧑‍🦼"), + MAN_IN_MOTORIZED_WHEELCHAIR("👨‍🦼"), + WOMAN_IN_MOTORIZED_WHEELCHAIR("👩‍🦼"), + + PERSON_IN_MANUAL_WHEELCHAIR("🧑‍🦽"), + MAN_IN_MANUAL_WHEELCHAIR("👨‍🦽"), + WOMAN_IN_MANUAL_WHEELCHAIR("👩‍🦽"), + + PERSON_BIKING("🚴"), + MAN_BIKING("🚴‍♂️"), + WOMAN_BIKING("🚴‍♀️"), + + PERSON_MOUNTAIN_BIKING("🚵"), + MAN_MOUNTAIN_BIKING("🚵‍♂️"), + WOMAN_MOUNTAIN_BIKING("🚵‍♀️"), + + PERSON_CARTWHEELING("🤸"), + MAN_CARTWHEELING("🤸‍♂️"), + WOMAN_CARTWHEELING("🤸‍♀️"), + + PEOPLE_HOLDING_HANDS("🧑‍🤝‍🧑"), + WOMEN_HOLDING_HANDS("👭"), + MEN_HOLDING_HANDS("👬"), + MAN_WOMAN_HOLDING_HANDS("👫"), + + COUPLE_WITH_HEART("💑"), + MAN_WOMAN_HEART("💑"), + MAN_MAN_HEART("👨‍❤️‍👨"), + WOMAN_WOMAN_HEART("👩‍❤️‍👩"), + + MAN_WOMAN_KISS("💏"), + MAN_MAN_KISS("👨‍❤️‍💋‍👨"), + WOMAN_WOMAN_KISS("👩‍❤️‍💋‍👩"), + + FAMILY("👪"), + FAMILY_MAN_WOMAN_BOY("👨‍👩‍👦"), + FAMILY_MAN_WOMAN_GIRL("👨‍👩‍👧"), + FAMILY_MAN_WOMAN_GIRL_BOY("👨‍👩‍👧‍👦"), + FAMILY_MAN_WOMAN_BOY_BOY("👨‍👩‍👦‍👦"), + FAMILY_MAN_WOMAN_GIRL_GIRL("👨‍👩‍👧‍👧"), + FAMILY_MAN_MAN_BOY("👨‍👨‍👦"), + FAMILY_MAN_MAN_GIRL("👨‍👨‍👧"), + FAMILY_MAN_MAN_BOY_BOY("👨‍👨‍👦‍👦"), + FAMILY_MAN_MAN_GIRL_GIRL("👨‍👨‍👧‍👧"), + FAMILY_WOMAN_WOMAN_BOY("👩‍👩‍👦"), + FAMILY_WOMAN_WOMAN_GIRL("👩‍👩‍👧"), + FAMILY_WOMAN_WOMAN_BOY_BOY("👩‍👩‍👦‍👦"), + FAMILY_WOMAN_WOMAN_GIRL_GIRL("👩‍👩‍👧‍👧"), + + MERPERSON("🧜"), + MERMAN("🧜‍♂️"), + MERWOMAN("🧜‍♀️"), + + FAIRY("🧚"), + FAIRY_MAN("🧚‍♂️"), + FAIRY_WOMAN("🧚‍♀️"), + + GENIE("🧞"), + GENIE_MAN("🧞‍♂️"), + GENIE_WOMAN("🧞‍♀️"), + + ZOMBIE("🧟"), + ZOMBIE_MAN("🧟‍♂️"), + ZOMBIE_WOMAN("🧟‍♀️"), + + VAMPIRE("🧛"), + VAMPIRE_MAN("🧛‍♂️"), + VAMPIRE_WOMAN("🧛‍♀️"), + + ELF("🧝"), + ELF_MAN("🧝‍♂️"), + ELF_WOMAN("🧝‍♀️"), + + WIZARD("🧙"), + WIZARD_MAN("🧙‍♂️"), + WIZARD_WOMAN("🧙‍♀️"), + + TROLL("🧌"), + + // Animals & Nature + MONKEY_FACE("🐵"), + MONKEY("🐒"), + GORILLA("🦍"), + ORANGUTAN("🦧"), + DOG_FACE("🐶"), + DOG("🐕"), + GUIDE_DOG("🦮"), + SERVICE_DOG("🐕‍🦺"), + POODLE("🐩"), + WOLF("🐺"), + FOX("🦊"), + RACCOON("🦝"), + CAT_FACE("🐱"), + CAT("🐈"), + BLACK_CAT("🐈‍⬛"), + LION("🦁"), + TIGER_FACE("🐯"), + TIGER("🐅"), + LEOPARD("🐆"), + HORSE_FACE("🐴"), + HORSE("🐎"), + UNICORN("🦄"), + ZEBRA("🦓"), + DEER("🦌"), + BISON("🦬"), + COW_FACE("🐮"), + COW("🐄"), + OX("🐂"), + WATER_BUFFALO("🐃"), + PIG_FACE("🐷"), + PIG("🐖"), + BOAR("🐗"), + PIG_NOSE("🐽"), + RAM("🐏"), + SHEEP("🐑"), + GOAT("🐐"), + CAMEL("🐪"), + TWO_HUMP_CAMEL("🐫"), + LLAMA("🦙"), + GIRAFFE("🦒"), + ELEPHANT("🐘"), + MAMMOTH("🦣"), + RHINOCEROS("🦏"), + HIPPOPOTAMUS("🦛"), + MOUSE_FACE("🐭"), + MOUSE("🐁"), + RAT("🐀"), + HAMSTER("🐹"), + RABBIT_FACE("🐰"), + RABBIT("🐇"), + CHIPMUNK("🐿️"), + BEAVER("🦫"), + HEDGEHOG("🦔"), + BAT("🦇"), + BEAR("🐻"), + POLAR_BEAR("🐻‍❄️"), + KOALA("🐨"), + PANDA("🐼"), + SLOTH("🦥"), + OTTER("🦦"), + SKUNK("🦨"), + KANGAROO("🦘"), + BADGER("🦡"), + PAW_PRINTS("🐾"), + // Birds + TURKEY("🦃"), + CHICKEN("🐔"), + ROOSTER("🐓"), + HATCHING_CHICK("🐣"), + BABY_CHICK("🐤"), + FRONT_FACING_CHICK("🐥"), + BIRD("🐦"), + PENGUIN("🐧"), + DOVE("🕊️"), + EAGLE("🦅"), + DUCK("🦆"), + SWAN("🦢"), + OWL("🦉"), + DODO("🦤"), + FEATHER("🪶"), + FLAMINGO("🦩"), + PEACOCK("🦚"), + PARROT("🦜"), + + // Marine Animals + FISH("🐟"), + TROPICAL_FISH("🐠"), + BLOWFISH("🐡"), + SHARK("🦈"), + DOLPHIN("🐬"), + SPOUTING_WHALE("🐳"), + WHALE("🐋"), + SEAL("🦭"), + OCTOPUS("🐙"), + SPIRAL_SHELL("🐚"), + CRAB("🦀"), + LOBSTER("🦞"), + SHRIMP("🦐"), + SQUID("🦑"), + OYSTER("🦪"), + + // Reptiles & Amphibians + SNAKE("🐍"), + LIZARD("🦎"), + TURTLE("🐢"), + FROG("🐸"), + CROCODILE("🐊"), + + // Bugs + BUG("🐛"), + ANT("🐜"), + HONEYBEE("🐝"), + BEETLE("🪲"), + LADY_BEETLE("🐞"), + CRICKET("🦗"), + COCKROACH("🪳"), + SPIDER("🕷️"), + SPIDER_WEB("🕸️"), + SCORPION("🦂"), + MOSQUITO("🦟"), + FLY("🪰"), + WORM("🪱"), + MICROBE("🦠"), + + // Plants + BOUQUET("💐"), + CHERRY_BLOSSOM("🌸"), + WHITE_FLOWER("💮"), + ROSETTE("🏵️"), + FLOWER("🌼"), + ROSE("🌹"), + WILTED_FLOWER("🥀"), + HIBISCUS("🌺"), + SUNFLOWER("🌻"), + BLOSSOM("🌼"), + TULIP("🌷"), + + SEEDLING("🌱"), + EVERGREEN_TREE("🌲"), + DECIDUOUS_TREE("🌳"), + PALM_TREE("🌴"), + CACTUS("🌵"), + HERB("🌿"), + SHAMROCK("☘️"), + FOUR_LEAF_CLOVER("🍀"), + MAPLE_LEAF("🍁"), + FALLEN_LEAF("🍂"), + LEAF_FLUTTER("🍃"), + + // Weather & Sky + NEW_MOON("🌑"), + WAXING_CRESCENT_MOON("🌒"), + FIRST_QUARTER_MOON("🌓"), + WAXING_GIBBOUS_MOON("🌔"), + FULL_MOON("🌕"), + WANING_GIBBOUS_MOON("🌖"), + LAST_QUARTER_MOON("🌗"), + WANING_CRESCENT_MOON("🌘"), + CRESCENT_MOON("🌙"), + NEW_MOON_FACE("🌚"), + FULL_MOON_FACE("🌝"), + FIRST_QUARTER_MOON_FACE("🌛"), + LAST_QUARTER_MOON_FACE("🌜"), + THERMOMETER("🌡️"), + SUN("☀️"), + FULL_SUN("🌞"), + STAR("⭐"), + GLOWING_STAR("🌟"), + SHOOTING_STAR("🌠"), + + CLOUD("☁️"), + CLOUD_WITH_LIGHTNING("🌩️"), + CLOUD_WITH_RAIN("🌧️"), + CLOUD_WITH_SNOW("🌨️"), + CLOUD_WITH_TORNADO("🌪️"), + FOG("🌫️"), + WIND_FACE("🌬️"), + + RAINBOW("🌈"), + UMBRELLA_RAIN("☔"), + UMBRELLA("☂️"), + SNOWMAN("☃️"), + SNOWMAN_NO_SNOW("⛄"), + COMET("☄️"), + + FIRE("🔥"), + DROPLET("💧"), + WATER_WAVE("🌊"), + // Fruits + RED_APPLE("🍎"), + GREEN_APPLE("🍏"), + PEAR("🍐"), + TANGERINE("🍊"), + LEMON("🍋"), + BANANA("🍌"), + WATERMELON("🍉"), + GRAPES("🍇"), + STRAWBERRY("🍓"), + BLUEBERRIES("🫐"), + MELON("🍈"), + CHERRIES("🍒"), + PEACH("🍑"), + MANGO("🥭"), + PINEAPPLE("🍍"), + COCONUT("🥥"), + KIWI("🥝"), + TOMATO("🍅"), + OLIVE("🫒"), + AVOCADO("🥑"), + + // Vegetables & Plants + EGGPLANT("🍆"), + POTATO("🥔"), + CARROT("🥕"), + CORN("🌽"), + HOT_PEPPER("🌶️"), + CUCUMBER("🥒"), + LEAFY_GREEN("🥬"), + BROCCOLI("🥦"), + GARLIC("🧄"), + ONION("🧅"), + MUSHROOM("🍄"), + PEANUTS("🥜"), + BEANS("🫘"), + + // Prepared foods + BREAD("🍞"), + CROISSANT("🥐"), + BAGUETTE("🥖"), + PRETZEL("🥨"), + BAGEL("🥯"), + PANCAKES("🥞"), + WAFFLE("🧇"), + CHEESE("🧀"), + MEAT_ON_BONE("🍖"), + POULTRY_LEG("🍗"), + CUT_OF_MEAT("🥩"), + BACON("🥓"), + HAMBURGER("🍔"), + FRIES("🍟"), + PIZZA("🍕"), + HOT_DOG("🌭"), + SANDWICH("🥪"), + TACO("🌮"), + BURRITO("🌯"), + STUFFED_FLATBREAD("🥙"), + FALAFEL("🧆"), + EGG("🥚"), + FRIED_EGG("🍳"), + SHALLOW_PAN_OF_FOOD("🥘"), + STEW("🍲"), + FONDUE("🫕"), + SPOON("🥄"), + + // Sweets & desserts + ICE_CREAM("🍨"), + SHAVED_ICE("🍧"), + ICE_CREAM_CONE("🍦"), + DOUGHNUT("🍩"), + COOKIE("🍪"), + BIRTHDAY_CAKE("🎂"), + SHORTCAKE("🍰"), + CUPCAKE("🧁"), + PIE("🥧"), + CHOCOLATE_BAR("🍫"), + CANDY("🍬"), + LOLLIPOP("🍭"), + CUSTARD("🍮"), + HONEY_POT("🍯"), + + // Drinks + BABY_BOTTLE("🍼"), + GLASS_OF_MILK("🥛"), + HOT_BEVERAGE("☕"), + TEAPOT("🫖"), + TEACUP("🍵"), + SAKE("🍶"), + BEER("🍺"), + BEERS("🍻"), + WINE_GLASS("🍷"), + COCKTAIL("🍸"), + TROPICAL_DRINK("🍹"), + CHAMPAGNE("🍾"), + TUMBLER_GLASS("🥃"), + ICE_CUBE("🧊"), + + // Meals + FORK_KNIFE("🍴"), + FORK_KNIFE_PLATE("🍽️"), + TAKEOUT_BOX("🥡"), + CHOPSTICKS("🥢"), + + // Activities + SOCCER("⚽"), + BASKETBALL("🏀"), + VOLLEYBALL("🏐"), + BASEBALL("⚾"), + SOFTBALL("🥎"), + FOOTBALL("🏈"), + RUGBY("🏉"), + TENNIS("🎾"), + FLYING_DISC("🥏"), + BADMINTON("🏸"), + HOCKEY("🏒"), + FIELD_HOCKEY("🏑"), + LACROSSE("🥍"), + CRICKET_GAME("🏏"), + BOWLING("🎳"), + TABLE_TENNIS("🏓"), + MARTIAL_ARTS("🥋"), + BOXING_GLOVE("🥊"), + MARTIAL_ARTS_UNIFORM("🥋"), + + // Adventure & recreation + SKIS("🎿"), + SKIER("⛷️"), + SNOWBOARDER("🏂"), + SLED("🛷"), + CURLING_STONE("🥌"), + FISHING("🎣"), + DIVING_MASK("🤿"), + TENT("⛺"), + CAMPING("🏕️"), + CLIMBER("🧗"), + MAN_CLIMBER("🧗‍♂️"), + WOMAN_CLIMBER("🧗‍♀️"), + + // Games & Play + VIDEO_GAME("🎮"), + JOYSTICK("🕹️"), + GAME_DIE("🎲"), + CHESS_PAWN("♟️"), + PUZZLE_PIECE("🧩"), + TEDDY_BEAR("🧸"), + PINATA("🪅"), + NESTING_DOLLS("🪆"), + + // Arts & Culture + ARTIST_PALETTE("🎨"), + MUSICAL_SCORE("🎼"), + MUSICAL_NOTES("🎶"), + MUSICAL_NOTE("🎵"), + MICROPHONE("🎤"), + HEADPHONE("🎧"), + SAXOPHONE("🎷"), + GUITAR("🎸"), + TRUMPET("🎺"), + VIOLIN("🎻"), + DRUM("🥁"), + LONG_DRUM("🪘"), + BALLET_SHOES("🩰"), + PERFORMING_ARTS("🎭"), + CLOWN_FACE("🤡"), + MAGIC_WAND("🪄"), + CRYSTAL_BALL("🔮"), + NESTING_DOLL("🪆"), + // Travel & Places + LOCOMOTIVE("🚂"), + RAILWAY_CAR("🚃"), + HIGH_SPEED_TRAIN("🚄"), + BULLET_TRAIN("🚅"), + TRAIN("🚆"), + METRO("🚇"), + LIGHT_RAIL("🚈"), + STATION("🚉"), + TRAM("🚊"), + TRAM_CAR("🚋"), + BUS("🚌"), + ONCOMING_BUS("🚍"), + TROLLEYBUS("🚎"), + MINIBUS("🚐"), + AMBULANCE("🚑"), + FIRE_ENGINE("🚒"), + POLICE_CAR("🚓"), + ONCOMING_POLICE_CAR("🚔"), + TAXI("🚕"), + ONCOMING_TAXI("🚖"), + AUTOMOBILE("🚗"), + ONCOMING_AUTOMOBILE("🚘"), + DELIVERY_TRUCK("🚚"), + ARTICULATED_LORRY("🚛"), + TRACTOR("🚜"), + + RACING_CAR("🏎️"), + MOTORCYCLE("🏍️"), + MOTOR_SCOOTER("🛵"), + MANUAL_WHEELCHAIR("🦽"), + MOTORIZED_WHEELCHAIR("🦼"), + AUTO_RICKSHAW("🛺"), + + BICYCLE("🚲"), + KICK_SCOOTER("🛴"), + SKATEBOARD("🛹"), + ROLLER_SKATE("🛼"), + + BUS_STOP("🚏"), + MOTORWAY("🛣️"), + RAILWAY_TRACK("🛤️"), + OIL_DRUM("🛢️"), + FUEL_PUMP("⛽"), + + // Air Travel + AIRPLANE("✈️"), + SMALL_AIRPLANE("🛩️"), + AIRPLANE_DEPARTURE("🛫"), + AIRPLANE_ARRIVAL("🛬"), + PARACHUTE("🪂"), + SEAT("💺"), + + // Water Transport + ANCHOR("⚓"), + SAILBOAT("⛵"), + CANOE("🛶"), + SPEEDBOAT("🚤"), + PASSENGER_SHIP("🛳️"), + FERRY("⛴️"), + MOTOR_BOAT("🛥️"), + SHIP("🚢"), + + // Space Travel + ROCKET("🚀"), + FLYING_SAUCER("🛸"), + SATELLITE("🛰️"), + + // Buildings + HOUSE("🏠"), + HOUSE_GARDEN("🏡"), + OFFICE_BUILDING("🏢"), + JAPANESE_POST_OFFICE("🏣"), + POST_OFFICE("🏤"), + HOSPITAL("🏥"), + BANK("🏦"), + HOTEL("🏨"), + LOVE_HOTEL("🏩"), + CONVENIENCE_STORE("🏪"), + SCHOOL("🏫"), + DEPARTMENT_STORE("🏬"), + FACTORY("🏭"), + JAPANESE_CASTLE("🏯"), + CASTLE("🏰"), + WEDDING("💒"), + TOKYO_TOWER("🗼"), + STATUE_OF_LIBERTY("🗽"), + + // Landmarks & Geography + CHURCH("⛪"), + MOSQUE("🕌"), + SYNAGOGUE("🕍"), + HINDU_TEMPLE("🛕"), + SHINTO_SHRINE("⛩️"), + KAABA("🕋"), + + FOUNTAIN("⛲"), + FOGGY("🌁"), + NIGHT_WITH_STARS("🌃"), + CITYSCAPE("🏙️"), + SUNRISE_OVER_MOUNTAINS("🌄"), + SUNRISE("🌅"), + CITY_SUNSET("🌆"), + CITY_SUNRISE("🌇"), + BRIDGE_AT_NIGHT("🌉"), + HOT_SPRINGS("♨️"), + + CAROUSEL_HORSE("🎠"), + FERRIS_WHEEL("🎡"), + ROLLER_COASTER("🎢"), + + BARBER_POLE("💈"), + + // Globe & Maps + EARTH_AFRICA("🌍"), + EARTH_AMERICAS("🌎"), + EARTH_ASIA("🌏"), + GLOBE_MERIDIANS("🌐"), + WORLD_MAP("🗺️"), + COMPASS("🧭"), + // Clothing & Accessories + NECKTIE("👔"), + T_SHIRT("👕"), + JEANS("👖"), + DRESS("👗"), + KIMONO("👘"), + SARI("🥻"), + ONE_PIECE_SWIMSUIT("🩱"), + BRIEFS("🩲"), + SHORTS("🩳"), + BIKINI("👙"), + WOMANS_CLOTHES("👚"), + PURSE("👛"), + HANDBAG("👜"), + CLUTCH_BAG("👝"), + BACKPACK("🎒"), + THONG_SANDAL("🩴"), + MAN_SHOE("👞"), + RUNNING_SHOE("👟"), + HIKING_BOOT("🥾"), + FLAT_SHOE("🥿"), + HIGH_HEEL("👠"), + SANDAL("👡"), + BALLET_FLAT("🩰"), + BOOT("👢"), + CROWN("👑"), + WOMANS_HAT("👒"), + TOP_HAT("🎩"), + GRADUATION_CAP("🎓"), + BILLED_CAP("🧢"), + MILITARY_HELMET("🪖"), + RESCUE_WORKER_HELMET("⛑️"), + PRAYER_BEADS("📿"), + NECKLACE("📿"), + RING("💍"), + GEM_STONE("💎"), + + // Tools & Hardware + HAMMER("🔨"), + AXE("🪓"), + PICK("⛏️"), + HAMMER_PICK("⚒️"), + SHOVEL("🪠"), + WRENCH("🔧"), + SCREWDRIVER("🪛"), + NUT_AND_BOLT("🔩"), + GEAR("⚙️"), + CLAMP("🗜️"), + BALANCE_SCALE("⚖️"), + TOOLBOX("🧰"), + LADDER("🪜"), + + // Construction materials + BRICK("🧱"), + ROCK("🪨"), + WOOD("🪵"), + STEEL_BEAM("🪜"), + + // Medical objects + SYRINGE("💉"), + DROP_BLOOD("🩸"), + PILL("💊"), + STETHOSCOPE("🩺"), + ADHESIVE_BANDAGE("🩹"), + CRUTCH("🩼"), + + // Household objects + DOOR("🚪"), + ELEVATOR("🛗"), + MIRROR("🪞"), + WINDOW("🪟"), + BED("🛏️"), + COUCH("🛋️"), + CHAIR("🪑"), + TOILET("🚽"), + PLUNGER("🪠"), + SHOWER("🚿"), + BATHTUB("🛁"), + MOUSE_TRAP("🪤"), + RAZOR("🪒"), + ROLLER("🪣"), + BUCKET("🪣"), + SOAP("🧼"), + SPONGE("🧽"), + FIRE_EXTINGUISHER("🧯"), + SHOPPING_CART("🛒"), + + // Writing & Office + PENCIL("✏️"), + PENCIL2("📝"), + PEN("🖊️"), + FOUNTAIN_PEN("🖋️"), + PAINTBRUSH("🖌️"), + CRAYON("🖍️"), + BRIEFCASE("💼"), + FILE_FOLDER("📁"), + OPEN_FILE_FOLDER("📂"), + CARD_INDEX_DIVIDERS("🗂️"), + CALENDAR("📅"), + TEAR_OFF_CALENDAR("📆"), + SPIRAL_CALENDAR("🗓️"), + SPIRAL_NOTEPAD("🗒️"), + CARD_INDEX("📇"), + CHART_UP("📈"), + CHART_DOWN("📉"), + BAR_CHART("📊"), + CLIPBOARD("📋"), + PAPERCLIP("📎"), + LINKED_PAPERCLIPS("🖇️"), + STRAIGHT_RULER("📏"), + TRIANGULAR_RULER("📐"), + SCISSORS("✂️"), + CARD_FILE_BOX("🗃️"), + FILE_CABINET("🗄️"), + WASTEBASKET("🗑️"), + + // Mail + ENVELOPE("✉️"), + EMAIL("📧"), + INBOX("📥"), + OUTBOX("📤"), + PACKAGE("📦"), + LABEL("🏷️"), + MAILBOX_CLOSED("📪"), + MAILBOX("📫"), + MAILBOX_OPEN("📭"), + POSTBOX("📮"), + BALLOT_BOX("🗳️"), + + // Money + MONEY_BAG("💰"), + COIN("🪙"), + YEN_BANKNOTE("💴"), + DOLLAR_BANKNOTE("💵"), + EURO_BANKNOTE("💶"), + POUND_BANKNOTE("💷"), + CREDIT_CARD("💳"), + RECEIPT("🧾"), + CHART_INCREASING_MONEY("💹"), + + // Phones & Computers + MOBILE_PHONE("📱"), + MOBILE_PHONE_ARROW("📲"), + TELEPHONE("☎️"), + ROTARY_PHONE("☎️"), + PHONE_RECEIVER("📞"), + PAGER("📟"), + FAX("📠"), + + BATTERY("🔋"), + ELECTRIC_PLUG("🔌"), + COMPUTER("💻"), + DESKTOP_COMPUTER("🖥️"), + KEYBOARD("⌨️"), + TRACKBALL("🖲️"), + COMPUTER_MOUSE("🖱️"), + PRINTER("🖨️"), + MINIDISC("💽"), + FLOPPY_DISK("💾"), + OPTICAL_DISC("💿"), + DVD("📀"), + HARD_DRIVE("🖴"), + CAMERA("📷"), + CAMERA_FLASH("📸"), + VIDEO_CAMERA("📹"), + MOVIE_CAMERA("🎥"), + FILM_PROJECTOR("📽️"), + FILM_FRAMES("🎞️"), + + // Lights & Energy + LIGHT_BULB("💡"), + FLASHLIGHT("🔦"), + RED_PAPER_LANTERN("🏮"), + DIYA_LAMP("🪔"), + + // Tools & Science + SATELLITE_ANTENNA("📡"), + PETRI_DISH("🧫"), + TEST_TUBE("🧪"), + DNA("🧬"), + MICROSCOPE("🔬"), + TELESCOPE("🔭"), + SATELLITE_ORBIT("🛰️"), + + // Food Prep Tools + JAR("🫙"), + POT_OF_FOOD("🍲"), + FORK("🍴"), + KNIFE("🔪"), // Book & Media + BOOK("📖"), + GREEN_BOOK("📗"), + BLUE_BOOK("📘"), + ORANGE_BOOK("📙"), + NOTEBOOK("📓"), + NOTEBOOK_WITH_DECORATIVE_COVER("📔"), + LEDGER("📒"), + CLOSED_BOOK("📕"), + OPEN_BOOK("📖"), + BOOKS("📚"), + BOOKMARK("🔖"), + BOOKMARK_TABS("📑"), + + // Symbols & Signs + RED_HEART("❤️"), + ORANGE_HEART("🧡"), + YELLOW_HEART("💛"), + GREEN_HEART("💚"), + BLUE_HEART("💙"), + PURPLE_HEART("💜"), + BLACK_HEART("🖤"), + WHITE_HEART("🤍"), + BROWN_HEART("🤎"), + + HUNDRED_POINTS("💯"), + ANGER_SYMBOL("💢"), + COLLISION("💥"), + DIZZY("💫"), + SWEAT_DROPLETS("💦"), + DASH("💨"), + + HOLE("🕳️"), + BOMB("💣"), + SPEECH_BALLOON("💬"), + LEFT_SPEECH_BUBBLE("🗨️"), + RIGHT_ANGER_BUBBLE("🗯️"), + THOUGHT_BALLOON("💭"), + ZZZ("💤"), + + // Musical & AV Symbols + MUTED_SPEAKER("🔇"), + SPEAKER_LOW("🔈"), + SPEAKER_MEDIUM("🔉"), + SPEAKER_HIGH("🔊"), + LOUDSPEAKER("📢"), + MEGAPHONE("📣"), + POSTAL_HORN("📯"), + BELL("🔔"), + BELL_WITH_SLASH("🔕"), + MUSICAL_KEYBOARD("🎹"), + EARTH_LOUDSPEAKER("📢"), + + // Communication Symbols + WIFI("📶"), + VIBRATION_MODE("📳"), + MOBILE_PHONE_OFF("📴"), + + // Warning & Safety + WARNING("⚠️"), + CHILDREN_CROSSING("🚸"), + NO_ENTRY("⛔"), + PROHIBITED("🚫"), + NO_BICYCLES("🚳"), + NO_SMOKING("🚭"), + NO_LITTERING("🚯"), + NON_POTABLE_WATER("🚱"), + NO_PEDESTRIANS("🚷"), + + // Arrows + ARROW_UP("⬆️"), + ARROW_DOWN("⬇️"), + ARROW_LEFT("⬅️"), + ARROW_RIGHT("➡️"), + ARROW_UP_DOWN("↕️"), + LEFT_RIGHT_ARROW("↔️"), + ARROW_UP_RIGHT("↗️"), + ARROW_UP_LEFT("↖️"), + ARROW_DOWN_RIGHT("↘️"), + ARROW_DOWN_LEFT("↙️"), + ARROW_DOUBLE_UP("⏫"), + ARROW_DOUBLE_DOWN("⏬"), + FAST_FORWARD("⏩"), + REWIND("⏪"), + UP_BUTTON("🔼"), + DOWN_BUTTON("🔽"), + LEFT_BUTTON("◀️"), + RIGHT_BUTTON("▶️"), + + // Shapes & Geometry + RED_CIRCLE("🔴"), + ORANGE_CIRCLE("🟠"), + YELLOW_CIRCLE("🟡"), + GREEN_CIRCLE("🟢"), + BLUE_CIRCLE("🔵"), + PURPLE_CIRCLE("🟣"), + BROWN_CIRCLE("🟤"), + BLACK_CIRCLE("⚫"), + WHITE_CIRCLE("⚪"), + + RED_SQUARE("🟥"), + ORANGE_SQUARE("🟧"), + YELLOW_SQUARE("🟨"), + GREEN_SQUARE("🟩"), + BLUE_SQUARE("🟦"), + PURPLE_SQUARE("🟪"), + BROWN_SQUARE("🟫"), + BLACK_SQUARE("⬛"), + WHITE_SQUARE("⬜"), + + LARGE_RED_SQUARE("🟥"), + LARGE_BLUE_SQUARE("🟦"), + LARGE_GREEN_SQUARE("🟩"), + + // Religion + STAR_OF_DAVID("✡️"), + WHEEL_OF_DHARMA("☸️"), + YIN_YANG("☯️"), + ORTHODOX_CROSS("☦️"), + LATIN_CROSS("✝️"), + STAR_AND_CRESCENT("☪️"), + PEACE_SYMBOL("☮️"), + OM("🕉️"), + MENORAH("🕎"), + + // Zodiacs & Astrology + ARIES("♈"), + TAURUS("♉"), + GEMINI("♊"), + CANCER("♋"), + LEO("♌"), + VIRGO("♍"), + LIBRA("♎"), + SCORPIO("♏"), + SAGITTARIUS("♐"), + CAPRICORN("♑"), + AQUARIUS("♒"), + PISCES("♓"), + + OPHIUCHUS("⛎"), + + // Alphanumeric + KEYCAP_0("0️⃣"), + KEYCAP_1("1️⃣"), + KEYCAP_2("2️⃣"), + KEYCAP_3("3️⃣"), + KEYCAP_4("4️⃣"), + KEYCAP_5("5️⃣"), + KEYCAP_6("6️⃣"), + KEYCAP_7("7️⃣"), + KEYCAP_8("8️⃣"), + KEYCAP_9("9️⃣"), + KEYCAP_10("🔟"), + + INPUT_LATIN_UPPERCASE("🔠"), + INPUT_LATIN_LOWERCASE("🔡"), + INPUT_NUMBERS("🔢"), + INPUT_SYMBOLS("🔣"), + INPUT_LATIN_LETTERS("🔤"), + + // Buttons & UI + CL_BUTTON("🆑"), + COOL_BUTTON("🆒"), + FREE_BUTTON("🆓"), + ID_BUTTON("🆔"), + NEW_BUTTON("🆕"), + NG_BUTTON("🆖"), + OK_BUTTON("🆗"), + SOS_BUTTON("🆘"), + UP_BUTTON2("🆙"), + VS_BUTTON("🆚"), + + // Other UI Symbols + CHECK_MARK("✔️"), + CHECK_MARK_BUTTON("✅"), + CHECK_BOX("☑️"), + RADIO_BUTTON("🔘"), + WHITE_CHECK_BOX("☐"), + BALLOT_BOX_X("☒"), + + CROSS_MARK("❌"), + CROSS_MARK_BUTTON("❎"), + RED_TRIANGLE_UP("🔺"), + RED_TRIANGLE_DOWN("🔻"), + DOUBLE_EXCLAMATION("‼️"), + EXCLAMATION_QUESTION("⁉️"), + + QUESTION_MARK("❓"), + WHITE_QUESTION("❔"), + WHITE_EXCLAMATION("❕"), + EXCLAMATION_MARK("❗"), + + WAVY_DASH("〰️"), + CURRENCY_EXCHANGE("💱"), + HEAVY_DOLLAR("💲"); + // Flags + // FLAG_AD("\uD83C\uDDE6\uD83C\uDDE9"), // AD + // FLAG_AE("\uD83C\uDDE6\uD83C\uDDEA"), // AE + // FLAG_AF("\uD83C\uDDE6\uD83C\uDDEB"), // AF + // FLAG_AG("\uD83C\uDDE6\uD83C\uDDEC"), // AG + // FLAG_AL("\uD83C\uDDE6\uD83C\uDDF1"), // AL + // FLAG_AM("\uD83C\uDDE6\uD83C\uDDF2"), // AM + // FLAG_AO("\uD83C\uDDE6\uD83C\uDDF4"), // AO + // FLAG_AR("\uD83C\uDDE6\uD83C\uDDF7"), // AR + // FLAG_AT("\uD83C\uDDE6\uD83C\uDDF9"), // AT + // FLAG_AU("\uD83C\uDDE6\uD83C\uDDFA"), // AU + // FLAG_AZ("\uD83C\uDDE6\uD83C\uDDFF"), // AZ + // FLAG_BA("\uD83C\uDDE7\uD83C\uDDE6"), // BA + // FLAG_BB("\uD83C\uDDE7\uD83C\uDDE7"), // BB + // FLAG_BD("\uD83C\uDDE7\uD83C\uDDE9"), // BD + // FLAG_BE("\uD83C\uDDE7\uD83C\uDDEA"), // BE + // FLAG_BF("\uD83C\uDDE7\uD83C\uDDEB"), // BF + // FLAG_BG("\uD83C\uDDE7\uD83C\uDDEC"), // BG + // FLAG_BH("\uD83C\uDDE7\uD83C\uDDED"), // BH + // FLAG_BI("\uD83C\uDDE7\uD83C\uDDEE"), // BI + // FLAG_BJ("\uD83C\uDDE7\uD83C\uDDEF"), // BJ + // FLAG_BN("\uD83C\uDDE7\uD83C\uDDF3"), // BN + // FLAG_BO("\uD83C\uDDE7\uD83C\uDDF4"), // BO + // FLAG_BR("\uD83C\uDDE7\uD83C\uDDF7"), // BR + // FLAG_BS("\uD83C\uDDE7\uD83C\uDDF8"), // BS + // FLAG_BT("\uD83C\uDDE7\uD83C\uDDF9"), // BT + // FLAG_BW("\uD83C\uDDE7\uD83C\uDDFC"), // BW + // FLAG_BY("\uD83C\uDDE7\uD83C\uDDFE"), // BY + // FLAG_BZ("\uD83C\uDDE7\uD83C\uDDFF"), // BZ + // FLAG_CA("\uD83C\uDDE8\uD83C\uDDE6"), // CA + // FLAG_CD("\uD83C\uDDE8\uD83C\uDDE9"), // CD + // FLAG_CF("\uD83C\uDDE8\uD83C\uDDEB"), // CF + // FLAG_CG("\uD83C\uDDE8\uD83C\uDDEC"), // CG + // FLAG_CH("\uD83C\uDDE8\uD83C\uDDED"), // CH + // FLAG_CL("\uD83C\uDDE8\uD83C\uDDF1"), // CL + // FLAG_CM("\uD83C\uDDE8\uD83C\uDDF2"), // CM + // FLAG_CN("\uD83C\uDDE8\uD83C\uDDF3"), // CN + // FLAG_CO("\uD83C\uDDE8\uD83C\uDDF4"), // CO + // FLAG_CR("\uD83C\uDDE8\uD83C\uDDF7"), // CR + // FLAG_CU("\uD83C\uDDE8\uD83C\uDDFA"), // CU + // FLAG_CV("\uD83C\uDDE8\uD83C\uDDFB"), // CV + // FLAG_CY("\uD83C\uDDE8\uD83C\uDDFE"), // CY + // FLAG_CZ("\uD83C\uDDE8\uD83C\uDDFF"), // CZ + // FLAG_DE("\uD83C\uDDE9\uD83C\uDDEA"), // DE + // FLAG_DJ("\uD83C\uDDE9\uD83C\uDDEF"), // DJ + // FLAG_DK("\uD83C\uDDE9\uD83C\uDDF0"), // DK + // FLAG_DM("\uD83C\uDDE9\uD83C\uDDF2"), // DM + // FLAG_DO("\uD83C\uDDE9\uD83C\uDDF4"), // DO + // FLAG_DZ("\uD83C\uDDE9\uD83C\uDDFF"), // DZ + // FLAG_EC("\uD83C\uDDEA\uD83C\uDDE8"), // EC + // FLAG_EE("\uD83C\uDDEA\uD83C\uDDEA"), // EE + // FLAG_EG("\uD83C\uDDEA\uD83C\uDDEC"), // EG + // FLAG_ER("\uD83C\uDDEA\uD83C\uDDF7"), // ER + // FLAG_ES("\uD83C\uDDEA\uD83C\uDDF8"), // ES + // FLAG_ET("\uD83C\uDDEA\uD83C\uDDF9"), // ET + // FLAG_FI("\uD83C\uDDEB\uD83C\uDDEE"), // FI + // FLAG_FJ("\uD83C\uDDEB\uD83C\uDDEF"), // FJ + // FLAG_FM("\uD83C\uDDEB\uD83C\uDDF2"), // FM + // FLAG_FR("\uD83C\uDDEB\uD83C\uDDF7"), // FR + // FLAG_GA("\uD83C\uDDEC\uD83C\uDDE6"), // GA + // FLAG_GB("\uD83C\uDDEC\uD83C\uDDE7"), // GB + // FLAG_GD("\uD83C\uDDEC\uD83C\uDDE9"), // GD + // FLAG_GE("\uD83C\uDDEC\uD83C\uDDEA"), // GE + // FLAG_GH("\uD83C\uDDEC\uD83C\uDDED"), // GH + // FLAG_GM("\uD83C\uDDEC\uD83C\uDDF2"), // GM + // FLAG_GN("\uD83C\uDDEC\uD83C\uDDF3"), // GN + // FLAG_GQ("\uD83C\uDDEC\uD83C\uDDF6"), // GQ + // FLAG_GR("\uD83C\uDDEC\uD83C\uDDF7"), // GR + // FLAG_GT("\uD83C\uDDEC\uD83C\uDDF9"), // GT + // FLAG_GW("\uD83C\uDDEC\uD83C\uDDFC"), // GW + // FLAG_GY("\uD83C\uDDEC\uD83C\uDDFE"), // GY + // FLAG_HN("\uD83C\uDDED\uD83C\uDDF3"), // HN + // FLAG_HR("\uD83C\uDDED\uD83C\uDDF7"), // HR + // FLAG_HT("\uD83C\uDDED\uD83C\uDDF9"), // HT + // FLAG_HU("\uD83C\uDDED\uD83C\uDDFA"), // HU + // FLAG_ID("\uD83C\uDDEE\uD83C\uDDE9"), // ID + // FLAG_IE("\uD83C\uDDEE\uD83C\uDDEA"), // IE + // FLAG_IL("\uD83C\uDDEE\uD83C\uDDF1"), // IL + // FLAG_IN("\uD83C\uDDEE\uD83C\uDDF3"), // IN + // FLAG_IQ("\uD83C\uDDEE\uD83C\uDDF6"), // IQ + // FLAG_IR("\uD83C\uDDEE\uD83C\uDDF7"), // IR + // FLAG_IS("\uD83C\uDDEE\uD83C\uDDF8"), // IS + // FLAG_IT("\uD83C\uDDEE\uD83C\uDDF9"), // IT + // FLAG_JM("\uD83C\uDDEF\uD83C\uDDF2"), // JM + // FLAG_JO("\uD83C\uDDEF\uD83C\uDDF4"), // JO + // FLAG_JP("\uD83C\uDDEF\uD83C\uDDF5"), // JP + // FLAG_KE("\uD83C\uDDF0\uD83C\uDDEA"), // KE + // FLAG_KG("\uD83C\uDDF0\uD83C\uDDEC"), // KG + // FLAG_KH("\uD83C\uDDF0\uD83C\uDDED"), // KH + // FLAG_KI("\uD83C\uDDF0\uD83C\uDDEE"), // KI + // FLAG_KM("\uD83C\uDDF0\uD83C\uDDF2"), // KM + // FLAG_KN("\uD83C\uDDF0\uD83C\uDDF3"), // KN + // FLAG_KW("\uD83C\uDDF0\uD83C\uDDFC"), // KW + // FLAG_KZ("\uD83C\uDDF0\uD83C\uDDFF"), // KZ + // FLAG_LA("\uD83C\uDDF1\uD83C\uDDE6"), // LA + // FLAG_LB("\uD83C\uDDF1\uD83C\uDDE7"), // LB + // FLAG_LC("\uD83C\uDDF1\uD83C\uDDE8"), // LC + // FLAG_LI("\uD83C\uDDF1\uD83C\uDDEE"), // LI + // FLAG_LK("\uD83C\uDDF1\uD83C\uDDF0"), // LK + // FLAG_LR("\uD83C\uDDF1\uD83C\uDDF7"), // LR + // FLAG_LS("\uD83C\uDDF1\uD83C\uDDF8"), // LS + // FLAG_LT("\uD83C\uDDF1\uD83C\uDDF9"), // LT + // FLAG_LU("\uD83C\uDDF1\uD83C\uDDFA"), // LU + // FLAG_LV("\uD83C\uDDF1\uD83C\uDDFB"), // LV + // FLAG_LY("\uD83C\uDDF1\uD83C\uDDFE"), // LY + // FLAG_MA("\uD83C\uDDF2\uD83C\uDDE6"), // MA + // FLAG_MC("\uD83C\uDDF2\uD83C\uDDE8"), // MC + // FLAG_MD("\uD83C\uDDF2\uD83C\uDDE9"), // MD + // FLAG_ME("\uD83C\uDDF2\uD83C\uDDEA"), // ME + // FLAG_MG("\uD83C\uDDF2\uD83C\uDDEC"), // MG + // FLAG_MH("\uD83C\uDDF2\uD83C\uDDED"), // MH + // FLAG_MK("\uD83C\uDDF2\uD83C\uDDF0"), // MK + // FLAG_ML("\uD83C\uDDF2\uD83C\uDDF1"), // ML + // FLAG_MM("\uD83C\uDDF2\uD83C\uDDF2"), // MM + // FLAG_MN("\uD83C\uDDF2\uD83C\uDDF3"), // MN + // FLAG_MR("\uD83C\uDDF2\uD83C\uDDF7"), // MR + // FLAG_MT("\uD83C\uDDF2\uD83C\uDDF9"), // MT + // FLAG_MU("\uD83C\uDDF2\uD83C\uDDFA"), // MU + // FLAG_MV("\uD83C\uDDF2\uD83C\uDDFB"), // MV + // FLAG_MW("\uD83C\uDDF2\uD83C\uDDFC"), // MW + // FLAG_MX("\uD83C\uDDF2\uD83C\uDDFD"), // MX + // FLAG_MY("\uD83C\uDDF2\uD83C\uDDFE"), // MY + // FLAG_MZ("\uD83C\uDDF2\uD83C\uDDFF"), // MZ + // FLAG_NA("\uD83C\uDDF3\uD83C\uDDE6"), // NA + // FLAG_NE("\uD83C\uDDF3\uD83C\uDDEA"), // NE + // FLAG_NG("\uD83C\uDDF3\uD83C\uDDEC"), // NG + // FLAG_NI("\uD83C\uDDF3\uD83C\uDDEE"), // NI + // FLAG_NL("\uD83C\uDDF3\uD83C\uDDF1"), // NL + // FLAG_NO("\uD83C\uDDF3\uD83C\uDDF4"), // NO + // FLAG_NP("\uD83C\uDDF3\uD83C\uDDF5"), // NP + // FLAG_NR("\uD83C\uDDF3\uD83C\uDDF7"), // NR + // FLAG_NZ("\uD83C\uDDF3\uD83C\uDDFF"), // NZ + // FLAG_OM("\uD83C\uDDF4\uD83C\uDDF2"), // OM + // FLAG_PA("\uD83C\uDDF5\uD83C\uDDE6"), // PA + // FLAG_PE("\uD83C\uDDF5\uD83C\uDDEA"), // PE + // FLAG_PG("\uD83C\uDDF5\uD83C\uDDEC"), // PG + // FLAG_PH("\uD83C\uDDF5\uD83C\uDDED"), // PH + // FLAG_PK("\uD83C\uDDF5\uD83C\uDDF0"), // PK + // FLAG_PL("\uD83C\uDDF5\uD83C\uDDF1"), // PL + // FLAG_PT("\uD83C\uDDF5\uD83C\uDDF9"), // PT + // FLAG_PW("\uD83C\uDDF5\uD83C\uDDFC"), // PW + // FLAG_PY("\uD83C\uDDF5\uD83C\uDDFE"), // PY + // FLAG_QA("\uD83C\uDDF6\uD83C\uDDE6"), // QA + // FLAG_RO("\uD83C\uDDF7\uD83C\uDDF4"), // RO + // FLAG_RS("\uD83C\uDDF7\uD83C\uDDF8"), // RS + // FLAG_RU("\uD83C\uDDF7\uD83C\uDDFA"), // RU + // FLAG_RW("\uD83C\uDDF7\uD83C\uDDFC"), // RW + // FLAG_SA("\uD83C\uDDF8\uD83C\uDDE6"), // SA + // FLAG_SB("\uD83C\uDDF8\uD83C\uDDE7"), // SB + // FLAG_SC("\uD83C\uDDF8\uD83C\uDDE8"), // SC + // FLAG_SD("\uD83C\uDDF8\uD83C\uDDE9"), // SD + // FLAG_SE("\uD83C\uDDF8\uD83C\uDDEA"), // SE + // FLAG_SG("\uD83C\uDDF8\uD83C\uDDEC"), // SG + // FLAG_SI("\uD83C\uDDF8\uD83C\uDDEE"), // SI + // FLAG_SK("\uD83C\uDDF8\uD83C\uDDF0"), // SK + // FLAG_SL("\uD83C\uDDF8\uD83C\uDDF1"), // SL + // FLAG_SM("\uD83C\uDDF8\uD83C\uDDF2"), // SM + // FLAG_SN("\uD83C\uDDF8\uD83C\uDDF3"), // SN + // FLAG_SO("\uD83C\uDDF8\uD83C\uDDF4"), // SO + // FLAG_SR("\uD83C\uDDF8\uD83C\uDDF7"), // SR + // FLAG_SS("\uD83C\uDDF8\uD83C\uDDF8"), // SS + // FLAG_ST("\uD83C\uDDF8\uD83C\uDDF9"), // ST + // FLAG_SV("\uD83C\uDDF8\uD83C\uDDFB"), // SV + // FLAG_SY("\uD83C\uDDF8\uD83C\uDDFE"), // SY + // FLAG_SZ("\uD83C\uDDF8\uD83C\uDDFF"), // SZ + // FLAG_TD("\uD83C\uDDF9\uD83C\uDDE9"), // TD + // FLAG_TG("\uD83C\uDDF9\uD83C\uDDEC"), // TG + // FLAG_TH("\uD83C\uDDF9\uD83C\uDDED"), // TH + // FLAG_TJ("\uD83C\uDDF9\uD83C\uDDEF"), // TJ + // FLAG_TL("\uD83C\uDDF9\uD83C\uDDF1"), // TL + // FLAG_TM("\uD83C\uDDF9\uD83C\uDDF2"), // TM + // FLAG_TN("\uD83C\uDDF9\uD83C\uDDF3"), // TN + // FLAG_TO("\uD83C\uDDF9\uD83C\uDDF4"), // TO + // FLAG_TR("\uD83C\uDDF9\uD83C\uDDF7"), // TR + // FLAG_TT("\uD83C\uDDF9\uD83C\uDDF9"), // TT + // FLAG_TV("\uD83C\uDDF9\uD83C\uDDFB"), // TV + // FLAG_TW("\uD83C\uDDF9\uD83C\uDDFC"), // TW + // FLAG_TZ("\uD83C\uDDF9\uD83C\uDDFF"), // TZ + // FLAG_UA("\uD83C\uDDFA\uD83C\uDDE6"), // UA + // FLAG_UG("\uD83C\uDDFA\uD83C\uDDEC"), // UG + // FLAG_US("\uD83C\uDDFA\uD83C\uDDF8"), // US + // FLAG_UY("\uD83C\uDDFA\uD83C\uDDFE"), // UY + // FLAG_UZ("\uD83C\uDDFA\uD83C\uDDFF"), // UZ + // FLAG_VA("\uD83C\uDDFB\uD83C\uDDE6"), // VA + // FLAG_VC("\uD83C\uDDFB\uD83C\uDDE8"), // VC + // FLAG_VE("\uD83C\uDDFB\uD83C\uDDEA"), // VE + // FLAG_VN("\uD83C\uDDFB\uD83C\uDDF3"), // VN + // FLAG_VU("\uD83C\uDDFB\uD83C\uDDFA"), // VU + // FLAG_WS("\uD83C\uDDFC\uD83C\uDDF8"), // WS + // FLAG_XK("\uD83C\uDDFD\uD83C\uDDF0"), // XK + // FLAG_YE("\uD83C\uDDFE\uD83C\uDDEA"), // YE + // FLAG_ZA("\uD83C\uDDFF\uD83C\uDDE6"), // ZA + // FLAG_ZM("\uD83C\uDDFF\uD83C\uDDF2"), // ZM + // FLAG_ZW("\uD83C\uDDFF\uD83C\uDDFC"), // ZW + // Special Flags + // FLAG_ENGLAND("🏴"), + // FLAG_SCOTLAND("🏴"), + // FLAG_WALES("🏴"), + // FLAG_EUROPEAN_UNION("🇪🇺"), + // FLAG_PIRATE("🏴‍☠️"), + // FLAG_RAINBOW("🏳️‍🌈"), + // FLAG_TRANSGENDER("🏳️‍⚧️"); + + private final String emoji; + + @Override + public String toString() { + return emoji; + } + + private Emoji(String emoji) { + this.emoji = emoji; + } +} diff --git a/src/main/java/de/ddnss/eternal/utils/io/ics/ICS.java b/src/main/java/de/ddnss/eternal/utils/io/ics/ICS.java new file mode 100644 index 0000000..df85a49 --- /dev/null +++ b/src/main/java/de/ddnss/eternal/utils/io/ics/ICS.java @@ -0,0 +1,46 @@ +package de.ddnss.eternal.utils.io.ics; + +import java.time.LocalDateTime; +import java.time.ZoneOffset; +import java.time.format.DateTimeFormatter; +import java.util.UUID; + +/** + * Never tested, never trusted + * + * @since 1.5.0 + * + * @author Robin Cheney + */ +public class ICS { + private static final DateTimeFormatter ICS_FORMAT = DateTimeFormatter.ofPattern("yyyyMMdd'T'HHmmss'Z'"); + + public static String createICS(String summary, String description, String location, + LocalDateTime start, LocalDateTime end) { + + String uid = UUID.randomUUID().toString() + "@example.com"; + String dtstamp = LocalDateTime.now(ZoneOffset.UTC).format(ICS_FORMAT); + + return "BEGIN:VCALENDAR\r\n" + + "VERSION:2.0\r\n" + + "PRODID:-//My Java App//EN\r\n" + + "BEGIN:VEVENT\r\n" + + "UID:" + uid + "\r\n" + + "DTSTAMP:" + dtstamp + "\r\n" + + "DTSTART:" + start.atOffset(ZoneOffset.UTC).format(ICS_FORMAT) + "\r\n" + + "DTEND:" + end.atOffset(ZoneOffset.UTC).format(ICS_FORMAT) + "\r\n" + + "SUMMARY:" + summary + "\r\n" + + "DESCRIPTION:" + escape(description) + "\r\n" + + "LOCATION:" + escape(location) + "\r\n" + + "END:VEVENT\r\n" + + "END:VCALENDAR\r\n"; + } + + // ICS requires escaping commas, semicolons, and backslashes + private static String escape(String text) { + return text.replace("\\", "\\\\") + .replace(",", "\\,") + .replace(";", "\\;"); + + } +} -- 2.43.0