Write Piet once, call it as a C# method.
using Esolang.Piet;
Console.WriteLine(PietSample.RunToString());
partial class PietSample
{
[GeneratePietMethod("hello-world.png")]
public static partial string? RunToString();
}
// output:
// Hello, world!Add the source image in your project file:
<ItemGroup>
<PietImage Include="samples\hello-world.png" PietLogicalPath="hello-world.png" />
</ItemGroup>For detailed Generator signatures and patterns (string, TextReader, PipeReader, TextWriter, PipeWriter, sync/async returns, byte-sequence returns), see:
For runnable examples including TextReader/PipeReader input, TextWriter/PipeWriter output, and multiple return patterns, see:
dotnet add package Esolang.Piet.Generator
dotnet add package Esolang.Piet.Parser
dotnet add package Esolang.Piet.Processor
dotnet tool install -g dotnet-piet| Want to do | Package |
|---|---|
| Generate C# methods from Piet at compile time | Esolang.Piet.Generator |
| Parse image source into normalized codels | Esolang.Piet.Parser |
| Execute Piet in-process | Esolang.Piet.Processor |
| Run Piet from CLI | dotnet-piet |
| Project | NuGet | Summary |
|---|---|---|
| dotnet-piet | piet command line utility dotnet-piet command. | |
| Esolang.Piet.Generator | piet method generator. | |
| Esolang.Piet.Parser | piet image parser. | |
| Esolang.Piet.Processor | piet processor. |
| Project | Target frameworks |
|---|---|
| Esolang.Piet.Generator | netstandard2.0 |
| Esolang.Piet.Parser | net8.0, net9.0, net10.0, netstandard2.0, netstandard2.1 |
| Esolang.Piet.Processor | net8.0, net9.0, net10.0 |
| dotnet-piet | net8.0, net9.0, net10.0 |
- Piet language reference: https://www.dangermouse.net/esoteric/piet.html
Note: GIF (.gif) is also supported.