{"id":43109106,"url":"https://github.com/lk-code/htmlc","last_synced_at":"2026-01-31T18:18:08.026Z","repository":{"id":65390365,"uuid":"525073974","full_name":"lk-code/htmlc","owner":"lk-code","description":"This is the HTML Compiler Tool for your cli","archived":false,"fork":false,"pushed_at":"2023-12-12T20:51:25.000Z","size":5637,"stargazers_count":2,"open_issues_count":19,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-14T08:08:38.828Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://lk-code.github.io/htmlc/","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/lk-code.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,"governance":null,"roadmap":null,"authors":null},"funding":{"github":"lk-code","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2022-08-15T17:16:47.000Z","updated_at":"2023-12-03T00:18:29.000Z","dependencies_parsed_at":"2023-12-12T21:45:30.435Z","dependency_job_id":null,"html_url":"https://github.com/lk-code/htmlc","commit_stats":{"total_commits":121,"total_committers":1,"mean_commits":121.0,"dds":0.0,"last_synced_commit":"737dcbe4a5fc20d94a5f4055c78c7ce757b8ed29"},"previous_names":["lk-code/htmlc","lk-code/html-compiler-tool"],"tags_count":32,"template":false,"template_full_name":null,"purl":"pkg:github/lk-code/htmlc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lk-code%2Fhtmlc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lk-code%2Fhtmlc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lk-code%2Fhtmlc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lk-code%2Fhtmlc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lk-code","download_url":"https://codeload.github.com/lk-code/htmlc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lk-code%2Fhtmlc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28949281,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-31T14:26:55.697Z","status":"ssl_error","status_checked_at":"2026-01-31T14:26:52.545Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":"2026-01-31T18:18:07.245Z","updated_at":"2026-01-31T18:18:08.018Z","avatar_url":"https://github.com/lk-code.png","language":"C#","funding_links":["https://github.com/sponsors/lk-code","https://www.buymeacoffee.com/lk.code"],"categories":[],"sub_categories":[],"readme":"# htmlc - HTML Compiler\n\n![html-compiler-tool](https://raw.githubusercontent.com/lk-code/html-compiler-tool/main/icon_128.png)\n\n[![.NET Version](https://img.shields.io/badge/dotnet%20version-net6.0-blue?style=flat-square)](https://www.nuget.org/packages/htmlc/)\n[![License](https://img.shields.io/github/license/lk-code/html-compiler-tool.svg?style=flat-square)](https://github.com/lk-code/html-compiler-tool/blob/master/LICENSE)\n[![Downloads](https://img.shields.io/nuget/dt/htmlc.svg?style=flat-square)](https://www.nuget.org/packages/htmlc/)\n[![NuGet](https://img.shields.io/nuget/v/htmlc.svg?style=flat-square)](https://www.nuget.org/packages/htmlc/)\n\n[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=lk-code_html-compiler-tool\u0026metric=ncloc)](https://sonarcloud.io/summary/new_code?id=lk-code_html-compiler-tool)\n[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=lk-code_html-compiler-tool\u0026metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=lk-code_html-compiler-tool)\n[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=lk-code_html-compiler-tool\u0026metric=coverage)](https://sonarcloud.io/summary/new_code?id=lk-code_html-compiler-tool)\n\n[![buy me a coffe](https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png)](https://www.buymeacoffee.com/lk.code)\n\nThis is the HTML Compiler Tool for your cli. htmlc is a small tool with which very easily static HTML files from various\nHTML components, including layout files and reusable HTML blocks (such as header, footer, etc.) from separate HTML\nfiles. The result is written to a complete and finished HTML file. Sass/SCSS compilation is also supported (the path to\ngenerated CSS file is then written into the HTML file). In the end you don't have to touch the generated html files.\n\n## content\n\n- [content](#content)\n- [installation and update](#installation-and-update)\n    - [update htmlc](#update-htmlc)\n- [usage](#usage)\n- [commands](#commands)\n    - [new-command](#new-command)\n        - [options](#options)\n    - [compile-command](#compile-command)\n    - [watch-command](#watch-command)\n    - [environment-commands](#environment-commands)\n        - [check-command](#check-command)\n        - [setup-command](#setup-command)\n    - [template-commands](#template-commands)\n        - [create-command](#create-command)\n- [html files](#html-files)\n    - [different html types](#different-html-types)\n        - [entry html](#entry-html)\n        - [layout](#layout)\n        - [reusable components](#reusable-components)\n    - [supported tags and its functionality](#supported-tags-and-its-functionality)\n        - [The @PageTitle-Tag](#the-pagetitle-tag)\n        - [The @Layout-Tag](#the-layout-tag)\n        - [The @Body-Tag](#the-body-tag)\n        - [The @File-Tag](#the-file-tag)\n        - [The @MarkdownFile-Tag](#the-markdown-file-tag)\n        - [The @StylePath-Tag](#the-stylepath-tag)\n        - [The @Comment-Tag](#the-comment-tag)\n        - [The @Global-Tag](#the-global-tag)\n        - [The @StartHtmlSpecialChars and @EndHtmlSpecialChars-Tag](#the-starthtmlspecialchars-and-endhtmlspecialchars-tag)\n        - [The @Var-Tag](#the-var-tag)\n        - [The @VarFile-Tag](#the-varfile-tag)\n        - [The @BuildDate-Tag](#the-builddate-tag)\n        - [The @ImageString-Tag](#the-imagestring-tag)\n\n## installation and update\n\n1. install the .NET Runtime\n   you need to install the .NET Runtime (its free and available for macos, linux and windows)\n\n* [macOS](https://learn.microsoft.com/en-us/dotnet/core/install/macos)\n* [Windows](https://learn.microsoft.com/en-us/dotnet/core/install/windows)\n* [Linux](https://learn.microsoft.com/en-us/dotnet/core/install/linux)\n\n2. install the tool\n   then you can install the html-tool very simple via this command:\n\n```\ndotnet tool install --global htmlc\n```\n\n### update htmlc\n\n```\ndotnet tool update --global htmlc\n```\n\n## usage\n\nThe compile process searches in the folder for all HTML files. All files that do NOT start with an underscore are\ncompiled. Files with an underscore (for example _layout.html or _footer.html) are used as reusable components.\n\n## commands\n\n### new-command\n\nThe new command creates a new project at the current folder location. The project contains the following elements:\n\n- **.gitignore** - the git ignore file\n- **/src** - the source directory for your files\n    - **/src/index.html** - the html index file\n    - **/src/shared** - the directory for alle shared components (like layout, etc.)\n        - **/src/shared/_layout.html** - the layout file for all html files\n- **/dist** - the output directory\n\n#### options\n\nyou can use the following options with the new command:\n\n`-d --docker` - creates a simple Dockerfile with nginx configuration.\n\n**example:** `htmlc new -d`\n\n`-t --template` - creates a project based on the given template name. If several templates matching the search filter\nare found, a url can be specified (which must be available in one of the template repositories!)\n\n**example:** `htmlc new -t Demo`\n\n`-v --vscode` - add configuration directory for Visual Studio Code (.vscode) and settings-file.\n\n**example:** `htmlc new -v`\n\n`-l --vsliveserver` - add configuration for Visual Studio Code\nExtension [Live Server](https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer) (recommended) - *\n*important:** vscode settings file needed. create via `html flag -v --vscode` needed!\n\n**example:** `htmlc new -l`\n\nthe `vsliveserver` option creates the property `liveServer.settings.root` and sets it to the output directory in the\nvscode settings file\n\n### compile-command\n\nThis command compiles all HTML files from the /src (rekusriv) folder and writes the results to /dist.\n\n```\nhtmlc compile \u003cproject-directory\u003e\n```\n\nIf only one path is specified, htmlc searches for /src and /dist in this directory. If these do not exist, then they are\ncreated. Then htmlc searches for files in /src and writes the results to the /dist directory. If no path is specified,\nthen htmlc searches for /src and /dist in the current folder.\n\n**project-directory (optional):** the path to the project directory. for example: `/path/to/project`\n\n```\nhtmlc compile \u003csource-directory\u003e \u003coutput-directory\u003e\n```\n\nIf two folders are specified, then htmlc uses the first value as the source path and the second value as the output\npaths.\n\n**source-directory (optional):** The path to the source directory (equivalent to /src). for\nexample: `/path/to/project/src`\n\n**output-directory (optional):** The path to the output directory (equivalent to /dist). for\nexample: `/path/to/another/directory/output`\n\n```\nhtmlc compile [...] [-s --style {path/to/main.scss}]\n```\n\nOptionally, a relative path to the style entry file can be specified with -s or -style. the path to the style file must\nbe specified relative to the /src directory. the relative path to the final css-file is written to the @StylePath-tags.\n\n### watch-command\n\nThis command compiles all HTML files from the /src (rekusriv) folder and writes the results to /dist. then /src is\nobserved for changes and recompiled whenever a change is made.\n\n```\nhtmlc watch \u003cproject-directory\u003e\n```\n\nThe watch command is identical to the compile command. The only difference is that the watch command observes the\ndirectory after the first compile and restarts the compile process every time a change is made.\n\n**project-directory (optional):** the path to the project directory. for example: `/path/to/project`\n\n```\nhtmlc watch \u003csource-directory\u003e \u003coutput-directory\u003e\n```\n\nIf two folders are specified, then htmlc uses the first value as the source path and the second value as the output\npaths.\n\n**source-directory (optional):** The path to the source directory (equivalent to /src). for\nexample: `/path/to/project/src`\n\n**output-directory (optional):** The path to the output directory (equivalent to /dist). for\nexample: `/path/to/another/directory/output`\n\n```\nhtmlc watch [...] [-s --style {/path/to/main.scss}]\n```\n\nOptionally, a relative path to the style entry file can be specified with -s or -style. the path to the style file must\nbe specified relative to the /src directory. the relative path to the final css-file is written to the @StylePath-tags.\n\n### environment-commands\n\nThe environment commands are used to secure the htmlc environment (e.g. all required dependencies, etc.)\n\n#### check-command\n\nThe command checks if certain dependencies are installed:\n\n* NodeJS\n* sass\n* less\n\nThe dependencies are registered in the code via dependency injection.\n\n#### setup-command\n\nThis command executes necessary steps to install the dependencies.\n\n### template-commands\n\nVia the template commands htmlc provides all necessary commands to manage templates.\n\n#### create-command\n\nCreates a template from an htmlc project which is ready to be distributed.\n\n* **source-directory** - the path to the source directory (equivalent to /repos/my-website).\n* **output-directory (optional)** - the path to the template archive. /htmlc-templates/my-website.zip. if no path is\n  given\n  then the template is created in the source directory.\n\n```\nhtmlc template create {source-directory} [output-directory]\n```\n\n**example:** (creates a template at /repos/my-website/template.zip)\n\n```\nhtmlc template create /repos/my-website\n```\n\n## html files\n\n### different html types\n\n#### entry html\n\nThe compiler searches for all HTML files which do NOT start with an underscore (index.html, a-page.html, etc.). files\nlike _layout.html, footer.html, etc. are ignored.\n\nfor example:\n\n`/src/index.html`\u003cbr /\u003e\n`/src/pages.html`\u003cbr /\u003e\n`/src/components/buttons.html`\u003cbr /\u003e\n\n#### layout\n\nThe layout file must start with an underscore. The rest of the naming is up to you. the content consists of reusable\nlayout in HTML (styles and scripts, header, navigation, etc.).\n\nfor example:\n\n`/src/_layout.html`\u003cbr /\u003e\n\n#### reusable components\n\nIn addition, you can use other recyclable components. The file name must start with an underscore. The rest of the\nnaming is up to you.\n\nfor example:\n\n`/src/_navigation.html`\u003cbr /\u003e\n`/src/_header.html`\u003cbr /\u003e\n`/src/_footer.html`\u003cbr /\u003e\n\n### supported tags and its functionality\n\n#### The @PageTitle-Tag\n\nThe value of **PageTitle** is set as a global variable. Each time @PageTitle is used, this location is replaced with the\nvalue.\n\n#### The @Layout-Tag\n\nThe **@Layout** tag is used in an HTML entry file to specify which layout file is to use.\n\n#### The @Body-Tag\n\nThe **@Body** tag determines in a layout file where the content from the actual HTML entry file is written.\n\n#### The @File-Tag\n\nYou can include another file with the **@File** tag in any HTML file (whether layout file. reusable file or entry file).\n\n#### The @MarkdownFile-Tag\n\nYou can include markdown code from files with the **@MarkdownFile** tag in any HTML file (whether layout file. reusable\nfile or entry file). The Markdown code will be rendered in HTML.\n\n#### The @StylePath-Tag\n\nhtmlc can also compile style files (scss or sass). the path of the compiled CSS file can be inserted using this *\n*@StylePath** tag. The following usage makes sense:\u003cbr /\u003e\n\n```\n\u003clink rel=\"stylesheet\" href=\"@StylePath\"\u003e\n```\n\n#### The @Comment-Tag\n\nCreates an HTML comment:\n\n```\n@Comment=Example-Text\n```\n\n```\n\u003c!-- Example-Text --\u003e`\n```\n\n#### The @Global-Tag\n\nhtmlc supports Global Variables. These are loaded from a JSON file. By default, the global.json file in the root\ndirectory of the project is configured for this (Which file to load can be configured in the .htmlc file).\n\nYou can load all JSON entries via the @Global tag and thus write them to the HTML.\n\n**global.json** (Global Variables File)\n\n```\n{\n    \"Application\": {\n        \"Name\": \"title of website\"\n    }\n}\n```\n\n**index.html** (Sample HTML File)\n\n```\n\u003cdiv\u003e\n    \u003ch1\u003e@Global:Application:Name\u003c/h1\u003e\n\u003c/div\u003e\n```\n\n**result**\n\n```\n\u003cdiv\u003e\n    \u003ch1\u003etitle of website\u003c/h1\u003e\n\u003c/div\u003e\n```\n\n#### The @StartHtmlSpecialChars and @EndHtmlSpecialChars-Tag\n\nYou can escape special characters in a section HTML.\nTo do this, place the following tags @StartHtmlSpecialChars and @EndHtmlSpecialChars before and after the block to be\nescaped:\n\n```\n@StartHtmlSpecialChars\n\u003ch1\u003ea h1 heading\u003c/h1\u003e\n@EndHtmlSpecialChars\n```\n\nturns into\n\n```\n\u0026#60;h1\u0026#62;a h1 heading\u0026#60;/h1\u0026#62;\n```\n\n#### The @Var-Tag\n\nhtmlc supports the use of variables. JSON is always used as content. All @Var entries are merged by htmlc into a JSON\nobject. This means that two equal @Var calls are always overwritten by the last entry.\n\n##### set a variable\n\n**NOCTICE:** a htmlc variable must **always** contain JSON!\n\nThe following code is used to set a variable. htmlc merges all variables into a single JSON object.\nAn htmlc variable must stand alone in a line, so there must be nothing before or after it.\n\n`@Var={\"Title\":\"Hello World!\"}`\n\n`@Var={\"Data\":{\"Persons\":[,{\"Name\":\"Lisa Mustermann\",\"Username\":\"lmustermann\"},{\"Name\":\"Fred Conrad\",\"Username\":\"fconrad\"}]}}`\n\n##### access a variable\n\nA call to read a variable is simple. It starts with @Var and always ends with a semicolon \";\". In between the path\ninside the JSON object is specified. Individual levels are separated by a colon \":\". Access to entries in an array are\ndone with an index access (The numbering always starts at 0!). For example, one accesses the 4 record with [3].\n\nTo access a variable, use this call:\n\n`\u003cp\u003e@Var[\"Data:Persons:[1]:Name\"];\u003c/p\u003e`\n\n**result:**\n\n`\u003cp\u003eFred Conrad\u003c/p\u003e`\n\n#### The @VarFile-Tag\n\nThe @VarFile tag works the same way as the @Var tag. A file name is specified behind it. This file is called in the\nproject and the content is loaded. This file must contain JSON. The content is then processed as with the @Var content\nand added to the global variable JSON object. The access to the variable is done via @Var\n\n### getting started with your own project\n\n1. create a directory with two subdirectories **/src** and **/dist**. All project files must be stored under **/src**.\n   The compiler writes the results under **/dist**.\n2. create an initial entry file **index.html**.\n3. create a layout file **_layout.html**.\n4. write the following basic HTML structure in the **_layout.html** file.\n\n```\n\u003chtml\u003e\n    \u003chead\u003e\n    \u003c/head\u003e\n    \u003cbody\u003e\n        @Body\n    \u003c/body\u003e\n\u003c/html\u003e\n```\n\n5. write the following example in **index.html**.\n\n```\n@Layout=_layout.html\n\u003csection\u003e\n    \u003cdiv\u003eHello again\u003c/div\u003e\n\u003c/section\u003e\n```\n\n6. open the console of your choice and change to the project directory. (**/src** and **/dist** must be in it).\n7. type the following command:\n\n```\nhtmlc compile\n```\n\n8. under **/dist** should now appear a file **index.html** with the following content:\n\n```\n\u003chtml\u003e\n    \u003chead\u003e\n    \u003c/head\u003e\n    \u003cbody\u003e\n        \u003csection\u003e\n            \u003cdiv\u003eHello again\u003c/div\u003e\n        \u003c/section\u003e\n     \u003c/body\u003e\n\u003c/html\u003e\n```\n\n#### The @BuildDate-Tag\n\nThe BuildDate is used to provide the date of execution. Optionally, a string can be specified for formatting.\n\nThe DateTime logic of .NET (https://learn.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings) is used.\n\n**example:**\n```\nhtmlc build date: @BuildDate (Depending on the language setting of the executing system)\nCopyRight @BuildDate(\"yyyy\") - My Website\nFormat Date @BuildDate(\"yyyy-MM-dd\")\n```\n\n**result:**\n```\nhtmlc build date: 10/09/2023 23:10:25 (Depending on the language setting of the executing system)\nCopyRight 2023 - My Website\nFormat Date 2023-10-09\n```\n\n#### The @ImageString-Tag\n\nThe ImageString tag can be used to protect sensitive information from bots and similar tools (does not guarantee 100% protection).\nThe transferred text is returned as a simple base64 PNG graphic string, which can be displayed in HTML.\n\n**example:**\n```\n\u003cp\u003e\u003cimg src=\"@ImageString(\"This is a secure string\", \"#ff0000\", \"#0000ff\", 20)\" /\u003e\u003c/p\u003e\n```\n\n**result:**\n```\n\u003cp\u003e\u003cimg src=\"data:image/png;base64, **************\" /\u003e\u003c/p\u003e\n```\n\n##### parameters:\n* **text** - the text to be displayed in the image\n* **background (optional - default: white)** - the background color of the image\n* **foreground (optional - default: black)** - the foreground color of the image\n* **font-size (optional - default: 20px)** - the size of the displayed text\n\n## licenses\n\n### [Cocona (MIT)](https://github.com/mayuki/Cocona)\n\nconsole app environment\n\n```\nMIT License\n\nCopyright (c) Mayuki Sawatari \u003cmayuki@misuzilla.org\u003e\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n```\n\n### [FluentDataBuilder (MIT)](https://github.com/lk-code/fluent-data-builder)\n\nfor fluent data generation and json editing\n\n```\nMIT License\n\nCopyright (c) 2023 Lars Krämer\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n```\n\n### [HtmlAgilityPack (MIT)](https://github.com/zzzprojects/html-agility-pack/)\n\nfor html editing\n\n```\nThe MIT License (MIT)\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n```\n\n### [Markdig (BSD-2-Clause)](https://github.com/xoofx/markdig)\n\nfor markdown rendering\n\n```\nCopyright (c) 2018-2019, Alexandre Mutel\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification\n, are permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this\n   list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\n   this list of conditions and the following disclaimer in the documentation\n   and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n```\n\n### [NLog (BSD-3-Clause)](https://github.com/NLog/NLog)\n\nfor logging\n\n```\nCopyright (c) 2004-2021 Jaroslaw Kowalski \u003cjaak@jkowalski.net\u003e, Kim Christensen, Julian Verdurmen\n\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without \nmodification, are permitted provided that the following conditions \nare met:\n\n* Redistributions of source code must retain the above copyright notice, \n  this list of conditions and the following disclaimer. \n\n* Redistributions in binary form must reproduce the above copyright notice,\n  this list of conditions and the following disclaimer in the documentation\n  and/or other materials provided with the distribution. \n\n* Neither the name of Jaroslaw Kowalski nor the names of its \n  contributors may be used to endorse or promote products derived from this\n  software without specific prior written permission. \n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE \nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE \nARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE \nLIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR \nCONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\nSUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS \nINTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN \nCONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \nARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF \nTHE POSSIBILITY OF SUCH DAMAGE.\n```\n\n\n### [SkiaSharp (MIT)](https://github.com/mono/SkiaSharp)\n\nfor image rendering\n\n```\nCopyright (c) 2015-2016 Xamarin, Inc.\nCopyright (c) 2017-2018 Microsoft Corporation.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flk-code%2Fhtmlc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flk-code%2Fhtmlc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flk-code%2Fhtmlc/lists"}