:octocat: GitHub Emoji for C#, ASP.NET Core and Blazor, dotnet tool for the terminal and PowerToys Run plugin
GitHub Emoji for C# and .NET:
netstandard2.0
- ASP.NET Core
- Blazor
dotnet
tool- PowerToys Run plugin
π :octopus:
β :heavy_plus_sign:
π :cat2:
β©΅
β€οΈ :heart:
GEmojiSharp
GEmojiSharp.AspNetCore
GEmojiSharp.Blazor
GEmojiSharp.DotnetTool
GEmojiSharp.PowerToysRun
Using emoji 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:
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/[email protected]",
"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());
}
}
}
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
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 π§°
Install:
dotnet tool install -g GEmojiSharp.DotnetTool
Update:
dotnet tool update -g GEmojiSharp.DotnetTool
Uninstall:
dotnet tool uninstall -g GEmojiSharp.DotnetTool
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>
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
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
βοΈ
βπ»
βπΌ
βπ½
βπΎ
βπΏ
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
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:
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
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
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
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
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
GEmojiSharp.PowerToysRun
GitHub Emoji PowerToys Run plugin ποΈππ
The plugin is developed and tested with PowerToys
v0.77.0
.
Install:
%LocalAppData%\Microsoft\PowerToys\PowerToys Run\Plugins
alt + space
emoji
Enter
to copy the selected raw emoji to clipboardctrl + c
to copy the selected emoji aliases to clipboardctrl + Enter
to copy the selected raw emoji skin tone variants to clipboard
Emojify:
Demojify:
Change action keyword:
GEmojiSharp
The samples
folder contains...
GEmojiSharp.Sample.BlazorServer
, a Blazor Server appGEmojiSharp.Sample.BlazorWebAssembly
, a Blazor WebAssembly appGEmojiSharp.Sample.Web
, a ASP.NET Core web siteThe Blazor WebAssembly app is showcased here:
β¬οΈ Upgrading from version
1.5.0
to2.0.0
Upgrade GEmojiSharp.TagHelpers
:
Uninstall GEmojiSharp.TagHelpers
Install GEmojiSharp.AspNetCore
Replace references to with GEmojiSharp.TagHelpers
GEmojiSharp.AspNetCore
:
- @addTagHelper *, GEmojiSharp.TagHelpers
+ @addTagHelper *, GEmojiSharp.AspNetCore
- @using GEmojiSharp.TagHelpers
+ @using GEmojiSharp.AspNetCore
- using GEmojiSharp.TagHelpers;
+ using GEmojiSharp.AspNetCore;
Upgrade GEmojiSharp.Blazor
:
Remove reference to the css
file:
- <link href="_content/GEmojiSharp.Blazor/style.css" rel="stylesheet" />
Remove reference to the js
file:
- <script src="_content/GEmojiSharp.Blazor/script.js"></script>
Repositories consulted when building this: