Skip to content

Commit 2b1a67c

Browse files
committed
#96 Added support for function builder to compose strings
1 parent a0f2b88 commit 2b1a67c

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
////
2+
// SwiftRichString
3+
// Elegant Strings & Attributed Strings Toolkit for Swift
4+
//
5+
// Created by Daniele Margutti.
6+
// Copyright © 2018 Daniele Margutti. All rights reserved.
7+
//
8+
// Web: http://www.danielemargutti.com
9+
10+
// Twitter: @danielemargutti
11+
//
12+
//
13+
// Permission is hereby granted, free of charge, to any person obtaining a copy
14+
// of this software and associated documentation files (the "Software"), to deal
15+
// in the Software without restriction, including without limitation the rights
16+
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
17+
// copies of the Software, and to permit persons to whom the Software is
18+
// furnished to do so, subject to the following conditions:
19+
//
20+
// The above copyright notice and this permission notice shall be included in
21+
// all copies or substantial portions of the Software.
22+
//
23+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
24+
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25+
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
26+
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27+
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
28+
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
29+
// THE SOFTWARE.
30+
31+
import Foundation
32+
33+
@_functionBuilder
34+
public class AttributedStringBuilder {
35+
public static func buildBlock(_ components: AttributedString...) -> AttributedString {
36+
let result = NSMutableAttributedString(string: "")
37+
38+
return components.reduce(into: result) { (result, current) in result.append(current) }
39+
}
40+
}
41+
42+
extension AttributedString {
43+
44+
public class func composing(@AttributedStringBuilder _ parts: () -> AttributedString) -> AttributedString {
45+
return parts()
46+
}
47+
48+
}

0 commit comments

Comments
 (0)