{"id":18332053,"url":"https://github.com/mrousavy/fiddle","last_synced_at":"2025-04-06T03:33:33.291Z","repository":{"id":37979617,"uuid":"97102478","full_name":"mrousavy/Fiddle","owner":"mrousavy","description":"📜 A lightweight code editor for editing, compiling and running code snippets/scripts supporting multiple languages and rich GUI","archived":false,"fork":false,"pushed_at":"2022-12-07T19:50:48.000Z","size":1109,"stargazers_count":31,"open_issues_count":9,"forks_count":13,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-21T16:21:22.188Z","etag":null,"topics":["csharp","dotnet","editor","fiddle","ide","java","lua","python","script","scripts","vb"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mrousavy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":"mrousavy","ko_fi":"mrousavy","custom":["https://paypal.me/mrousavy"]}},"created_at":"2017-07-13T09:02:31.000Z","updated_at":"2025-01-24T03:38:23.000Z","dependencies_parsed_at":"2023-01-24T22:00:16.922Z","dependency_job_id":null,"html_url":"https://github.com/mrousavy/Fiddle","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrousavy%2FFiddle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrousavy%2FFiddle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrousavy%2FFiddle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrousavy%2FFiddle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mrousavy","download_url":"https://codeload.github.com/mrousavy/Fiddle/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247430838,"owners_count":20937873,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","dotnet","editor","fiddle","ide","java","lua","python","script","scripts","vb"],"created_at":"2024-11-05T19:37:06.456Z","updated_at":"2025-04-06T03:33:31.759Z","avatar_url":"https://github.com/mrousavy.png","language":"C","readme":"\u003cp align=\"center\"\u003e\n\t\u003ch1 align=\"center\"\u003e\n\t\t\u003cimg src=\"Images/icon.png\" align=\"center\" width=80\u003e\n\t\t\u003cbr/\u003e\n\t\tFiddle\n\t\u003c/h1\u003e\n\t\u003cp align=\"center\"\u003e\n\t\tFiddle is a lightweight tool to \u003cstrong\u003eedit\u003c/strong\u003e, \u003cstrong\u003ecompile\u003c/strong\u003e and \u003cstrong\u003erun\u003c/strong\u003e simple \u003cstrong\u003escripts\u003c/strong\u003e/\u003cstrong\u003esnippets\u003c/strong\u003e in any of the \u003ca href=\"#languages\"\u003esupported languages\u003c/a\u003e.\n\t\t\u003cbr/\u003e\n\t\t⚠️ Fiddle requires .NET Framework v4.8 or above (\u003ca href=\"https://www.microsoft.com/net/download/framework\"\u003edownload\u003c/a\u003e) ⚠️\n\t\u003c/p\u003e\n\t\u003cp align=\"center\"\u003e\n\t\t\u003ca href=\"https://ci.appveyor.com/project/mrousavy/fiddle\"\u003e\u003cimg src=\"https://ci.appveyor.com/api/projects/status/1g0s56o0v1hdlqxu?svg=true\" alt=\"AppVeyor Build\"/\u003e\u003c/a\u003e\n\t\t\u003ca href=\"https://github.com/mrousavy/Fiddle/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/badge/download-fiddle-green.svg\" alt=\"Download\"/\u003e\u003c/a\u003e\n\t\t\u003ca href=\"https://github.com/mrousavy/Fiddle/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/downloads/mrousavy/Fiddle/total.svg\" alt=\"Total downloads\"/\u003e\u003c/a\u003e\n\t\u003c/p\u003e\n\u003c/p\u003e\n\n## Languages\n- [ ] [**C++**](https://github.com/mrousavy/Fiddle/blob/master/Doc/Cpp.md) \t_(TODO: everything)_\n- [x] [**C#**](https://github.com/mrousavy/Fiddle/blob/master/Doc/CSharp.md)\n- [x] [**Java**](https://github.com/mrousavy/Fiddle/blob/master/Doc/Java.md) \t_(TODO: Return values)_\n- [x] [**LUA**](https://github.com/mrousavy/Fiddle/blob/master/Doc/Lua.md)\n- [x] [**Python**](https://github.com/mrousavy/Fiddle/blob/master/Doc/Python.md)\n- [x] [**VB**](https://github.com/mrousavy/Fiddle/blob/master/Doc/Vb.md) \t_(TODO: Better Entry point)_\n\n[ToDo's](https://github.com/mrousavy/Fiddle/projects)\n\n\u003ca href='https://ko-fi.com/F1F8CLXG' target='_blank'\u003e\u003cimg height='36' style='border:0px;height:36px;' src='https://az743702.vo.msecnd.net/cdn/kofi2.png?v=0' border='0' alt='Buy Me a Coffee at ko-fi.com' /\u003e\u003c/a\u003e\n\n## Screenshots\n\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"https://github.com/mrousavy/Fiddle/raw/master/Images/Fiddle_slideshow.gif\" alt=\"Fiddle Demo Slideshow\"/\u003e\n\t\u003ca href=\"https://github.com/mrousavy/Fiddle/tree/master/Images\"\u003e(See all screenshots)\u003c/a\u003e\n\u003c/p\u003e\n\n## Why?\nThe purpose of **Fiddle** is to simplify the Task of **quickly creating small code snippets**, like file-rename-scripts.\n\n**Instead of:**\nOpen Visual Studio **-\u003e** _(wait)_ **-\u003e** File **-\u003e** New **-\u003e** New Project **-\u003e** .NET **-\u003e** Console App **-\u003e** _(enter name)_ **-\u003e** Create **-\u003e** _(wait)_ **-\u003e** Open `Program.cs` **-\u003e** Write code **-\u003e** Build **-\u003e** (wait) **-\u003e** Start\n\n**Do:**\nOpen Fiddle **-\u003e** Write code **-\u003e** Start\n\n## Features\nThese features apply to [all imported languages](#languages)\n\n* **Rich UI** thanks to the [Material Design in XAML](http://materialdesigninxaml.net/) library\n* **Editing code with custom syntax highlighting**\n* **Compiling code with result view** including diagnostic messages, error messages and even line markers\n* **Executing/Evaluating code/scripts** and viewing results (+ **expanding arrays/collections**)\n* **Customizing settings** and **resuming last session** (window position, location, code, etc)\n* **Saving code** to file\n* **Loading code** from file (via drag and drop)\n* **Seamlessly switching** between languages\n\n## Cache\nA directory will be created at `%appdata%\\Fiddle` containing `Preferences.json` (crash reports will be stored as \"`error.txt`\").\n\n`Preferences.json` can be edited with the Settings window in Fiddle or by manually changing it via any text editor.\nHowever, the settings window cannot modify the `imports[]`, `DefaultCode` and window dimensions/cursor position properties, this is not fully implemented. For now you can use `Preferences.json` to manually edit these.\n\n## Build from Source\n+ **Visual Studio**\n    1. Open `Fiddle.sln`\n    2. Set build target (**Debug**: development, **Release**: portable releases, **Publish**: InnoSetup installer)\n    3. Build Solution/Fiddle.UI (\u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003eShift\u003c/kbd\u003e + \u003ckbd\u003eB\u003c/kbd\u003e)\n\n+ **Command Line**\n    1. Run `nuget restore` command in `Fiddle` directory (Requires [NuGet installed](https://www.nuget.org/downloads) and [configured in Environment variables](https://stackoverflow.com/a/21067553))\n    2. Run `msbuild Fiddle.sln /t:Build /p:Configuration=Release` or `msbuild Fiddle.sln /t:Build /p:Configuration=Publish` for InnoSetup installer (Requires [MsBuild installed](https://www.microsoft.com/en-us/download/details.aspx?id=48159) and [configured in Environment variables](https://stackoverflow.com/a/12608705))\n\n## Contributing\n1. Fork **Fiddle** and **clone the fork**.\n2. Make changes\n\t* Make **bugfixes** or **other changes**\n\n\t   **.. or ..**\n\t* Add a **new Compiler**\n\t\t1. Create new **classes** in `Fiddle.Compilers\\Implementation\\[LanguageName]\\`:\n\t\t\t* `..\\[LanguageName]Compiler.cs` : `ICompiler`\n\t\t\t* `..\\[LanguageName]CompileResult.cs` : `ICompileResult`\n\t\t\t* `..\\[LanguageName]Diagnostic.cs` : `IDiagnostic`\n\t\t\t* `..\\[LanguageName]ExecuteResult.cs` : `IExecuteResult`\n\t\t2. **Implement Interface** functions and Constructor(s) _(Example: `CSharp\\CSharpCompiler.cs`)_\n\t\t3. Add **Language Name** (filename-friendly) to `Fiddle.Compilers\\Host.Language` enum with user-friendly `[Description(\"..\")]` Attribute\n\t\t4. (Optionally) Add Language to **file-extension** converter functions in `Fiddle.UI\\Helper.cs` (`Fiddle.UI\\Helper.GetFilterForLanguage(..)`, ..)\n\t\t5. (Optionally) Add **Syntax highlighting definition** to `Fiddle.UI\\Syntax\\[LanguageName].xshd`\n\t\t6. (Optionally) Add **Documentation** (using [this template](https://github.com/mrousavy/Fiddle/blob/master/Doc/Template.md), or [this example](https://github.com/mrousavy/Fiddle/blob/master/Doc/CSharp.md)) to `Doc\\[LanguageName].md` and linking it in `Doc\\README.md`\n3. **Commit \u0026 Push**\n4. Create a new **pull request** _(on your fork)_\n","funding_links":["https://github.com/sponsors/mrousavy","https://ko-fi.com/mrousavy","https://paypal.me/mrousavy","https://ko-fi.com/F1F8CLXG'"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrousavy%2Ffiddle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrousavy%2Ffiddle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrousavy%2Ffiddle/lists"}