Awesome
GEmojiSharp :octocat:<!-- omit in toc -->
GitHub Emoji for C# and .NET:
netstandard2.0
- ASP.NET Core
- Blazor
dotnet
tool- PowerToys Run plugin
π :octopus:
β :heavy_plus_sign:
π :cat2:
β©΅
β€οΈ :heart:
Content<!-- omit in toc -->
- Introduction
GEmojiSharp
GEmojiSharp.AspNetCore
GEmojiSharp.Blazor
GEmojiSharp.DotnetTool
GEmojiSharp.PowerToysRun
- Samples
- Attribution
Introduction
Using emojis on GitHub is accomplish with emoji aliases enclosed by colons:
:+1: This PR looks great - it's ready to merge! :shipit:
:+1: This PR looks great - it's ready to merge! :shipit:
GEmojiSharp
make this possible in C#. The library contains a static array of all valid emoji in GitHub Flavored Markdown.
That is the intersection of the emoji.json database and the API with available emojis.
A visual referense of all GitHub Emoji:
GEmojiSharp
GitHub Emoji for C# and .NET π¦
Static methods:
Emoji.Get(":tada:").Raw; // π
Emoji.Get("π").Alias(); // :tada:
Emoji.Raw(":tada:"); // π
Emoji.Alias("π"); // :tada:
Emoji.Emojify(":tada: initial commit"); // π initial commit
Emoji.Demojify("π initial commit"); // :tada: initial commit
Emoji.Find("party popper").First().Raw; // π
Emoji.Get("βοΈ").RawSkinToneVariants(); // βπ», βπΌ, βπ½, βπΎ, βπΏ
Extension methods:
":tada:".GetEmoji().Raw; // π
"π".GetEmoji().Alias(); // :tada:
":tada:".RawEmoji(); // π
"π".EmojiAlias(); // :tada:
":tada: initial commit".Emojify(); // π initial commit
"π initial commit".Demojify(); // :tada: initial commit
"party popper".FindEmojis().First().Raw; // π
Regular expression pattern to match all emojis:
var text = "Lorem ππ ipsum";
var matches = Regex.Matches(text, Emoji.RegexPattern);
string.Join(string.Empty, matches.Select(x => x.Value)); // ππ
Regex.Replace(text, Emoji.RegexPattern, string.Empty); // Lorem ipsum
GEmojiSharp.AspNetCore
GitHub Emoji for ASP.NET Core π¦
The package includes:
- TagHelpers
- HtmlHelpers
TagHelpers
Update the _ViewImports.cshtml
file, to enable tag helpers in all Razor views:
@addTagHelper *, GEmojiSharp.AspNetCore
Use the <emoji>
tag or emoji
attribute to render emojis:
<span emoji=":tada:"></span>
<emoji>:tada: initial commit</emoji>
Standard emoji characters are rendered like this:
<g-emoji class="g-emoji" alias="tada" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f389.png">π</g-emoji>
Custom GitHub emojis are rendered as images:
<img class="emoji" title=":octocat:" alt=":octocat:" src="https://github.githubassets.com/images/icons/emoji/octocat.png" height="20" width="20" align="absmiddle">
Use CSS to properly position the custom GitHub emojis images:
.emoji {
background-color: transparent;
max-width: none;
vertical-align: text-top;
}
Use the JavaScript from g-emoji-element
to support old browsers.
Backports native emoji characters to browsers that don't support them by replacing the characters with fallback images.
Add a libman.json
file:
{
"version": "1.0",
"defaultProvider": "cdnjs",
"libraries": [
{
"provider": "unpkg",
"library": "@github/g-emoji-element@1.2.0",
"destination": "wwwroot/lib/g-emoji-element/"
}
]
}
And add the script to the _Layout.cshtml
file:
<script src="~/lib/g-emoji-element/dist/index.js"></script>
Do you want to use emoji anywhere, on any tag, in the body
? Then you can use the BodyTagHelperComponent
.
Use any tag to render emojis:
<h1>Hello, :earth_africa:</h1>
Registration via services container:
using GEmojiSharp.AspNetCore;
using Microsoft.AspNetCore.Razor.TagHelpers;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
builder.Services.AddTransient<ITagHelperComponent, BodyTagHelperComponent>();
Registration via Razor file:
@page
@model GEmojiSharp.Sample.Web.Pages.ComponentModel
@using Microsoft.AspNetCore.Mvc.Razor.TagHelpers
@using GEmojiSharp.AspNetCore
@inject ITagHelperComponentManager manager;
@{
ViewData["Title"] = "Component";
manager.Components.Add(new BodyTagHelperComponent());
}
Registration via Page Model or controller:
using GEmojiSharp.AspNetCore;
using Microsoft.AspNetCore.Mvc.Razor.TagHelpers;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace GEmojiSharp.Sample.Web.Pages
{
public class ComponentModel : PageModel
{
private readonly ITagHelperComponentManager _tagHelperComponentManager;
public IndexModel(ITagHelperComponentManager tagHelperComponentManager)
{
_tagHelperComponentManager = tagHelperComponentManager;
}
public void OnGet()
{
_tagHelperComponentManager.Components.Add(new BodyTagHelperComponent());
}
}
}
HtmlHelpers
Update the _ViewImports.cshtml
file, to enable HTML helpers in all Razor views:
@using GEmojiSharp.AspNetCore
Use the Emoji
extension methods to render emojis:
@Html.Emoji(":tada: initial commit")
@Html.Emoji(x => x.Text)
GEmojiSharp.Blazor
GitHub Emoji for Blazor π¦
The package is a Razor class library (RCL) with a Razor component.
Update the _Imports.razor
file, to enable the component in all Razor views:
@using GEmojiSharp.Blazor
[!NOTE] In a Blazor Web App (.NET 8 or later), the component requires an interactive render mode applied either globally to the app or to the component definition.
Set the global render mode in App.razor
:
<Routes @rendermode="InteractiveServer" />
or per page/component:
@rendermode InteractiveServer
Use the <Emoji>
component to render emojis:
<Emoji>:tada: initial commit</Emoji>
Standard emoji characters are rendered like this:
<g-emoji class="g-emoji" alias="tada" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f389.png">π</g-emoji>
Custom GitHub emojis are rendered as images:
<img class="emoji" title=":octocat:" alt=":octocat:" src="https://github.githubassets.com/images/icons/emoji/octocat.png" height="20" width="20" align="absmiddle">
GEmojiSharp.DotnetTool
GitHub Emoji
dotnet
tool π§°
Installation
Install:
dotnet tool install -g GEmojiSharp.DotnetTool
Update:
dotnet tool update -g GEmojiSharp.DotnetTool
Uninstall:
dotnet tool uninstall -g GEmojiSharp.DotnetTool
Enable emoji in the terminal:
- Open Settings / Time & Language / Language / Administrative Language Settings / Change system locale...
- Check "Beta: Use Unicode UTF-8 for worldwide language support" and click OK
- Reboot the PC for the change to take effect
Usage
emoji --help
Description:
GitHub Emoji dotnet tool
Usage:
emoji [command] [options]
Options:
--version Show version information
-?, -h, --help Show help and usage information
Commands:
r, raw <args> Get raw emojis
a, alias <args> Get emoji aliases
e, emojify <args> Replace aliases in text with raw emojis
d, demojify <args> Replace raw emojis in text with aliases
export <args> Export emoji data to <json|toml|xml|yaml>
Raw<!-- omit in toc -->
emoji raw --help
Description:
Get raw emojis
Usage:
emoji raw [<args>...] [options]
Arguments:
<args> Find emojis via description, category, alias or tag
Options:
-st, --skin-tones Include skin tone variants
-c, --copy Copy to clipboard
-?, -h, --help Show help and usage information
<details>
<summary>Examples π</summary>
Get raw emojis:
emoji raw "grinning cat"
emoji raw grinning cat
emoji r grinning cat
πΊ
πΈ
Copy to clipboard:
emoji raw "grinning cat" --copy
emoji r grinning cat -c
πΊπΈ
Skin tone variants:
emoji raw "victory" --skin-tones
emoji r victory -st
βοΈ
βπ»
βπΌ
βπ½
βπΎ
βπΏ
</details>
Alias<!-- omit in toc -->
emoji alias --help
Description:
Get emoji aliases
Usage:
emoji alias [<args>...] [options]
Arguments:
<args> Find emojis via description, category, alias or tag
Options:
-c, --copy Copy to clipboard
-?, -h, --help Show help and usage information
<details>
<summary>Examples π</summary>
Get emoji aliases:
emoji alias "grinning cat"
emoji alias grinning cat
emoji a grinning cat
:smiley_cat:
:smile_cat:
Copy to clipboard:
emoji alias "grinning cat" --copy
emoji a grinning cat -c
:smiley_cat::smile_cat:
</details>
Emojify<!-- omit in toc -->
emoji emojify --help
Description:
Replace aliases in text with raw emojis
Usage:
emoji emojify [<args>...] [options]
Arguments:
<args> A text with emoji aliases
Options:
-c, --copy Copy to clipboard
-?, -h, --help Show help and usage information
<details>
<summary>Examples π</summary>
Replace aliases in text with raw emojis:
emoji emojify ":tada: initial commit"
emoji emojify :tada: initial commit
emoji e :tada: initial commit
π initial commit
Copy to clipboard:
emoji emojify ":tada: initial commit" --copy
emoji e :tada: initial commit -c
</details>
Demojify<!-- omit in toc -->
emoji demojify --help
Description:
Replace raw emojis in text with aliases
Usage:
emoji demojify [<args>...] [options]
Arguments:
<args> A text with raw emojis
Options:
-c, --copy Copy to clipboard
-?, -h, --help Show help and usage information
<details>
<summary>Examples π</summary>
Replace raw emojis in text with aliases:
emoji demojify "π initial commit"
emoji demojify π initial commit
emoji d π initial commit
:tada: initial commit
Copy to clipboard:
emoji demojify "π initial commit" --copy
emoji d π initial commit -c
</details>
Export<!-- omit in toc -->
emoji export --help
Description:
Export emoji data to <json|toml|xml|yaml>
Usage:
emoji export [<args>...] [options]
Arguments:
<args> Find emojis via description, category, alias or tag
Options:
-f, --format <format> Format the data as <json|toml|xml|yaml>
-c, --copy Copy to clipboard
-?, -h, --help Show help and usage information
Formats:
json
toml
xml
yaml
Export emoji data to json
:
emoji export "grinning cat" --format json
emoji export grinning cat --format json
emoji export grinning cat -f json
emoji export grinning cat
[
{
"Raw": "πΊ",
"Description": "grinning cat",
"Category": "Smileys & Emotion",
"Aliases": [
"smiley_cat"
],
"Tags": null,
"UnicodeVersion": "6.0",
"IosVersion": "6.0",
"Filename": "1f63a",
"IsCustom": false
},
{
"Raw": "πΈ",
"Description": "grinning cat with smiling eyes",
"Category": "Smileys & Emotion",
"Aliases": [
"smile_cat"
],
"Tags": null,
"UnicodeVersion": "6.0",
"IosVersion": "6.0",
"Filename": "1f638",
"IsCustom": false
}
]
Copy to clipboard:
emoji export "grinning cat" --format json --copy
emoji export "grinning cat" -c
</details>
GEmojiSharp.PowerToysRun
GitHub Emoji PowerToys Run plugin ποΈππ
Installation
The plugin is developed and tested with PowerToys
v0.83.0
.
Install:
- Install PowerToys
- Exit PowerToys
- Download the
.zip
file from the latest release and extract it to:%LocalAppData%\Microsoft\PowerToys\PowerToys Run\Plugins
- Start PowerToys
Usage
- Open PowerToys Run with
alt + space
- Type
emoji
- A list of all emojis will be displayed
- Continue to type to find emojis via description, category, alias or tag
- Use β¬οΈ and β¬οΈ keys to select an emoji
- Press
Enter
to copy the selected raw emoji to clipboard - Press
ctrl + c
to copy the selected emoji aliases to clipboard - Press
ctrl + Enter
to copy the selected raw emoji skin tone variants to clipboard- For emoji that supports skin tone modifiers
Emojify:
- You can paste a text containing emoji aliases to replace them with raw emojis
Demojify:
- You can paste a text containing raw emojis to replace them with aliases
Configuration
Change action keyword:
- Open PowerToys
- Select PowerToys Run
- Scroll down to Plugins
- Expand
GEmojiSharp
- Change Direct activation command
Samples
The samples
folder contains...
GEmojiSharp.Sample.BlazorWeb
, a Blazor Web App (InteractiveServer render mode)GEmojiSharp.Sample.BlazorWebAssembly
, a Blazor WebAssembly AppGEmojiSharp.Sample.Web
, a ASP.NET Core Web App (Razor Pages)
The Blazor WebAssembly app is showcased here:
- https://hlaueriksson.github.io/GEmojiSharp/ (GitHub Pages)
- https://purple-mushroom-05c6bad10.azurestaticapps.net (Azure Static Web Apps)
Attribution
Repositories consulted when building this: