{"id":22343385,"url":"https://github.com/datajuggler/ultimatehelper","last_synced_at":"2025-07-17T07:06:36.157Z","repository":{"id":65413632,"uuid":"312523231","full_name":"DataJuggler/UltimateHelper","owner":"DataJuggler","description":"This is a collection of C# helper classes, and is used in almost all DataJuggler Nuget packages.","archived":false,"fork":false,"pushed_at":"2025-05-07T12:49:49.000Z","size":239,"stargazers_count":3,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-09T19:55:46.286Z","etag":null,"topics":[],"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/DataJuggler.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-11-13T08:57:08.000Z","updated_at":"2025-05-07T12:49:53.000Z","dependencies_parsed_at":"2023-12-14T17:26:27.394Z","dependency_job_id":"a5b876da-5917-487d-8740-eabf0e8b50f1","html_url":"https://github.com/DataJuggler/UltimateHelper","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/DataJuggler/UltimateHelper","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DataJuggler%2FUltimateHelper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DataJuggler%2FUltimateHelper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DataJuggler%2FUltimateHelper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DataJuggler%2FUltimateHelper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DataJuggler","download_url":"https://codeload.github.com/DataJuggler/UltimateHelper/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DataJuggler%2FUltimateHelper/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265575506,"owners_count":23790780,"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":[],"created_at":"2024-12-04T08:15:56.858Z","updated_at":"2025-07-17T07:06:36.151Z","avatar_url":"https://github.com/DataJuggler.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# UltimateHelper\nThis library is a collection of helper classes that make working with C# much easier.\n\nThis package was originally for .Net Framework, then ported to .Net Core, .NET, .NET6, .NET 7, \n.NET 8and now .NET9.\n\n# News\n\n7.11.2025: I added a new method FolderHelper.GetFolders()\n\n    // Gets the folders as a List\u003cstring\u003e\n    List\u003cstring\u003e folders = FolderHelper.GetFolders(path);\n\n2.23.2025: Added a new class called Morpheas\n\nThis class is used to determine if an object has changes.\n\n    // generate a hash\n    string hash = Morpheas.Serialize(obj);\n\n    // has this object changed\n    bool hasChanges = Morpheas.Compare(obj, hash)';\n\nI use to enable button for Save if an object has changes.\n\n2.17.2025: I added a new method to FolderHelper Exists\n\n    bool Exists(string path);\n\n1.22.2025: Added a new method to TextHelper\n\n\tFindTextInQuotes(string input)\n\n1.21.2025: Two new methods to TextHelper:\n\n    ReplaceTextInFile(string fileName, string textToFind, string replacementText)\n\n\tReplaceTextInFile(string fileName, List\u003cReplacement\u003e replacements\n\nA Replacement is just a class with two properties: SearchText and ReplacementValue\n\n11.12.2024: I updated the project to .NET 9.\n\n9.2.2024: I fixed a bug with GetTextLines in case the text just has \\r, instead of \\r\\n for new lines.\n\n8.14.2024: I changed NumericHelper.RoundDown and RoundUp to now take into account digits.\n\n1.16.2024: The description was wrong for this project. I had forgot to change the description to, This project has been updated to .NET 8.\n\n12.14.2023: I added a new method CloneLines to TextHelper. This method create a new List of TextLine objects,\nand copies the text from the source parameter. This is used by DataJuggler.RandomUSD. \n\n11.20.2023: Added a new method to TextHelper - ExportWords.\nI also added a new property Index to Word and TextLine objects, and set the value for Index\nwhen GetWords and GetTextLines is called.\n\n11.14.2023: This project has been updated to .NET 8.\n\n8.29.2023: I added a new method to NumericHelper - DivideDoublesAsDecimals.\n.NET does not handle division by doubles very well, so this method casts the doubles given\nto decimals, and returns the quotient as a double.\n\n8.14.2023 New Video\n\nCreate a Stock Predictor With C# and ML.NET Part I\nhttps://youtu.be/hF8LkvwOXQY\n\n8.13.2023 - Added a new method to TextHelper - GetTextLinesFromFile. I also modified the method\nGetTextLines, to have an option to parse the words foreach line. The new method GetTextLinesFromFile\nreads the text from the file, and then calls GetTextLines with optional parameters to also get the words\nand pass in your own delimiter. I also added an icon (png) for the project.\n\n8.11.2023 - Added a new method to DateHelper - ParseEightDigitDate.\n\n# Working Examples - Opensource Projects Using This Project\n\n# Blazor Gallery\nBlazor Gallery is a complete C# / SQL Server image portfolio site\n\nLive Site\nhttps://blazorgallery.com\n\nCode:\nhttps://github.com/DataJuggler/BlazorGallery\n\nVideo:\n\nIs There 1 Brave C# Programmer In The World? \nhttps://youtu.be/HAMgeaCuvHY\n\n8.11.2023: Blazor Gallery has not received a star yet.\n\n# Blazor Excelerate\n\nCode Generate C# Classes From Excel Header Rows\n\nLive Site\nhttps://excelerate.datajuggler.com\n\nCode:\nhttps://github.com/DataJuggler/Blazor.Excelerate\n\nBlazor Excelerate uses Nuget package DataJuggler.Excelerate, which allows you to load and \nsave entire worksheets and workbooks with a few lines of code. \n\nList of classes:\n\n# BooleanHelper\nParses booleans and allows you set to a default value.\n\n# CodeHelper\nUsed in formatting code. An example of this is in the live site https://codopy.com,\nwhich is an opensource project here: https://github.com/DataJuggler/Codopy\nFormat C# Code From Visual Studio when pasting to Git Hub read me files, or the social media.\n\n# CodeLine\n\nA code line is a line of C# code. This class is used in conjunction with TextLine.cs and CodeHelper.cs\n\n# ConfigurationHelper\n\nThis class reads app settings from an app.config or web.config. This was created for .NET Framework, but still works.\n\n# DateHelper\n\nThis class has methods to help parse dates safely.\n\n# EnumHelper\n\nThis class make it easier to parse and iterate enumerations.\n\n# EnvironmentVariableHelper\n\nThis class makes it simple to get and set values for System, User or Process Environment Variables.\n\n# FileHelper\n\nThis class has many method that help with dealing with files, such as get all files recursively\nfrom a folder, create a file name with a partial guid to ensure uniqueness in a folder and more.\n\n# ListHelper\n\nThis class is a must for anyone who deals with Lists or List\u003cT\u003e. \nMy two favorite methods are HasOneOrMoreItems and HasXOrMoreItems.\n\n# NullHelper\n\nCheck if multiple objects at once with NullHelper.Exists(object1, object2, object3, object4, object5);\n\n# NumericHelper\n\nThis class started as a way to parse int's, double's and decimal's, however it has evolved since\nand has many helpful methods such as EnsureInRange and IsInRange and more.\n\n# TextHelper\n\nThis is one of my favorite classes. TextHelper.Exists(string1, string2, string3, string4) is much \neasier to write than if ((!String.IsNullOrEmpty(string1)) \u0026\u0026 ((!String.IsNullOrEmpty(string2)) \u0026\u0026\n(!String.IsNullOrEmpty(string3)) \u0026\u0026 (!String.IsNullOrEmpty(string4))). Also there are methods\nsuch as CapitalizeFirstChar, GetTextLines, GetWords, StartsWithVowel, and more.\n\n# XmlPatternHelper\n\nThis class is used to encode and decode xml text if the\nfile contains ampersands (\u0026) or greater than or less than signs.\n\nThis class is used by Regionizer and Regionizer2022 Visual Studio Extensions, where the\ncustom comment dictionary has to be able to save \u003c \u003e and \u0026's in Xml.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatajuggler%2Fultimatehelper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdatajuggler%2Fultimatehelper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatajuggler%2Fultimatehelper/lists"}