Module:Emoji implements two functions:
1f603
).smiley
).It stores the mapping from name to code in Module:Emoji/data, which internally generates the reverse lookup table from code to name.
{{#invoke:Emoji | emocode | wink}}
→ 1f609
{{#invoke:Emoji | emocode | grin}}
→ 1f601
{{#invoke:Emoji | emocode | 8ball}}
→ 1f3b1
{{#invoke:Emoji | emocode }}
→ 1f603
{{#invoke:Emoji | emoname | 1f62b}}
→ tired_face
{{#invoke:Emoji | emoname }}
→ smiley
require ('strict');
local data = mw.loadData ('Module:Emoji/data');
--[[--------------------------< E M O C O D E >----------------------------------------------------------------
return the hexadecimal code associated with an emoji's name
{{#invoke:Emoji|emocode|smiley}} → 1f603
When the specified name does not exist in the data table, returns the unrecognized name
If a name is not provided, returns 'smiley' (1f603)
TODO: return error messages; don't camouflage the erroneous or missing input
]]
local function emocode (frame)
local emoji_name = mw.text.trim(frame.args[1] or "") -- make sure empty and missing parameters both become the empty string
emoji_name = emoji_name:lower(); -- down case because names in table are all lowercase
emoji_name = emoji_name:gsub ('%s+', '_'); -- replace whitespace with underscore
if '' == emoji_name then emoji_name = 'smiley' end -- use default value of 'smiley' if parameter is empty or missing
return data.emoji_hex_from_name_t[emoji_name] or emoji_name
end
--[[--------------------------< E M O N A M E >----------------------------------------------------------------
return the emoji's name associated with a particular hexadecimal code
{{#invoke:Emoji|emoname|1f603}} → smiley
When the specified hexadecimal code does not exist in the data table, returns the unrecognized code
If a hexadecimal code is not provided, returns '1f603' (smiley)
TODO: return error messages; don't camouflage the erroneous or missing input
]]
local function emoname (frame)
local emoji_code = mw.text.trim(frame.args[1] or "") -- make sure empty and missing parameters both become the empty string
emoji_code = emoji_code:lower(); -- down case because codes in table are all lowercase
if '' == emoji_code then emoji_code = '1f603' end -- use default value of '1f603' if parameter is empty or missing
return data.emoji_name_from_hex_t[emoji_code] or emoji_code
end
--[[--------------------------< E X P O R T S >----------------------------------------------------------------
]]
return {
emocode = emocode,
emoname = emoname,
}