{"id":25621099,"url":"https://github.com/kruceo/marceo-go","last_synced_at":"2026-04-28T13:38:08.164Z","repository":{"id":227867328,"uuid":"772587090","full_name":"Kruceo/Marceo-go","owner":"Kruceo","description":"A rewrite of the markdown-html parser Marceo, but in golang, focusing in performance.","archived":false,"fork":false,"pushed_at":"2024-03-26T16:52:55.000Z","size":2510,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-20T14:43:24.164Z","etag":null,"topics":["go","html","markdown","parser","performance","speed"],"latest_commit_sha":null,"homepage":"","language":"Go","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/Kruceo.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}},"created_at":"2024-03-15T13:43:58.000Z","updated_at":"2024-09-17T11:10:10.000Z","dependencies_parsed_at":"2024-06-21T12:52:53.304Z","dependency_job_id":"4218074b-d04a-4a89-93be-92ea44d3941f","html_url":"https://github.com/Kruceo/Marceo-go","commit_stats":null,"previous_names":["kruceo/marceo-go"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Kruceo/Marceo-go","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kruceo%2FMarceo-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kruceo%2FMarceo-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kruceo%2FMarceo-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kruceo%2FMarceo-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kruceo","download_url":"https://codeload.github.com/Kruceo/Marceo-go/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kruceo%2FMarceo-go/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32383781,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-28T11:25:28.583Z","status":"ssl_error","status_checked_at":"2026-04-28T11:25:05.435Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["go","html","markdown","parser","performance","speed"],"created_at":"2025-02-22T08:34:05.327Z","updated_at":"2026-04-28T13:38:08.158Z","avatar_url":"https://github.com/Kruceo.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Marceo Go\n\n[![Build](https://github.com/Kruceo/marceo-go/actions/workflows/build.yml/badge.svg)](https://github.com/Kruceo/marceo-go/actions/workflows/build.yml)\n[![GitHub issues](https://img.shields.io/github/issues/kruceo/marceo-go)](https://github.com/kruceo/marceo-go/issues)\n[![License](https://img.shields.io/github/license/kruceo/marceo-go)](https://github.com/kruceo/marceo-go/blob/master/LICENSE)\n[![Latest Version](https://img.shields.io/github/v/release/kruceo/marceo-go)](https://github.com/kruceo/marceo/releases)\n\n## Description\n\nMarceo-Go is a rewrite from Marceo, a markdown-html parser, but built to `js`. \n\n- Focused on speed.\n- Can be used directly in CLI\n- Can be used as dependency.\n\n## Building from sources\n\n```bash\ngit clone https://github.com/Kruceo/marceo-go.git\ncd marceo-go\ngo build\n```\n\n## Basic CLI Usage\n\n```bash \n./marceo -i ./my/text.md -o ./my/output.html\n```\n\n## Using in own projects \n\n### Install\n\n```bash\ngo get github.com/kruceo/marceo-go\n```\n\n### Basic Parse\n\n```go\nimport \"github.com/kruceo/marceo-go/library/packs\"\n\nfunc main(){\n    myMarkdown := \"# This is a **Title**\"\n\n    // The default pack of plugins by Marceo\n    pack := packs.DefaultPack\n\n    result := pack.Parse(myMarkdown)\n\n    println(result)\n}\n```\n\n## Creating my own pack\n\nWith Marceo-go you will be able to create a pack with selected (or with your owns) plugins.\n\n```go\nimport (\n\t\"github.com/kruceo/marceo-go/library/classes\"\n\t\"github.com/kruceo/marceo-go/library/plugins\"\n)\n\nfunc main() {\n\t// Added only Headers 1 `#` and Anchors `[text](url)`\n\tmyPack := classes.NewPack(plugins.Header1, plugins.Anchor)\n\n\tres1 := myPack.Parse(\"# My header 1 that will be parsed.\")\n\tres2 := myPack.Parse(\"## My header 2 that not will be parsed.\")\n\tres3 := myPack.Parse(\"[My anchor](https://kruceo.com)\")\n\n\tprintln(res1)\n\tprintln(res2)\n\tprintln(res3)\n}\n```\n\n## Creating a Plugin\nTo create plugins you will especially need to known a bit of regex expressions.\n\n```go\n// This will capture the text between \"\u003e\" and \"\u003c\".\nvar Regex *regexp.Regexp = regexp.MustCompile(`(\u003e)(.+?)(\u003c)`)\n\n// \"start\", \"content\" and \"end\" args.\nfunc Replacer(s, c, e string) string {\n\t//process your strings.\n\treturn \"\u003cmyOwnTag\u003e\" + c + \"\u003c/myOwnTag\u003e\"\n}\n\n// This changes some behaviors on parse\nvar pluginOptions classes.PluginOptions = classes.PluginOptions{}\n\n// Finally create the plugin\nvar myPlugin classes.Plugin = classes.NewPlugin(\"MyPlugin\", *Regex, Replacer, pluginOptions)\n```\n\n### Testing the plugin\n\n```go\nfunc main() {\n\tmyPack := classes.NewPack(myPlugin)\n\n\tres := myPack.Parse(\"# \u003eThis is a test\u003c\")\n\n\tprintln(res)\n}\n```\n\n\n## Benchmarks\n\n### Benchmark from 26/03/2023 - v0.6.4\n\nThe benchmark was run with the `-p` option for `paralelism`.\n\n|Total Words|Markdown Words        |Execution Time |\n|-----------|----------------------|---------------|\n|70         |50                    |4\u003csub\u003ems\u003c/sub\u003e |\n|734        |500                   |8\u003csub\u003ems\u003c/sub\u003e |\n|6470       |5000                  |57\u003csub\u003ems\u003c/sub\u003e|\n\n\n### Testing Machine\n\n|OS|KERNEL|CPU|MEM|STO|\n|----|----|----|----|---|\n|Arch Linux|Linux 6.7.4-arch1-1|Intel® Core™ i3-1005G1|8,0 GiB|NVME 1200 \u003csub\u003emb/s\u003c/sub\u003e R\u0026W|\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkruceo%2Fmarceo-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkruceo%2Fmarceo-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkruceo%2Fmarceo-go/lists"}