{"id":2017,"url":"https://github.com/indragiek/MarkdownTextView","last_synced_at":"2025-08-02T05:33:28.772Z","repository":{"id":31267075,"uuid":"34828814","full_name":"indragiek/MarkdownTextView","owner":"indragiek","description":"Rich Markdown editing control for iOS","archived":false,"fork":false,"pushed_at":"2017-06-15T13:05:21.000Z","size":157,"stargazers_count":695,"open_issues_count":12,"forks_count":61,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-06-01T12:58:24.270Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/indragiek.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}},"created_at":"2015-04-30T02:04:32.000Z","updated_at":"2025-05-16T08:10:32.000Z","dependencies_parsed_at":"2022-07-13T21:44:49.881Z","dependency_job_id":null,"html_url":"https://github.com/indragiek/MarkdownTextView","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/indragiek/MarkdownTextView","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indragiek%2FMarkdownTextView","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indragiek%2FMarkdownTextView/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indragiek%2FMarkdownTextView/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indragiek%2FMarkdownTextView/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/indragiek","download_url":"https://codeload.github.com/indragiek/MarkdownTextView/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indragiek%2FMarkdownTextView/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268339405,"owners_count":24234544,"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-08-02T02:00:12.353Z","response_time":74,"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":[],"created_at":"2024-01-05T20:16:01.339Z","updated_at":"2025-08-02T05:33:28.494Z","avatar_url":"https://github.com/indragiek.png","language":"Swift","funding_links":[],"categories":["UI","Text","Swift"],"sub_categories":["Layout","Other free courses","Other Testing","Keychain"],"readme":"## MarkdownTextView\n### Rich Markdown Editing for iOS\n\n**MarkdownTextView** is an iOS framework for adding rich Markdown editing capabilities. Support for Markdown syntax is implemented inside an easily extensible `NSTextStorage` subclass, with a `UITextView` subclass being provided for convenience.\n\n### Screenshot\n\n\u003cimg src='screenshot.png' width='374px'\u003e\n\n### Example App\n\nCheck out the includeded Example app to try out the text view and to see how **MarkdownTextView** is integrated into the project.\n\n### Installation\n\n###### With [CocoaPods](https://cocoapods.org/):\n```ruby\npod \"MarkdownTextView\"\n```\n\n###### With [Carthage](https://github.com/Carthage/Carthage):\n```swift\ngithub \"indragiek/MarkdownTextView\"\n```\n\n### Getting Started\n\nThe simplest possible usage is as follows:\n\n```swift\nlet textView = MarkdownTextView(frame: CGRectZero)\nview.addSubview(textView)\n```\n\nThis gives you a text view with support for most of the features defined in the original Markdown implementation (strong, emphasis, inline code, code blocks, block quotes, headers) with the default styling provided by the framework.\n\n\n### Customizing Appearance\n\nAll of the styling can be customized using standard `NSAttributedString` attributes. For example, if you wanted to customize bold text such that it appeared red, you would do this:\n\n```swift\nvar attributes = MarkdownTextAttributes()\nattributes.strongAttributes = [\n\tNSForegroundColorAttributeName: UIColor.redColor()\n]\nlet textStorage = MarkdownTextStorage(attributes: attributes)\nlet textView = MarkdownTextView(frame: CGRectZero, textStorage: textStorage)\nview.addSubview(textView)\n```\n\n### Extensions Support\n\nExtension classes conforming to the `HighlighterType` protocol can be used to add support for unofficial Markdown extensions. The framework comes with the following extensions already implemented:\n\nFrom [Github Flavored Markdown](https://help.github.com/articles/github-flavored-markdown/):\n\n* `MarkdownStrikethroughHighlighter` - Support for `~~strikethrough~~`\n* `MarkdownFencedCodeHighlighter` - Support for fenced code blocks\n* `LinkHighlighter` - Support for auto-linking\n\nOther:\n\n* `MarkdownSuperscriptHighlighter` - Support for `super^scripted^text`\n\nThese extensions do not come activated by default. They must manually be added to an instance of `MarkdownTextStorage` as follows:\n\n```swift\nlet textStorage = MarkdownTextStorage()\nvar error: NSError?\nif let linkHighlighter = LinkHighlighter(errorPtr: \u0026error) {\n    textStorage.addHighlighter(linkHighlighter)\n} else {\n    assertionFailure(\"Error initializing LinkHighlighter: \\(error)\")\n}\ntextStorage.addHighlighter(MarkdownStrikethroughHighlighter())\ntextStorage.addHighlighter(MarkdownSuperscriptHighlighter())\nif let codeBlockAttributes = attributes.codeBlockAttributes {\n    textStorage.addHighlighter(MarkdownFencedCodeHighlighter(attributes: codeBlockAttributes))\n}\n\nlet textView = MarkdownTextView(frame: CGRectZero, textStorage: textStorage)\nview.addSubview(textView)\n```\n\n### Credits\n\n* John Gruber's [original Markdown implementation](http://daringfireball.net/projects/markdown/) for most of the regular expressions used in this project.\n* [RFMarkdownTextView](https://github.com/ruddfawcett/RFMarkdownTextView) for the idea to implement this as an `NSTextStorage` subclass\n\n### Contact\n\n* Indragie Karunaratne\n* [@indragie](http://twitter.com/indragie)\n* [http://indragie.com](http://indragie.com)\n\n### License\n\nMarkdownTextView is licensed under the MIT License. See `LICENSE` for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Findragiek%2FMarkdownTextView","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Findragiek%2FMarkdownTextView","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Findragiek%2FMarkdownTextView/lists"}