@@ -67,18 +67,33 @@ extension AttributedStringWrapper where Base: NSTextField {
6767 /// - checking: 检查类型
6868 /// - highlights: 高亮样式
6969 /// - callback: 触发回调
70- public func observe( _ checking: Checking , highlights: [ Highlight ] = . defalut, with callback: @escaping ( Checking . Result ) -> Void ) {
70+ public func observe( _ checking: Checking ,
71+ highlights: [ Highlight ] = . defalut,
72+ with callback: @escaping ( Checking . Result ) -> Void ) {
7173 observe ( [ checking] , highlights: highlights, with: callback)
7274 }
73-
7475 /// 添加监听
7576 /// - Parameters:
7677 /// - checkings: 检查类型
7778 /// - highlights: 高亮样式
7879 /// - callback: 触发回调
79- public func observe( _ checkings: [ Checking ] = . defalut, highlights: [ Highlight ] = . defalut, with callback: @escaping ( Checking . Result ) -> Void ) {
80+ public func observe( _ checkings: [ Checking ] = . defalut,
81+ highlights: [ Highlight ] = . defalut,
82+ with callback: @escaping ( Checking . Result ) -> Void ) {
83+ var temp = base. checkings
84+ checkings. forEach { temp [ $0] = ( highlights, { callback ( $0. 1 ) } ) }
85+ base. checkings = temp
86+ }
87+ /// 添加监听
88+ /// - Parameters:
89+ /// - checkings: 检查类型
90+ /// - highlights: 高亮样式
91+ /// - callback: 触发回调
92+ public func observe( _ checkings: [ Checking ] = . defalut,
93+ highlights: [ Highlight ] = . defalut,
94+ with callback: @escaping ( NSRange , Checking . Result ) -> Void ) {
8095 var temp = base. checkings
81- checkings. forEach { temp [ $0] = ( highlights, callback) }
96+ checkings. forEach { temp [ $0] = ( highlights, { callback ( $0 . 0 , $0 . 1 ) } ) }
8297 base. checkings = temp
8398 }
8499
@@ -120,16 +135,16 @@ extension AttributedStringWrapper where Base: NSTextField {
120135 case . action( let result) :
121136 guard var action = actions [ range] else { return }
122137 action. handle = {
123- action. callback ( result)
124- checkings [ type] ? . 1 ( . action( result) )
138+ action. callback ( . init ( range : range , content : result) )
139+ checkings [ type] ? . 1 ( ( range , . action( result) ) )
125140 }
126141 base. actions [ range] = action
127142
128143 default :
129144 guard let value = checkings [ type] else { return }
130145 var action = Action ( . click, highlights: value. 0 )
131146 action. handle = {
132- value. 1 ( result)
147+ value. 1 ( ( range , result) )
133148 }
134149 base. actions [ range] = action
135150 }
@@ -178,7 +193,7 @@ extension NSTextField {
178193 fileprivate typealias Action = AttributedString . Action
179194 fileprivate typealias Checking = AttributedString . Checking
180195 fileprivate typealias Highlight = AttributedString . Action . Highlight
181- fileprivate typealias Checkings = [ Checking : ( [ Highlight ] , ( Checking . Result ) -> Void ) ]
196+ fileprivate typealias Checkings = [ Checking : ( [ Highlight ] , ( ( NSRange , Checking . Result ) ) -> Void ) ]
182197
183198 /// 是否启用Action
184199 fileprivate var isActionEnabled : Bool {
0 commit comments