Add emoji support for markdown
908
src/main/scala/view/EmojiConverter.scala
Normal file
@@ -0,0 +1,908 @@
|
||||
package view
|
||||
|
||||
import service.RequestCache
|
||||
import util.Implicits.RichString
|
||||
|
||||
/**
|
||||
* Converts an Emoji like :smiley: to its related image
|
||||
*/
|
||||
trait EmojiConverter { self: RequestCache =>
|
||||
|
||||
private val emojis = Set(
|
||||
"+1",
|
||||
"-1",
|
||||
"100",
|
||||
"109",
|
||||
"1234",
|
||||
"8ball",
|
||||
"a",
|
||||
"ab",
|
||||
"abc",
|
||||
"abcd",
|
||||
"accept",
|
||||
"aerial_tramway",
|
||||
"airplane",
|
||||
"alarm_clock",
|
||||
"alien",
|
||||
"ambulance",
|
||||
"anchor",
|
||||
"angel",
|
||||
"anger",
|
||||
"angry",
|
||||
"anguished",
|
||||
"ant",
|
||||
"apple",
|
||||
"aquarius",
|
||||
"aries",
|
||||
"arrow_backward",
|
||||
"arrow_double_down",
|
||||
"arrow_double_up",
|
||||
"arrow_down",
|
||||
"arrow_down_small",
|
||||
"arrow_forward",
|
||||
"arrow_heading_down",
|
||||
"arrow_heading_up",
|
||||
"arrow_left",
|
||||
"arrow_lower_left",
|
||||
"arrow_lower_right",
|
||||
"arrow_right",
|
||||
"arrow_right_hook",
|
||||
"arrow_up",
|
||||
"arrow_up_down",
|
||||
"arrow_up_small",
|
||||
"arrow_upper_left",
|
||||
"arrow_upper_right",
|
||||
"arrows_clockwise",
|
||||
"arrows_counterclockwise",
|
||||
"art",
|
||||
"articulated_lorry",
|
||||
"astonished",
|
||||
"atm",
|
||||
"b",
|
||||
"baby",
|
||||
"baby_bottle",
|
||||
"baby_chick",
|
||||
"baby_symbol",
|
||||
"baggage_claim",
|
||||
"balloon",
|
||||
"ballot_box_with_check",
|
||||
"bamboo",
|
||||
"banana",
|
||||
"bangbang",
|
||||
"bank",
|
||||
"bar_chart",
|
||||
"barber",
|
||||
"baseball",
|
||||
"basketball",
|
||||
"bath",
|
||||
"bathtub",
|
||||
"battery",
|
||||
"bear",
|
||||
"beer",
|
||||
"beers",
|
||||
"beetle",
|
||||
"beginner",
|
||||
"bell",
|
||||
"bento",
|
||||
"bicyclist",
|
||||
"bike",
|
||||
"bikini",
|
||||
"bird",
|
||||
"birthday",
|
||||
"black_circle",
|
||||
"black_joker",
|
||||
"black_nib",
|
||||
"black_square",
|
||||
"black_square_button",
|
||||
"blossom",
|
||||
"blowfish",
|
||||
"blue_book",
|
||||
"blue_car",
|
||||
"blue_heart",
|
||||
"blush",
|
||||
"blush",
|
||||
"boar",
|
||||
"boat",
|
||||
"bomb",
|
||||
"book",
|
||||
"bookmark",
|
||||
"bookmark_tabs",
|
||||
"books",
|
||||
"boom",
|
||||
"boot",
|
||||
"bouquet",
|
||||
"bow",
|
||||
"bowling",
|
||||
"bowtie",
|
||||
"boy",
|
||||
"bread",
|
||||
"bride_with_veil",
|
||||
"bridge_at_night",
|
||||
"briefcase",
|
||||
"broken_heart",
|
||||
"broken_heart",
|
||||
"bug",
|
||||
"bulb",
|
||||
"bullettrain_front",
|
||||
"bullettrain_side",
|
||||
"bus",
|
||||
"busstop",
|
||||
"bust_in_silhouette",
|
||||
"busts_in_silhouette",
|
||||
"cactus",
|
||||
"cake",
|
||||
"calendar",
|
||||
"calling",
|
||||
"camel",
|
||||
"camera",
|
||||
"cancer",
|
||||
"candy",
|
||||
"capital_abcd",
|
||||
"capricorn",
|
||||
"car",
|
||||
"card_index",
|
||||
"carousel_horse",
|
||||
"cat2",
|
||||
"cat",
|
||||
"cd",
|
||||
"chart",
|
||||
"chart_with_downwards_trend",
|
||||
"chart_with_upwards_trend",
|
||||
"checkered_flag",
|
||||
"cherries",
|
||||
"cherry_blossom",
|
||||
"chestnut",
|
||||
"chicken",
|
||||
"children_crossing",
|
||||
"chocolate_bar",
|
||||
"christmas_tree",
|
||||
"church",
|
||||
"cinema",
|
||||
"circus_tent",
|
||||
"city_sunrise",
|
||||
"city_sunset",
|
||||
"cl",
|
||||
"clap",
|
||||
"clapper",
|
||||
"clipboard",
|
||||
"clock1030",
|
||||
"clock10",
|
||||
"clock1130",
|
||||
"clock11",
|
||||
"clock1230",
|
||||
"clock12",
|
||||
"clock130",
|
||||
"clock1",
|
||||
"clock230",
|
||||
"clock2",
|
||||
"clock330",
|
||||
"clock3",
|
||||
"clock430",
|
||||
"clock4",
|
||||
"clock530",
|
||||
"clock5",
|
||||
"clock630",
|
||||
"clock6",
|
||||
"clock730",
|
||||
"clock7",
|
||||
"clock830",
|
||||
"clock8",
|
||||
"clock930",
|
||||
"clock9",
|
||||
"closed_book",
|
||||
"closed_lock_with_key",
|
||||
"closed_umbrella",
|
||||
"cloud",
|
||||
"clubs",
|
||||
"cn",
|
||||
"cocktail",
|
||||
"coffee",
|
||||
"cold_sweat",
|
||||
"collision",
|
||||
"computer",
|
||||
"confetti_ball",
|
||||
"confounded",
|
||||
"confounded",
|
||||
"confused",
|
||||
"congratulations",
|
||||
"construction",
|
||||
"construction_worker",
|
||||
"convenience_store",
|
||||
"cookie",
|
||||
"cool",
|
||||
"cop",
|
||||
"copyright",
|
||||
"corn",
|
||||
"couple",
|
||||
"couple_with_heart",
|
||||
"couplekiss",
|
||||
"cow2",
|
||||
"cow",
|
||||
"credit_card",
|
||||
"crocodile",
|
||||
"crossed_flags",
|
||||
"crown",
|
||||
"cry",
|
||||
"crying_cat_face",
|
||||
"crystal_ball",
|
||||
"cupid",
|
||||
"curly_loop",
|
||||
"currency_exchange",
|
||||
"curry",
|
||||
"custard",
|
||||
"customs",
|
||||
"cyclone",
|
||||
"dancer",
|
||||
"dancers",
|
||||
"dango",
|
||||
"dart",
|
||||
"dash",
|
||||
"date",
|
||||
"de",
|
||||
"deciduous_tree",
|
||||
"department_store",
|
||||
"diamond_shape_with_a_dot_inside",
|
||||
"diamonds",
|
||||
"disappointed",
|
||||
"disappointed",
|
||||
"dizzy",
|
||||
"dizzy_face",
|
||||
"do_not_litter",
|
||||
"dog2",
|
||||
"dog",
|
||||
"dollar",
|
||||
"dolls",
|
||||
"dolphin",
|
||||
"door",
|
||||
"doughnut",
|
||||
"dragon",
|
||||
"dragon_face",
|
||||
"dress",
|
||||
"dromedary_camel",
|
||||
"droplet",
|
||||
"dvd",
|
||||
"e-mail",
|
||||
"ear",
|
||||
"ear_of_rice",
|
||||
"earth_africa",
|
||||
"earth_americas",
|
||||
"earth_asia",
|
||||
"egg",
|
||||
"eggplant",
|
||||
"eight",
|
||||
"eight_pointed_black_star",
|
||||
"eight_spoked_asterisk",
|
||||
"electric_plug",
|
||||
"elephant",
|
||||
"email",
|
||||
"end",
|
||||
"envelope",
|
||||
"es",
|
||||
"euro",
|
||||
"european_castle",
|
||||
"european_post_office",
|
||||
"evergreen_tree",
|
||||
"exclamation",
|
||||
"expressionless",
|
||||
"eyeglasses",
|
||||
"eyes",
|
||||
"facepunch",
|
||||
"factory",
|
||||
"fallen_leaf",
|
||||
"family",
|
||||
"fast_forward",
|
||||
"fax",
|
||||
"fearful",
|
||||
"feelsgood",
|
||||
"feet",
|
||||
"ferris_wheel",
|
||||
"file_folder",
|
||||
"finnadie",
|
||||
"fire",
|
||||
"fire_engine",
|
||||
"fireworks",
|
||||
"first_quarter_moon",
|
||||
"first_quarter_moon_with_face",
|
||||
"fish",
|
||||
"fish_cake",
|
||||
"fishing_pole_and_fish",
|
||||
"fist",
|
||||
"five",
|
||||
"flags",
|
||||
"flashlight",
|
||||
"floppy_disk",
|
||||
"flower_playing_cards",
|
||||
"flushed",
|
||||
"flushed",
|
||||
"foggy",
|
||||
"football",
|
||||
"fork_and_knife",
|
||||
"fountain",
|
||||
"four",
|
||||
"four_leaf_clover",
|
||||
"fr",
|
||||
"free",
|
||||
"fried_shrimp",
|
||||
"fries",
|
||||
"frog",
|
||||
"frowning",
|
||||
"fuelpump",
|
||||
"full_moon",
|
||||
"full_moon_with_face",
|
||||
"game_die",
|
||||
"gb",
|
||||
"gem",
|
||||
"gemini",
|
||||
"ghost",
|
||||
"gift",
|
||||
"gift_heart",
|
||||
"girl",
|
||||
"globe_with_meridians",
|
||||
"goat",
|
||||
"goberserk",
|
||||
"godmode",
|
||||
"golf",
|
||||
"grapes",
|
||||
"green_apple",
|
||||
"green_book",
|
||||
"green_heart",
|
||||
"grey_exclamation",
|
||||
"grey_question",
|
||||
"grimacing",
|
||||
"grin",
|
||||
"grinning",
|
||||
"guardsman",
|
||||
"guitar",
|
||||
"gun",
|
||||
"haircut",
|
||||
"hamburger",
|
||||
"hammer",
|
||||
"hamster",
|
||||
"hand",
|
||||
"handbag",
|
||||
"hankey",
|
||||
"hash",
|
||||
"hatched_chick",
|
||||
"hatching_chick",
|
||||
"headphones",
|
||||
"hear_no_evil",
|
||||
"heart",
|
||||
"heart",
|
||||
"heart_decoration",
|
||||
"heart_eyes",
|
||||
"heart_eyes_cat",
|
||||
"heartbeat",
|
||||
"heartpulse",
|
||||
"hearts",
|
||||
"heavy_check_mark",
|
||||
"heavy_division_sign",
|
||||
"heavy_dollar_sign",
|
||||
"heavy_exclamation_mark",
|
||||
"heavy_minus_sign",
|
||||
"heavy_multiplication_x",
|
||||
"heavy_plus_sign",
|
||||
"helicopter",
|
||||
"herb",
|
||||
"hibiscus",
|
||||
"high_brightness",
|
||||
"high_heel",
|
||||
"hocho",
|
||||
"honey_pot",
|
||||
"honeybee",
|
||||
"horse",
|
||||
"horse_racing",
|
||||
"hospital",
|
||||
"hotel",
|
||||
"hotsprings",
|
||||
"hourglass",
|
||||
"hourglass_flowing_sand",
|
||||
"house",
|
||||
"house_with_garden",
|
||||
"hurtrealbad",
|
||||
"hushed",
|
||||
"ice_cream",
|
||||
"icecream",
|
||||
"id",
|
||||
"ideograph_advantage",
|
||||
"imp",
|
||||
"inbox_tray",
|
||||
"incoming_envelope",
|
||||
"information_desk_person",
|
||||
"information_source",
|
||||
"innocent",
|
||||
"interrobang",
|
||||
"iphone",
|
||||
"it",
|
||||
"izakaya_lantern",
|
||||
"jack_o_lantern",
|
||||
"japan",
|
||||
"japanese_castle",
|
||||
"japanese_goblin",
|
||||
"japanese_ogre",
|
||||
"jeans",
|
||||
"joy",
|
||||
"joy_cat",
|
||||
"jp",
|
||||
"key",
|
||||
"keycap_ten",
|
||||
"kimono",
|
||||
"kiss",
|
||||
"kissing",
|
||||
"kissing_cat",
|
||||
"kissing_closed_eyes",
|
||||
"kissing_heart",
|
||||
"kissing_heart",
|
||||
"kissing_smiling_eyes",
|
||||
"koala",
|
||||
"koko",
|
||||
"kr",
|
||||
"large_blue_circle",
|
||||
"large_blue_diamond",
|
||||
"large_orange_diamond",
|
||||
"last_quarter_moon",
|
||||
"last_quarter_moon_with_face",
|
||||
"laughing",
|
||||
"leaves",
|
||||
"ledger",
|
||||
"left_luggage",
|
||||
"left_right_arrow",
|
||||
"leftwards_arrow_with_hook",
|
||||
"lemon",
|
||||
"leo",
|
||||
"leopard",
|
||||
"libra",
|
||||
"light_rail",
|
||||
"link",
|
||||
"lips",
|
||||
"lipstick",
|
||||
"lock",
|
||||
"lock_with_ink_pen",
|
||||
"lollipop",
|
||||
"loop",
|
||||
"loudspeaker",
|
||||
"love_hotel",
|
||||
"love_letter",
|
||||
"low_brightness",
|
||||
"m",
|
||||
"mag",
|
||||
"mag_right",
|
||||
"mahjong",
|
||||
"mailbox",
|
||||
"mailbox_closed",
|
||||
"mailbox_with_mail",
|
||||
"mailbox_with_no_mail",
|
||||
"man",
|
||||
"man_with_gua_pi_mao",
|
||||
"man_with_turban",
|
||||
"mans_shoe",
|
||||
"maple_leaf",
|
||||
"mask",
|
||||
"mask",
|
||||
"massage",
|
||||
"meat_on_bone",
|
||||
"mega",
|
||||
"melon",
|
||||
"memo",
|
||||
"mens",
|
||||
"metal",
|
||||
"metro",
|
||||
"microphone",
|
||||
"microscope",
|
||||
"milky_way",
|
||||
"minibus",
|
||||
"minidisc",
|
||||
"mobile_phone_off",
|
||||
"money_with_wings",
|
||||
"moneybag",
|
||||
"monkey",
|
||||
"monkey_face",
|
||||
"monorail",
|
||||
"moon",
|
||||
"mortar_board",
|
||||
"mount_fuji",
|
||||
"mountain_bicyclist",
|
||||
"mountain_cableway",
|
||||
"mountain_railway",
|
||||
"mouse2",
|
||||
"mouse",
|
||||
"movie_camera",
|
||||
"moyai",
|
||||
"muscle",
|
||||
"mushroom",
|
||||
"musical_keyboard",
|
||||
"musical_note",
|
||||
"musical_score",
|
||||
"mute",
|
||||
"nail_care",
|
||||
"name_badge",
|
||||
"neckbeard",
|
||||
"necktie",
|
||||
"negative_squared_cross_mark",
|
||||
"neutral_face",
|
||||
"new",
|
||||
"new_moon",
|
||||
"new_moon_with_face",
|
||||
"newspaper",
|
||||
"ng",
|
||||
"nine",
|
||||
"no_bell",
|
||||
"no_bicycles",
|
||||
"no_entry",
|
||||
"no_entry_sign",
|
||||
"no_good",
|
||||
"no_mobile_phones",
|
||||
"no_mouth",
|
||||
"no_pedestrians",
|
||||
"no_smoking",
|
||||
"non-potable_water",
|
||||
"nose",
|
||||
"notebook",
|
||||
"notebook_with_decorative_cover",
|
||||
"notes",
|
||||
"nut_and_bolt",
|
||||
"o2",
|
||||
"o",
|
||||
"ocean",
|
||||
"octocat",
|
||||
"octopus",
|
||||
"oden",
|
||||
"office",
|
||||
"ok",
|
||||
"ok_hand",
|
||||
"ok_woman",
|
||||
"older_man",
|
||||
"older_woman",
|
||||
"on",
|
||||
"oncoming_automobile",
|
||||
"oncoming_bus",
|
||||
"oncoming_police_car",
|
||||
"oncoming_taxi",
|
||||
"one",
|
||||
"open_file_folder",
|
||||
"open_hands",
|
||||
"open_mouth",
|
||||
"ophiuchus",
|
||||
"orange_book",
|
||||
"outbox_tray",
|
||||
"ox",
|
||||
"page_facing_up",
|
||||
"page_with_curl",
|
||||
"pager",
|
||||
"palm_tree",
|
||||
"panda_face",
|
||||
"paperclip",
|
||||
"parking",
|
||||
"part_alternation_mark",
|
||||
"partly_sunny",
|
||||
"passport_control",
|
||||
"paw_prints",
|
||||
"peach",
|
||||
"pear",
|
||||
"pencil2",
|
||||
"pencil",
|
||||
"penguin",
|
||||
"pensive",
|
||||
"pensive",
|
||||
"performing_arts",
|
||||
"persevere",
|
||||
"person_frowning",
|
||||
"person_with_blond_hair",
|
||||
"person_with_pouting_face",
|
||||
"phone",
|
||||
"pig2",
|
||||
"pig",
|
||||
"pig_nose",
|
||||
"pill",
|
||||
"pineapple",
|
||||
"pisces",
|
||||
"pizza",
|
||||
"point_down",
|
||||
"point_left",
|
||||
"point_right",
|
||||
"point_up",
|
||||
"point_up_2",
|
||||
"police_car",
|
||||
"poodle",
|
||||
"poop",
|
||||
"post_office",
|
||||
"postal_horn",
|
||||
"postbox",
|
||||
"potable_water",
|
||||
"pouch",
|
||||
"poultry_leg",
|
||||
"pound",
|
||||
"pouting_cat",
|
||||
"pray",
|
||||
"princess",
|
||||
"punch",
|
||||
"purple_heart",
|
||||
"purse",
|
||||
"pushpin",
|
||||
"put_litter_in_its_place",
|
||||
"question",
|
||||
"rabbit2",
|
||||
"rabbit",
|
||||
"racehorse",
|
||||
"radio",
|
||||
"radio_button",
|
||||
"rage1",
|
||||
"rage2",
|
||||
"rage3",
|
||||
"rage4",
|
||||
"rage",
|
||||
"rage",
|
||||
"railway_car",
|
||||
"rainbow",
|
||||
"raised_hand",
|
||||
"raised_hands",
|
||||
"ram",
|
||||
"ramen",
|
||||
"rat",
|
||||
"recycle",
|
||||
"red_car",
|
||||
"red_circle",
|
||||
"registered",
|
||||
"relaxed",
|
||||
"relaxed",
|
||||
"relieved",
|
||||
"repeat",
|
||||
"repeat_one",
|
||||
"restroom",
|
||||
"revolving_hearts",
|
||||
"rewind",
|
||||
"ribbon",
|
||||
"rice",
|
||||
"rice_ball",
|
||||
"rice_cracker",
|
||||
"rice_scene",
|
||||
"ring",
|
||||
"rocket",
|
||||
"roller_coaster",
|
||||
"rooster",
|
||||
"rose",
|
||||
"rotating_light",
|
||||
"round_pushpin",
|
||||
"rowboat",
|
||||
"ru",
|
||||
"rugby_football",
|
||||
"runner",
|
||||
"running",
|
||||
"running_shirt_with_sash",
|
||||
"sa",
|
||||
"sagittarius",
|
||||
"sailboat",
|
||||
"sake",
|
||||
"sandal",
|
||||
"santa",
|
||||
"satellite",
|
||||
"satisfied",
|
||||
"saxophone",
|
||||
"school",
|
||||
"school_satchel",
|
||||
"scissors",
|
||||
"scorpius",
|
||||
"scream",
|
||||
"scream",
|
||||
"scream_cat",
|
||||
"scroll",
|
||||
"seat",
|
||||
"secret",
|
||||
"see_no_evil",
|
||||
"seedling",
|
||||
"seven",
|
||||
"shaved_ice",
|
||||
"sheep",
|
||||
"shell",
|
||||
"ship",
|
||||
"shipit",
|
||||
"shirt",
|
||||
"shit",
|
||||
"shoe",
|
||||
"shower",
|
||||
"signal_strength",
|
||||
"six",
|
||||
"six_pointed_star",
|
||||
"ski",
|
||||
"skull",
|
||||
"sleeping",
|
||||
"sleepy",
|
||||
"slot_machine",
|
||||
"small_blue_diamond",
|
||||
"small_orange_diamond",
|
||||
"small_red_triangle",
|
||||
"small_red_triangle_down",
|
||||
"smile",
|
||||
"smile_cat",
|
||||
"smiley",
|
||||
"smiley",
|
||||
"smiley_cat",
|
||||
"smiling_imp",
|
||||
"smirk",
|
||||
"smirk",
|
||||
"smirk_cat",
|
||||
"smoking",
|
||||
"snail",
|
||||
"snake",
|
||||
"snowboarder",
|
||||
"snowflake",
|
||||
"snowman",
|
||||
"sob",
|
||||
"sob",
|
||||
"soccer",
|
||||
"soon",
|
||||
"sos",
|
||||
"sound",
|
||||
"space_invader",
|
||||
"spades",
|
||||
"spaghetti",
|
||||
"sparkler",
|
||||
"sparkles",
|
||||
"sparkling_heart",
|
||||
"speak_no_evil",
|
||||
"speaker",
|
||||
"speech_balloon",
|
||||
"speedboat",
|
||||
"squirrel",
|
||||
"star2",
|
||||
"star",
|
||||
"stars",
|
||||
"station",
|
||||
"statue_of_liberty",
|
||||
"steam_locomotive",
|
||||
"stew",
|
||||
"straight_ruler",
|
||||
"strawberry",
|
||||
"stuck_out_tongue",
|
||||
"stuck_out_tongue_closed_eyes",
|
||||
"stuck_out_tongue_closed_eyes",
|
||||
"stuck_out_tongue_winking_eye",
|
||||
"stuck_out_tongue_winking_eye",
|
||||
"sun_with_face",
|
||||
"sunflower",
|
||||
"sunglasses",
|
||||
"sunny",
|
||||
"sunrise",
|
||||
"sunrise_over_mountains",
|
||||
"surfer",
|
||||
"sushi",
|
||||
"suspect",
|
||||
"suspension_railway",
|
||||
"sweat",
|
||||
"sweat_drops",
|
||||
"sweat_smile",
|
||||
"sweet_potato",
|
||||
"swimmer",
|
||||
"symbols",
|
||||
"syringe",
|
||||
"tada",
|
||||
"tanabata_tree",
|
||||
"tangerine",
|
||||
"taurus",
|
||||
"taxi",
|
||||
"tea",
|
||||
"telephone",
|
||||
"telephone_receiver",
|
||||
"telescope",
|
||||
"tennis",
|
||||
"tent",
|
||||
"thought_balloon",
|
||||
"three",
|
||||
"thumbsdown",
|
||||
"thumbsup",
|
||||
"ticket",
|
||||
"tiger2",
|
||||
"tiger",
|
||||
"tired_face",
|
||||
"tm",
|
||||
"toilet",
|
||||
"tokyo_tower",
|
||||
"tomato",
|
||||
"tongue",
|
||||
"top",
|
||||
"tophat",
|
||||
"tractor",
|
||||
"traffic_light",
|
||||
"train2",
|
||||
"train",
|
||||
"tram",
|
||||
"triangular_flag_on_post",
|
||||
"triangular_ruler",
|
||||
"trident",
|
||||
"triumph",
|
||||
"trolleybus",
|
||||
"trollface",
|
||||
"trophy",
|
||||
"tropical_drink",
|
||||
"tropical_fish",
|
||||
"truck",
|
||||
"trumpet",
|
||||
"tshirt",
|
||||
"tulip",
|
||||
"turtle",
|
||||
"tv",
|
||||
"twisted_rightwards_arrows",
|
||||
"two",
|
||||
"two_hearts",
|
||||
"two_men_holding_hands",
|
||||
"two_women_holding_hands",
|
||||
"u5272",
|
||||
"u5408",
|
||||
"u55b6",
|
||||
"u6307",
|
||||
"u6708",
|
||||
"u6709",
|
||||
"u6e80",
|
||||
"u7121",
|
||||
"u7533",
|
||||
"u7981",
|
||||
"u7a7a",
|
||||
"uk",
|
||||
"umbrella",
|
||||
"unamused",
|
||||
"underage",
|
||||
"unlock",
|
||||
"up",
|
||||
"us",
|
||||
"v",
|
||||
"vertical_traffic_light",
|
||||
"vhs",
|
||||
"vibration_mode",
|
||||
"video_camera",
|
||||
"video_game",
|
||||
"violin",
|
||||
"virgo",
|
||||
"volcano",
|
||||
"vs",
|
||||
"walking",
|
||||
"waning_crescent_moon",
|
||||
"waning_gibbous_moon",
|
||||
"warning",
|
||||
"watch",
|
||||
"water_buffalo",
|
||||
"watermelon",
|
||||
"wave",
|
||||
"wavy_dash",
|
||||
"waxing_crescent_moon",
|
||||
"waxing_gibbous_moon",
|
||||
"wc",
|
||||
"weary",
|
||||
"wedding",
|
||||
"whale2",
|
||||
"whale",
|
||||
"wheelchair",
|
||||
"white_check_mark",
|
||||
"white_circle",
|
||||
"white_flower",
|
||||
"white_square",
|
||||
"white_square_button",
|
||||
"wind_chime",
|
||||
"wine_glass",
|
||||
"wink2",
|
||||
"wink",
|
||||
"wink",
|
||||
"wolf",
|
||||
"woman",
|
||||
"womans_clothes",
|
||||
"womans_hat",
|
||||
"womens",
|
||||
"worried",
|
||||
"wrench",
|
||||
"x",
|
||||
"yellow_heart",
|
||||
"yen",
|
||||
"yum",
|
||||
"zap",
|
||||
"zero",
|
||||
"zzz"
|
||||
)
|
||||
|
||||
private val emojiPattern = """\:[a-z0-9_\-\+]+\:""".r
|
||||
|
||||
protected def convertEmojis(text: String)(implicit context: app.Context): String =
|
||||
emojiPattern replaceAllIn(text, e => {
|
||||
val emoji = e.group(0) replaceAll(":", "")
|
||||
if (!emojis.contains(emoji)) s":$emoji:"
|
||||
else s"""<img src="${context.path}/assets/common/images/emojis/${emoji}.png" alt=":$emoji:" class="emoji" />"""
|
||||
})
|
||||
|
||||
}
|
||||
@@ -105,7 +105,7 @@ class GitBucketHtmlSerializer(
|
||||
)(implicit val context: app.Context) extends ToHtmlSerializer(
|
||||
new GitBucketLinkRender(context, repository, enableWikiLink, pages),
|
||||
Map[String, VerbatimSerializer](VerbatimSerializer.DEFAULT -> new GitBucketVerbatimSerializer).asJava
|
||||
) with LinkConverter with RequestCache {
|
||||
) with LinkConverter with EmojiConverter with RequestCache {
|
||||
|
||||
override protected def printImageTag(imageNode: SuperNode, url: String): Unit = {
|
||||
printer.print("<a target=\"_blank\" href=\"").print(fixUrl(url, true)).print("\">")
|
||||
@@ -162,10 +162,13 @@ class GitBucketHtmlSerializer(
|
||||
|
||||
override def visit(node: TextNode): Unit = {
|
||||
// convert commit id and username to link.
|
||||
val t = if(enableRefsLink) convertRefsLinks(node.getText, repository, "issue:") else node.getText
|
||||
val links = if(enableRefsLink) convertRefsLinks(node.getText, repository, "issue:") else node.getText
|
||||
|
||||
// convert emoji to image
|
||||
val emojis = convertEmojis(links)
|
||||
|
||||
// convert task list to checkbox.
|
||||
val text = if(enableTaskList) GitBucketHtmlSerializer.convertCheckBox(t, hasWritePermission) else t
|
||||
val text = if(enableTaskList) GitBucketHtmlSerializer.convertCheckBox(emojis, hasWritePermission) else emojis
|
||||
|
||||
if (abbreviations.isEmpty) {
|
||||
printer.print(text)
|
||||
|
||||
@@ -1272,3 +1272,8 @@ h5 a.markdown-anchor-link {
|
||||
h6 a.markdown-anchor-link {
|
||||
top: 6px;
|
||||
}
|
||||
|
||||
.emoji {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
BIN
src/main/webapp/assets/common/images/emojis/+1.png
Normal file
|
After Width: | Height: | Size: 5.0 KiB |
BIN
src/main/webapp/assets/common/images/emojis/-1.png
Normal file
|
After Width: | Height: | Size: 5.0 KiB |
BIN
src/main/webapp/assets/common/images/emojis/100.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
src/main/webapp/assets/common/images/emojis/109.png
Normal file
|
After Width: | Height: | Size: 3.6 KiB |
BIN
src/main/webapp/assets/common/images/emojis/1234.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
src/main/webapp/assets/common/images/emojis/8ball.png
Normal file
|
After Width: | Height: | Size: 4.0 KiB |
BIN
src/main/webapp/assets/common/images/emojis/a.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
src/main/webapp/assets/common/images/emojis/ab.png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
src/main/webapp/assets/common/images/emojis/abc.png
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
BIN
src/main/webapp/assets/common/images/emojis/abcd.png
Normal file
|
After Width: | Height: | Size: 4.4 KiB |
BIN
src/main/webapp/assets/common/images/emojis/accept.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
src/main/webapp/assets/common/images/emojis/aerial_tramway.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
src/main/webapp/assets/common/images/emojis/airplane.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
src/main/webapp/assets/common/images/emojis/alarm_clock.png
Normal file
|
After Width: | Height: | Size: 6.9 KiB |
BIN
src/main/webapp/assets/common/images/emojis/alien.png
Normal file
|
After Width: | Height: | Size: 5.3 KiB |
BIN
src/main/webapp/assets/common/images/emojis/ambulance.png
Normal file
|
After Width: | Height: | Size: 3.6 KiB |
BIN
src/main/webapp/assets/common/images/emojis/anchor.png
Normal file
|
After Width: | Height: | Size: 4.4 KiB |
BIN
src/main/webapp/assets/common/images/emojis/angel.png
Normal file
|
After Width: | Height: | Size: 6.5 KiB |
BIN
src/main/webapp/assets/common/images/emojis/anger.png
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
src/main/webapp/assets/common/images/emojis/angry.png
Normal file
|
After Width: | Height: | Size: 4.9 KiB |
BIN
src/main/webapp/assets/common/images/emojis/anguished.png
Normal file
|
After Width: | Height: | Size: 5.0 KiB |
BIN
src/main/webapp/assets/common/images/emojis/ant.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
src/main/webapp/assets/common/images/emojis/apple.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
src/main/webapp/assets/common/images/emojis/aquarius.png
Normal file
|
After Width: | Height: | Size: 5.0 KiB |
BIN
src/main/webapp/assets/common/images/emojis/aries.png
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
BIN
src/main/webapp/assets/common/images/emojis/arrow_backward.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
BIN
src/main/webapp/assets/common/images/emojis/arrow_double_up.png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
BIN
src/main/webapp/assets/common/images/emojis/arrow_down.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
src/main/webapp/assets/common/images/emojis/arrow_down_small.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
src/main/webapp/assets/common/images/emojis/arrow_forward.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
BIN
src/main/webapp/assets/common/images/emojis/arrow_heading_up.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
src/main/webapp/assets/common/images/emojis/arrow_left.png
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
src/main/webapp/assets/common/images/emojis/arrow_lower_left.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
BIN
src/main/webapp/assets/common/images/emojis/arrow_right.png
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
src/main/webapp/assets/common/images/emojis/arrow_right_hook.png
Normal file
|
After Width: | Height: | Size: 3.6 KiB |
BIN
src/main/webapp/assets/common/images/emojis/arrow_up.png
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
src/main/webapp/assets/common/images/emojis/arrow_up_down.png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
BIN
src/main/webapp/assets/common/images/emojis/arrow_up_small.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
src/main/webapp/assets/common/images/emojis/arrow_upper_left.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
BIN
src/main/webapp/assets/common/images/emojis/arrows_clockwise.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 4.7 KiB |
BIN
src/main/webapp/assets/common/images/emojis/art.png
Normal file
|
After Width: | Height: | Size: 6.6 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
BIN
src/main/webapp/assets/common/images/emojis/astonished.png
Normal file
|
After Width: | Height: | Size: 5.9 KiB |
BIN
src/main/webapp/assets/common/images/emojis/atm.png
Normal file
|
After Width: | Height: | Size: 4.0 KiB |
BIN
src/main/webapp/assets/common/images/emojis/b.png
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
src/main/webapp/assets/common/images/emojis/baby.png
Normal file
|
After Width: | Height: | Size: 5.8 KiB |
BIN
src/main/webapp/assets/common/images/emojis/baby_bottle.png
Normal file
|
After Width: | Height: | Size: 4.4 KiB |
BIN
src/main/webapp/assets/common/images/emojis/baby_chick.png
Normal file
|
After Width: | Height: | Size: 3.9 KiB |
BIN
src/main/webapp/assets/common/images/emojis/baby_symbol.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
src/main/webapp/assets/common/images/emojis/baggage_claim.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
src/main/webapp/assets/common/images/emojis/balloon.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
BIN
src/main/webapp/assets/common/images/emojis/bamboo.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
src/main/webapp/assets/common/images/emojis/banana.png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
src/main/webapp/assets/common/images/emojis/bangbang.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
src/main/webapp/assets/common/images/emojis/bank.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
src/main/webapp/assets/common/images/emojis/bar_chart.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
src/main/webapp/assets/common/images/emojis/barber.png
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
BIN
src/main/webapp/assets/common/images/emojis/baseball.png
Normal file
|
After Width: | Height: | Size: 5.9 KiB |
BIN
src/main/webapp/assets/common/images/emojis/basketball.png
Normal file
|
After Width: | Height: | Size: 6.2 KiB |
BIN
src/main/webapp/assets/common/images/emojis/bath.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
src/main/webapp/assets/common/images/emojis/bathtub.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
src/main/webapp/assets/common/images/emojis/battery.png
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
BIN
src/main/webapp/assets/common/images/emojis/bear.png
Normal file
|
After Width: | Height: | Size: 5.4 KiB |
BIN
src/main/webapp/assets/common/images/emojis/beer.png
Normal file
|
After Width: | Height: | Size: 6.0 KiB |
BIN
src/main/webapp/assets/common/images/emojis/beers.png
Normal file
|
After Width: | Height: | Size: 6.4 KiB |
BIN
src/main/webapp/assets/common/images/emojis/beetle.png
Normal file
|
After Width: | Height: | Size: 5.1 KiB |
BIN
src/main/webapp/assets/common/images/emojis/beginner.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
src/main/webapp/assets/common/images/emojis/bell.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
BIN
src/main/webapp/assets/common/images/emojis/bento.png
Normal file
|
After Width: | Height: | Size: 5.6 KiB |
BIN
src/main/webapp/assets/common/images/emojis/bicyclist.png
Normal file
|
After Width: | Height: | Size: 6.3 KiB |
BIN
src/main/webapp/assets/common/images/emojis/bike.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
src/main/webapp/assets/common/images/emojis/bikini.png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
src/main/webapp/assets/common/images/emojis/bird.png
Normal file
|
After Width: | Height: | Size: 4.8 KiB |
BIN
src/main/webapp/assets/common/images/emojis/birthday.png
Normal file
|
After Width: | Height: | Size: 5.3 KiB |
BIN
src/main/webapp/assets/common/images/emojis/black_circle.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
src/main/webapp/assets/common/images/emojis/black_joker.png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
src/main/webapp/assets/common/images/emojis/black_nib.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
src/main/webapp/assets/common/images/emojis/black_square.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
BIN
src/main/webapp/assets/common/images/emojis/blossom.png
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
BIN
src/main/webapp/assets/common/images/emojis/blowfish.png
Normal file
|
After Width: | Height: | Size: 3.6 KiB |
BIN
src/main/webapp/assets/common/images/emojis/blue_book.png
Normal file
|
After Width: | Height: | Size: 5.0 KiB |
BIN
src/main/webapp/assets/common/images/emojis/blue_car.png
Normal file
|
After Width: | Height: | Size: 4.0 KiB |
BIN
src/main/webapp/assets/common/images/emojis/blue_heart.png
Normal file
|
After Width: | Height: | Size: 4.0 KiB |
BIN
src/main/webapp/assets/common/images/emojis/blush.png
Normal file
|
After Width: | Height: | Size: 5.1 KiB |
BIN
src/main/webapp/assets/common/images/emojis/boar.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
BIN
src/main/webapp/assets/common/images/emojis/boat.png
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
BIN
src/main/webapp/assets/common/images/emojis/bomb.png
Normal file
|
After Width: | Height: | Size: 5.1 KiB |
BIN
src/main/webapp/assets/common/images/emojis/book.png
Normal file
|
After Width: | Height: | Size: 5.9 KiB |
BIN
src/main/webapp/assets/common/images/emojis/bookmark.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
src/main/webapp/assets/common/images/emojis/bookmark_tabs.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |