MorseSharp 4.1.2
dotnet add package MorseSharp --version 4.1.2
NuGet\Install-Package MorseSharp -Version 4.1.2
<PackageReference Include="MorseSharp" Version="4.1.2" />
paket add MorseSharp --version 4.1.2
#r "nuget: MorseSharp, 4.1.2"
// Install MorseSharp as a Cake Addin #addin nuget:?package=MorseSharp&version=4.1.2 // Install MorseSharp as a Cake Tool #tool nuget:?package=MorseSharp&version=4.1.2
MorseSharp
MorseSharp is a fast .NET library to encoding/decoding up to 10 languages including kurdish and generating audio , blinking lights for morse dash and dots.
Supported Languages
Language | Enum Value |
---|---|
English | Language.English |
Kurdish | Language.Kurdish |
Kurdish Latin | Language.KurdishLatin |
Arabic | Language.Arabic |
Deutsch | Language.Deutsch |
Espanol | Language.Espanol |
Francais | Language.Francais |
Italiano | Language.Italiano |
Japanese | Language.Japanese |
Portugues | Language.Portugues |
Russian | Language.Russian |
NOTE: All language sources are obtained from MorseCoder, except for Kurdish, Kurdish Latin More info and Russian obtained from this wiki. If you encounter any issues with the obtained characters or have suggestions for improvement, please feel free to open an issue in this repository.
Installation
Use nuget package manager to install MorseSharp.
Install-Package MorseSharp
Usage
Effortlessly decode/encode Morse code, generate audio, and control blinking lights using the fluent Morse
class. Begin by obtaining a singleton instance through the GetConverter()
method and specifying your desired language using the ForLanguage
method and pass the Language
enum to it.
using MorseSharp;
var conv = Morse.GetConverter()
.ForLanguage(Language.English);
Text
Once you've set the language via the ForLanguage
method, you can decode/encode Morse code with a series of method calls.
Encoding
Utilize the ToMorse
method to encode your text into Morse code, and then call the Encode
method to obtain the Morse code as a string:
using MorseSharp;
var morse = Morse.GetConverter()
.ForLanguage(Language.English)
.ToMorse("Hi")
.Encode();
⚠️ WordNotPresentedException will be throw when a character in the input text does not have a corresponding Morse code representation.
Decoding
to decode Morse code using the Decode
method:
❗
Words must be separated by ( / ), Letters by space " ".
using MorseSharp;
var text = Morse.GetConverter()
.ForLanguage(Language.English)
.Decode(".... ..");
⚠️ SequenceNotFoundException when an invalid Morse code sequence is encountered, and the corresponding character cannot be found.
Audio
You have two options to generate audio:
By Encoding The Text
Encode your text using ToMorse
, and then proceed through the chain to generate audio for the encoded text. After encoding the text, use the ToAudio
method, set the audio options with SetAudioOptions
, and finally, retrieve audio bytes using GetBytes
:
using MorseSharp;
Morse.GetConverter()
.ForLanguage(Language.English)
.ToMorse("Hello Morse")
.ToAudio()
.SetAudioOptions(25, 25, 600)
.GetBytes(out Span<byte> morse);
Manually
If you already have the encoded text as a string, skip the encoding step and pass the encoded text directly to the overloaded ToAudio
method:
using MorseSharp;
Morse.GetConverter()
.ForLanguage(Language.English)
.ToAudio(".... ..")
.SetAudioOptions (25, 25, 600)
.GetBytes(out Span<byte> morse);
⚠️ The character speed must be greater than or equal to the word speed; otherwise, a SmallerCharSpeedException will be thrown.
Light
The class can also be able to blink lights to a specific morse. Just like the audio you have to options to blink lights either by Encoding it first or by set the dash and dots directly to the method and skip the encoding part:
using MorseSharp;
//By Encoding it then blink the lights.
await Morse.GetConverter()
.ForLanguage(Language.Kurdish)
.ToMorse("سڵاو")
.ToLight()
.SetBlinkerOptions(25, 25)
.DoBlinks((hasToBlink) => {
//Do something
});
//By directly pass the morse to method.
await Morse.GetConverter()
.ForLanguage(Language.English)
.ToLight(".... ..")
.SetBlinkerOptions(25, 25)
.DoBlinks((hasToBlink) =>
{
if (hasToBlink)
Console.BackgroundColor = ConsoleColor.White;
else
Console.BackgroundColor = ConsoleColor.Black;
});
You need to set the character speed and word speed using SetBlinkerOptions
, then invoke async DoBlinks
and subscribe to the Action<bool> parameter
.
Example
This piece of code encode and decode's the morse and then show it to the console, also blinks the console background based on the light blink:
using MorseSharp;
try
{
//Encoding
var morse = Morse.GetConverter()
.ForLanguage(Language.English)
.ToMorse("Hi")
.Encode();
//Decoding
var text = Morse.GetConverter()
.ForLanguage(Language.English)
.Decode(".... ..");
//Light Blinking
await Morse.GetConverter()
.ForLanguage(Language.English)
.ToLight(".... ..")
.SetBlinkerOptions(25, 25)
.DoBlinks((hasToBlink) =>
{
if (hasToBlink)
Console.BackgroundColor = ConsoleColor.White;
else
Console.BackgroundColor = ConsoleColor.Black;
});
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
License
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net9.0 is compatible. |
-
net9.0
- CommunityToolkit.HighPerformance (>= 8.3.2)
- ListPool (>= 2.3.6)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated | |
---|---|---|---|
4.1.2 | 100 | 11/13/2024 | |
4.1.1 | 188 | 8/13/2024 | |
4.1.0 | 170 | 2/17/2024 | |
4.0.1 | 173 | 2/9/2024 | |
4.0.0 | 250 | 11/20/2023 | |
3.2.0 | 162 | 10/3/2023 | |
3.1.1 | 150 | 9/24/2023 | |
3.1.0 | 153 | 9/23/2023 | |
3.0.0 | 332 | 1/26/2023 | |
2.0.2 | 423 | 10/13/2022 | |
2.0.0 | 423 | 10/11/2022 | |
1.3.1 | 435 | 10/8/2022 | |
1.3.0 | 393 | 10/6/2022 | |
1.2.2 | 400 | 10/4/2022 | |
1.2.0 | 534 | 9/29/2022 | |
1.0.1 | 406 | 9/29/2022 | |
1.0.0 | 419 | 9/27/2022 |