Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/indragiek/MarkdownTextView
Rich Markdown editing control for iOS
https://github.com/indragiek/MarkdownTextView
Last synced: 3 months ago
JSON representation
Rich Markdown editing control for iOS
- Host: GitHub
- URL: https://github.com/indragiek/MarkdownTextView
- Owner: indragiek
- License: mit
- Created: 2015-04-30T02:04:32.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2017-06-15T13:05:21.000Z (over 7 years ago)
- Last Synced: 2024-04-23T19:19:52.681Z (6 months ago)
- Language: Swift
- Size: 153 KB
- Stars: 683
- Watchers: 15
- Forks: 61
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-ios-star - MarkdownTextView - Rich Markdown editing control for iOS. (Text / Other Testing)
- awesome-ios - MarkdownTextView - Rich Markdown editing control for iOS. (Text / Other Testing)
README
## MarkdownTextView
### Rich Markdown Editing for iOS**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.
### Screenshot
### Example App
Check out the includeded Example app to try out the text view and to see how **MarkdownTextView** is integrated into the project.
### Installation
###### With [CocoaPods](https://cocoapods.org/):
```ruby
pod "MarkdownTextView"
```###### With [Carthage](https://github.com/Carthage/Carthage):
```swift
github "indragiek/MarkdownTextView"
```### Getting Started
The simplest possible usage is as follows:
```swift
let textView = MarkdownTextView(frame: CGRectZero)
view.addSubview(textView)
```This 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.
### Customizing Appearance
All 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:
```swift
var attributes = MarkdownTextAttributes()
attributes.strongAttributes = [
NSForegroundColorAttributeName: UIColor.redColor()
]
let textStorage = MarkdownTextStorage(attributes: attributes)
let textView = MarkdownTextView(frame: CGRectZero, textStorage: textStorage)
view.addSubview(textView)
```### Extensions Support
Extension 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:
From [Github Flavored Markdown](https://help.github.com/articles/github-flavored-markdown/):
* `MarkdownStrikethroughHighlighter` - Support for `~~strikethrough~~`
* `MarkdownFencedCodeHighlighter` - Support for fenced code blocks
* `LinkHighlighter` - Support for auto-linkingOther:
* `MarkdownSuperscriptHighlighter` - Support for `super^scripted^text`
These extensions do not come activated by default. They must manually be added to an instance of `MarkdownTextStorage` as follows:
```swift
let textStorage = MarkdownTextStorage()
var error: NSError?
if let linkHighlighter = LinkHighlighter(errorPtr: &error) {
textStorage.addHighlighter(linkHighlighter)
} else {
assertionFailure("Error initializing LinkHighlighter: \(error)")
}
textStorage.addHighlighter(MarkdownStrikethroughHighlighter())
textStorage.addHighlighter(MarkdownSuperscriptHighlighter())
if let codeBlockAttributes = attributes.codeBlockAttributes {
textStorage.addHighlighter(MarkdownFencedCodeHighlighter(attributes: codeBlockAttributes))
}let textView = MarkdownTextView(frame: CGRectZero, textStorage: textStorage)
view.addSubview(textView)
```### Credits
* John Gruber's [original Markdown implementation](http://daringfireball.net/projects/markdown/) for most of the regular expressions used in this project.
* [RFMarkdownTextView](https://github.com/ruddfawcett/RFMarkdownTextView) for the idea to implement this as an `NSTextStorage` subclass### Contact
* Indragie Karunaratne
* [@indragie](http://twitter.com/indragie)
* [http://indragie.com](http://indragie.com)### License
MarkdownTextView is licensed under the MIT License. See `LICENSE` for more information.