@@ -13,6 +13,7 @@ public struct RichAttributes: Codable {
13
13
public let bold : Bool ?
14
14
public let italic : Bool ?
15
15
public let underline : Bool ?
16
+ public let strike : Bool ?
16
17
public let header : HeaderType ?
17
18
public let list : ListType ?
18
19
public let indent : Int ?
@@ -22,6 +23,7 @@ public struct RichAttributes: Codable {
22
23
bold: Bool ? = nil ,
23
24
italic: Bool ? = nil ,
24
25
underline: Bool ? = nil ,
26
+ strike: Bool ? = nil ,
25
27
header: HeaderType ? = nil ,
26
28
list: ListType ? = nil ,
27
29
indent: Int ? = nil
@@ -30,6 +32,7 @@ public struct RichAttributes: Codable {
30
32
self . bold = bold
31
33
self . italic = italic
32
34
self . underline = underline
35
+ self . strike = strike
33
36
self . header = header
34
37
self . list = list
35
38
self . indent = indent
@@ -39,6 +42,7 @@ public struct RichAttributes: Codable {
39
42
case bold = " bold "
40
43
case italic = " italic "
41
44
case underline = " underline "
45
+ case strike = " strike "
42
46
case header = " header "
43
47
case list = " list "
44
48
case indent = " indent "
@@ -50,6 +54,7 @@ public struct RichAttributes: Codable {
50
54
self . bold = try values. decodeIfPresent ( Bool . self, forKey: . bold)
51
55
self . italic = try values. decodeIfPresent ( Bool . self, forKey: . italic)
52
56
self . underline = try values. decodeIfPresent ( Bool . self, forKey: . underline)
57
+ self . strike = try values. decodeIfPresent ( Bool . self, forKey: . strike)
53
58
self . header = try values. decodeIfPresent ( HeaderType . self, forKey: . header)
54
59
self . list = try values. decodeIfPresent ( ListType . self, forKey: . list)
55
60
self . indent = try values. decodeIfPresent ( Int . self, forKey: . indent)
@@ -62,6 +67,7 @@ extension RichAttributes: Hashable {
62
67
hasher. combine ( bold)
63
68
hasher. combine ( italic)
64
69
hasher. combine ( underline)
70
+ hasher. combine ( strike)
65
71
hasher. combine ( header)
66
72
hasher. combine ( list)
67
73
hasher. combine ( indent)
@@ -76,6 +82,7 @@ extension RichAttributes: Equatable {
76
82
lhs. bold == rhs. bold
77
83
&& lhs. italic == rhs. italic
78
84
&& lhs. underline == rhs. underline
85
+ && lhs. strike == rhs. strike
79
86
&& lhs. header == rhs. header
80
87
&& lhs. list == rhs. list
81
88
&& lhs. indent == rhs. indent
@@ -88,13 +95,15 @@ extension RichAttributes {
88
95
header: HeaderType ? = nil ,
89
96
italic: Bool ? = nil ,
90
97
underline: Bool ? = nil ,
98
+ strike: Bool ? = nil ,
91
99
list: ListType ? = nil ,
92
100
indent: Int ? = nil
93
101
) -> RichAttributes {
94
102
return RichAttributes (
95
103
bold: ( bold != nil ? bold! : self . bold) ,
96
104
italic: ( italic != nil ? italic! : self . italic) ,
97
105
underline: ( underline != nil ? underline! : self . underline) ,
106
+ strike: ( strike != nil ? strike! : self . strike) ,
98
107
header: ( header != nil ? header! : self . header) ,
99
108
list: ( list != nil ? list! : self . list) ,
100
109
indent: ( indent != nil ? indent! : self . indent)
@@ -111,6 +120,7 @@ extension RichAttributes {
111
120
bold: ( att. bold != nil ? ( byAdding ? att. bold! : nil ) : self . bold) ,
112
121
italic: ( att. italic != nil ? ( byAdding ? att. italic! : nil ) : self . italic) ,
113
122
underline: ( att. underline != nil ? ( byAdding ? att. underline! : nil ) : self . underline) ,
123
+ strike: ( att. strike != nil ? ( byAdding ? att. strike! : nil ) : self . strike) ,
114
124
header: ( att. header != nil ? ( byAdding ? att. header! : nil ) : self . header) ,
115
125
list: ( att. list != nil ? ( byAdding ? att. list! : nil ) : self . list) ,
116
126
indent: ( att. indent != nil ? ( byAdding ? att. indent! : nil ) : self . indent)
@@ -130,6 +140,9 @@ extension RichAttributes {
130
140
if let underline = underline, underline {
131
141
styles. append ( . underline)
132
142
}
143
+ if let strike = strike, strike {
144
+ styles. append ( . strikethrough)
145
+ }
133
146
if let header = header {
134
147
styles. append ( header. getTextSpanStyle ( ) )
135
148
}
@@ -150,6 +163,9 @@ extension RichAttributes {
150
163
if let underline = underline, underline {
151
164
styles. insert ( . underline)
152
165
}
166
+ if let strike = strike, strike {
167
+ styles. insert ( . strikethrough)
168
+ }
153
169
if let header = header {
154
170
styles. insert ( header. getTextSpanStyle ( ) )
155
171
}
@@ -163,28 +179,30 @@ extension RichAttributes {
163
179
extension RichAttributes {
164
180
public func hasStyle( style: RichTextStyle ) -> Bool {
165
181
switch style {
166
- case . default:
167
- return true
168
- case . bold:
169
- return bold ?? false
170
- case . italic:
171
- return italic ?? false
172
- case . underline:
173
- return underline ?? false
174
- case . h1:
175
- return header == . h1
176
- case . h2:
177
- return header == . h2
178
- case . h3:
179
- return header == . h3
180
- case . h4:
181
- return header == . h4
182
- case . h5:
183
- return header == . h5
184
- case . h6:
185
- return header == . h6
186
- case . bullet:
187
- return list == . bullet( indent)
182
+ case . default:
183
+ return true
184
+ case . bold:
185
+ return bold ?? false
186
+ case . italic:
187
+ return italic ?? false
188
+ case . underline:
189
+ return underline ?? false
190
+ case . strikethrough:
191
+ return strike ?? false
192
+ case . h1:
193
+ return header == . h1
194
+ case . h2:
195
+ return header == . h2
196
+ case . h3:
197
+ return header == . h3
198
+ case . h4:
199
+ return header == . h4
200
+ case . h5:
201
+ return header == . h5
202
+ case . h6:
203
+ return header == . h6
204
+ case . bullet:
205
+ return list == . bullet( indent)
188
206
}
189
207
}
190
208
}
@@ -198,40 +216,44 @@ internal func getRichAttributesFor(styles: [RichTextStyle]) -> RichAttributes {
198
216
var bold : Bool ? = nil
199
217
var italic : Bool ? = nil
200
218
var underline : Bool ? = nil
219
+ var strike : Bool ? = nil
201
220
var header : HeaderType ? = nil
202
221
var list : ListType ? = nil
203
222
var indent : Int ? = nil
204
223
205
224
for style in styles {
206
225
switch style {
207
- case . bold:
208
- bold = true
209
- case . italic:
210
- italic = true
211
- case . underline:
212
- underline = true
213
- case . h1:
214
- header = . h1
215
- case . h2:
216
- header = . h2
217
- case . h3:
218
- header = . h3
219
- case . h4:
220
- header = . h4
221
- case . h5:
222
- header = . h5
223
- case . h6:
224
- header = . h6
225
- case . bullet( let indentIndex) :
226
- list = . bullet( indentIndex)
227
- indent = indentIndex
228
- case . default:
229
- header = . default
226
+ case . bold:
227
+ bold = true
228
+ case . italic:
229
+ italic = true
230
+ case . underline:
231
+ underline = true
232
+ case . strikethrough:
233
+ strike = true
234
+ case . h1:
235
+ header = . h1
236
+ case . h2:
237
+ header = . h2
238
+ case . h3:
239
+ header = . h3
240
+ case . h4:
241
+ header = . h4
242
+ case . h5:
243
+ header = . h5
244
+ case . h6:
245
+ header = . h6
246
+ case . bullet( let indentIndex) :
247
+ list = . bullet( indentIndex)
248
+ indent = indentIndex
249
+ case . default:
250
+ header = . default
230
251
}
231
252
}
232
253
return RichAttributes ( bold: bold,
233
254
italic: italic,
234
255
underline: underline,
256
+ strike: strike,
235
257
header: header,
236
258
list: list,
237
259
indent: indent
0 commit comments