https://github.com/draveness/Typeset
Deal with AttributedString efficiently
https://github.com/draveness/Typeset
attributedstring colorful nsattributedstring string typeset
Last synced: about 1 month ago
JSON representation
Deal with AttributedString efficiently
- Host: GitHub
- URL: https://github.com/draveness/Typeset
- Owner: draveness
- License: mit
- Created: 2015-05-26T00:37:40.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2020-07-07T08:39:27.000Z (almost 5 years ago)
- Last Synced: 2025-04-05T15:06:07.419Z (about 2 months ago)
- Topics: attributedstring, colorful, nsattributedstring, string, typeset
- Language: Objective-C
- Homepage:
- Size: 11.4 MB
- Stars: 451
- Watchers: 13
- Forks: 37
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
![]()
[](http://cocoadocs.org/docsets/Typeset) [](https://travis-ci.org/Draveness/Typeset)  
----
Typeset makes it easy to create `NSAttributedString`
```
@"Hello typeset".typeset
.match(@"Hello").fontSize(40)
.match(@"type").purple
.match(@"set").blue
.string;
```# Demo

# Usage
+ Method chaining
+ All the method for typeset returns a `self` object to chaining itself.```
@"Hello typeset".typeset
.match(@"Hello").fontSize(40)
.match(@"type").purple
.match(@"set").blue
.string;
```
> call `typeset` method first and call `string` at last returns a `NSAttributedString`.
+ `UILabel` and `UITextField` support
+ Add `typesetBlock` to UILabel or `UITextField`, and you can directly set it's text style with:```objectivec
label.typesetBlock = TSBlock(fontSize(40)
.match(@"type").purple
.match(@"set").blue);
label.text = @"Hello typeset, hello.";// If you type in this text field, it will color all the `1` in text field to red
textField.typesetBlock = TSBlock(match(@"1").red);
```+ Construct complicated `NSMutableAttributedString`
```objectivec
TSAttributedString(@"Hello".red, @" ", @"World".blue);
```+ Match part of string
+ Typeset providing a series of method to match part of your string, you can use these method to select part of your string, and add attribute to it.```objectivec
@"Hello".typeset.from(0).to(2).red.string;
@"Hello".typeset.location(0).length(2).red.string;
@"Hello".typeset.range(NSMakeRange(0,2)).red.string;
@"Hello".typeset.match(@"He").red.string;
```
> These lines of code all make `@"He"` of `@"Hello"` to red
| Match Method | Explain |
| ------------------------------------------------------ | ------------------------------------------------------ |
| `from(NSUInteger)` `to(NSUInteger)` | |
| `location(NSUInteger)` `length(NSUInteger)` | |
| `range(NSRange)` | |
| `match(NSString *)` | match the first substring |
| `matchWithOptions(NSString *, NSStringCompareOptions)` | match the first substring with options |
| `matchAll(NSString)` | match all the substring |
| `matchAllWithOptions(NSString *, NSStringCompareOptions)`| match all the substring with options |
| `all` | select all the string |+ Match with pattern
| Match Method | Pattern |
| ------------------------------------------------------ | -------------------------- |
| `matchAllWithPattern(NSString *pattern)` | |
| `matchAllWithPatternAndOptions(NSString *pattern, NSRegularExpressionOptions options)` | |
| `matchNumbers` | \d+ |
| `matchLetters` | [a-zA-Z]+ |
| `matchLanguage(NSString *language)` | \p{script=%@} |
| `matchChinese` | \p{script=@"Han"} |+ Convinient method
+ If you don't want to change some part of the string, and only want to **change the color or the font**, you call call these methods directly without calling `typeset` first```objectivec
@"Hello".red
@"Hello".fontSize(20).red
```## References
### Attributes
| Dictionary Key | `Typeset` Method |
| ----------------------------------- | ------------------------------------------------------ |
| `NSFontAttributeName` | `font(NSString fontName, CGFloat size)` |
| | `fontSize(CGFloat size)` |
| | `fontName(NSString name)` |
| | `regular` `light` `italic` `thin` `bold` |
| `NSForegroundColorAttributeName` | `color(UIColor color)` |
| | `hexColor(CGFloat hexColor)` |
| | `black` `darkGray` `lightGray` `white` `gray` `red` `green` `blue` `cyan` `yellow` `magenta` `orange` `purple` `brown` `clear` |
| `NSKernAttributeName` | `kern(CGFloat kern)` |
| `NSUnderlineStyleAttributeName` | `underline(NSUnderlineStyle underline)` |
| `NSUnderlineColorAttributeName` | `underlineColor(UIColor *underlineColor)` |
| `NSBaselineOffsetAttributeName` | `baseline(CGFloat baseline)` |
| `NSStrikethroughStyleAttributeName` | `strikeThrough(NSUnderlineStyle strikeThrough)` |
| `NSStrikethroughColorAttributeName` | `strikeThroughColor(UIColor *underlineColor)` |
| `NSLinkAttributeName` | `link(NSString *url)` |
| `NSLigatureAttributeName` | `ligature(NSUInteger ligature)` |
| `NSStrokeColorAttributeName` | `strokeColor(UIColor *strokeColor)` |
| `NSStrokeWidthAttributeName` | `strokeWidth(CGFloat strokeWidth)` |
| `NSShadowAttributeName` | `shadow(NSShadow *shadow)` |
| `NSTextEffectAttributeName` | `textEffect(NSString *textEffect)` |
| `NSObliquenessAttributeName` | `obliqueness(CGFloat obliqueness)` |
| `NSExpansionAttributeName` | `expansion(CGFloat expansion)` |### NSParagraphStyle
| `Typeset` Method |
| ------------------------------------------------------ |
| `lineBreakMode(NSLineBreakMode lineBreakMode)` |
| `alignment(NSTextAlignment textAlignment)` |
| `lineSpacing(CGFloat lineSpacing)` |
| `paragraphSpacing(CGFloat paragraphSpacing)` |
| `firstLineHeadIndent(CGFloat firstLineHeadIndent)` |
| `headIndent(CGFloat headIndent)` |
| `tailIndent(CGFloat tailIndent)` |
| `minimumLineHeight(CGFloat minimumLineHeight)` |
| `maximumLineHeight(CGFloat maximumLineHeight)` |
| `lineHeightMultiple(CGFloat lineHeightMultiple)` |
| `paragraphSpacingBefore(CGFloat paragraphSpacingBefore)` |
| `hyphenationFactor(CGFloat hyphenationFactor)` |
| `defaultTabInterval(CGFloat defaultTabInterval)` |
| `baseWritingDirection(NSWritingDirection baseWritingDirection)`|
| `allowsDefaultTighteningForTruncation(BOOL allowsDefaultTighteningForTruncation)`|## Installation
### CocoaPods
[CocoaPods](https://cocoapods.org/) is a dependency manager for Objective-C, which automates and simplifies the process of using 3rd-party libraries like Typeset in your projects. See the [Get Started section](https://cocoapods.org/#get_started) for more details.
## Podfile
```
pod "Typeset"
```# Contribute
Feel free to open an issue or pull request, if you need help or there is a bug.
# Contact
- Powered by [Draveness](http://github.com/draveness)
# License
Typeset is available under the MIT license. See the LICENSE file for more info.
# Todo
- Documentation
- More features