{"id":31203486,"url":"https://github.com/loopwerk/parsley","last_synced_at":"2025-09-20T15:08:41.131Z","repository":{"id":42446868,"uuid":"337386070","full_name":"loopwerk/Parsley","owner":"loopwerk","description":"A Markdown parser for Swift, using Github Flavored Markdown and Metadata","archived":false,"fork":false,"pushed_at":"2025-08-08T09:30:29.000Z","size":60,"stargazers_count":24,"open_issues_count":0,"forks_count":5,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-09-16T04:53:07.381Z","etag":null,"topics":["github-flavored-markdown","markdown","markdown-parser","markdown-to-html","swift","swift-package-manager"],"latest_commit_sha":null,"homepage":"","language":"Swift","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/loopwerk.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,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"loopwerk","buy_me_a_coffee":"loopwerk"}},"created_at":"2021-02-09T11:42:33.000Z","updated_at":"2025-08-17T19:01:36.000Z","dependencies_parsed_at":"2025-08-08T11:18:15.456Z","dependency_job_id":"744c4aaa-8497-4e6b-8001-f49c5d23394c","html_url":"https://github.com/loopwerk/Parsley","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/loopwerk/Parsley","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/loopwerk%2FParsley","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/loopwerk%2FParsley/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/loopwerk%2FParsley/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/loopwerk%2FParsley/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/loopwerk","download_url":"https://codeload.github.com/loopwerk/Parsley/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/loopwerk%2FParsley/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276112180,"owners_count":25587271,"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","status":"online","status_checked_at":"2025-09-20T02:00:10.207Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["github-flavored-markdown","markdown","markdown-parser","markdown-to-html","swift","swift-package-manager"],"created_at":"2025-09-20T15:08:38.896Z","updated_at":"2025-09-20T15:08:41.126Z","avatar_url":"https://github.com/loopwerk.png","language":"Swift","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"logo.png\" width=\"400\" alt=\"tag-changelog\" /\u003e\n\u003c/p\u003e\n\nA Markdown parser for Swift Package Manager, using [Github Flavored Markdown](https://github.github.com/gfm/). As such it comes with a bunch of Markdown extensions such as fenced code blocks, tables, strikethrough, hard line breaks and auto links.\n\nAdditionally Parsley supports embedded metadata in Markdown documents, and it splits the document title out from the document body.\n\n``` swift\nlet input = \"\"\"\n---\nauthor: Kevin\ntags: Swift, Parsley\n---\n\n# Hello World\nThis is the body\n\"\"\"\n\nlet document = try Parsley.parse(input)\nprint(document.title) // Hello World\nprint(document.body) // \u003cp\u003eThis is the body\u003c/p\u003e\nprint(document.metadata) // [\"author\": \"Kevin\", \"tags\": \"Swift, Parsley\"]\n```\n\n\n## Install\nParsley is available via Swift Package Manager and runs on macOS and Linux.\n\n```\n.package(url: \"https://github.com/loopwerk/Parsley\", from: \"0.5.0\"),\n```\n\n\n## Use as a reader in Saga\nParsley can be used as a reader in the static site generator [Saga](https://github.com/loopwerk/Saga), using [SagaParsleyMarkdownReader](https://github.com/loopwerk/SagaParsleyMarkdownReader).\n\n\n## Modifying the generated HTML\nParsley doesn't come with a plugin system, it relies purely on `cmark-gfm` under the hood to render Markdown to HTML. If you want to modify the generated HTML, for example if you want to add `target=\"blank\"` to all external links, [SwiftSoup](https://github.com/scinfu/SwiftSoup) is a great way to achieve this.\n\nAdding a plugin system on top of `cmark` would mean that Parsley could no longer rely on the outstanding output of `cmark`; instead Parsley would have to parse its AST and generate HTML based on that itself, thus reinventing the (very complex) wheel.","funding_links":["https://github.com/sponsors/loopwerk","https://buymeacoffee.com/loopwerk"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Floopwerk%2Fparsley","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Floopwerk%2Fparsley","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Floopwerk%2Fparsley/lists"}