New file |
| | |
| | | // |
| | | // YYTextParser.h |
| | | // YYText <https://github.com/ibireme/YYText> |
| | | // |
| | | // Created by ibireme on 15/3/6. |
| | | // Copyright (c) 2015 ibireme. |
| | | // |
| | | // This source code is licensed under the MIT-style license found in the |
| | | // LICENSE file in the root directory of this source tree. |
| | | // |
| | | |
| | | #import <UIKit/UIKit.h> |
| | | |
| | | NS_ASSUME_NONNULL_BEGIN |
| | | |
| | | /** |
| | | The YYTextParser protocol declares the required method for YYTextView and YYLabel |
| | | to modify the text during editing. |
| | | |
| | | You can implement this protocol to add code highlighting or emoticon replacement for |
| | | YYTextView and YYLabel. See `YYTextSimpleMarkdownParser` and `YYTextSimpleEmoticonParser` for example. |
| | | */ |
| | | @protocol YYTextParser <NSObject> |
| | | @required |
| | | /** |
| | | When text is changed in YYTextView or YYLabel, this method will be called. |
| | | |
| | | @param text The original attributed string. This method may parse the text and |
| | | change the text attributes or content. |
| | | |
| | | @param selectedRange Current selected range in `text`. |
| | | This method should correct the range if the text content is changed. If there's |
| | | no selected range (such as YYLabel), this value is NULL. |
| | | |
| | | @return If the 'text' is modified in this method, returns `YES`, otherwise returns `NO`. |
| | | */ |
| | | - (BOOL)parseText:(nullable NSMutableAttributedString *)text selectedRange:(nullable NSRangePointer)selectedRange; |
| | | @end |
| | | |
| | | |
| | | |
| | | /** |
| | | A simple markdown parser. |
| | | |
| | | It'a very simple markdown parser, you can use this parser to highlight some |
| | | small piece of markdown text. |
| | | |
| | | This markdown parser use regular expression to parse text, slow and weak. |
| | | If you want to write a better parser, try these projests: |
| | | https://github.com/NimbusKit/markdown |
| | | https://github.com/dreamwieber/AttributedMarkdown |
| | | https://github.com/indragiek/CocoaMarkdown |
| | | |
| | | Or you can use lex/yacc to generate your custom parser. |
| | | */ |
| | | @interface YYTextSimpleMarkdownParser : NSObject <YYTextParser> |
| | | @property (nonatomic) CGFloat fontSize; ///< default is 14 |
| | | @property (nonatomic) CGFloat headerFontSize; ///< default is 20 |
| | | |
| | | @property (nullable, nonatomic, strong) UIColor *textColor; |
| | | @property (nullable, nonatomic, strong) UIColor *controlTextColor; |
| | | @property (nullable, nonatomic, strong) UIColor *headerTextColor; |
| | | @property (nullable, nonatomic, strong) UIColor *inlineTextColor; |
| | | @property (nullable, nonatomic, strong) UIColor *codeTextColor; |
| | | @property (nullable, nonatomic, strong) UIColor *linkTextColor; |
| | | |
| | | - (void)setColorWithBrightTheme; ///< reset the color properties to pre-defined value. |
| | | - (void)setColorWithDarkTheme; ///< reset the color properties to pre-defined value. |
| | | @end |
| | | |
| | | |
| | | |
| | | /** |
| | | A simple emoticon parser. |
| | | |
| | | Use this parser to map some specified piece of string to image emoticon. |
| | | Example: "Hello :smile:" -> "Hello 😀" |
| | | |
| | | It can also be used to extend the "unicode emoticon". |
| | | */ |
| | | @interface YYTextSimpleEmoticonParser : NSObject <YYTextParser> |
| | | |
| | | /** |
| | | The custom emoticon mapper. |
| | | The key is a specified plain string, such as @":smile:". |
| | | The value is a UIImage which will replace the specified plain string in text. |
| | | */ |
| | | @property (nullable, copy) NSDictionary<NSString *, __kindof UIImage *> *emoticonMapper; |
| | | @end |
| | | |
| | | NS_ASSUME_NONNULL_END |