@@ -130,19 +130,30 @@ notice_max_size(Id, Msgtarget) ->
130130% % Command: NOTICE
131131% % Parameters: <msgtarget> <text to be sent>
132132
133- notice (Id , Recv , Text ) -> notice (Id , Recv , Text , { truncate , ? DEFAULT_TRUNC }).
133+ notice (Id , Recv , Text ) -> notice (Id , Recv , Text , #{ mode => truncate }).
134134
135135
136- notice (Id , Recv , Text , {truncate , Ellipsis }) ->
137- MaxSize = notice_max_size (Id , Recv ),
138- TruncText = irc_text :truncate (clean_up (Text ), MaxSize , Ellipsis ),
139- {message , #{command => privmsg ,
136+ notice (Id , Recv , Text , #{mode := truncate } = Opts ) ->
137+ Ellipsis = maps :get (ellipsis , Opts , ? DEFAULT_TRUNC ),
138+ Max = notice_max_size (Id , Recv ),
139+ Out = irc_text :truncate (clean_up (Text ), Max , Ellipsis ),
140+ {message , #{command => notice ,
141+ receiver => Recv ,
142+ message => irc_command :notice (Recv , Out )}};
143+
144+ notice (Id , Recv , Texts , #{mode := fractional } = Opts ) ->
145+ Ellipsis = maps :get (ellipsis , Opts , ? DEFAULT_TRUNC ),
146+ Max = notice_max_size (Id , Recv ),
147+ Ts = [{F , clean_up (T )} || {F , T } <- Texts ],
148+ Out = irc_text :fractional_truncate (Ts , Max , Ellipsis ),
149+ {message , #{command => notice ,
140150 receiver => Recv ,
141- message => irc_command :notice (Recv , TruncText )}};
151+ message => irc_command :notice (Recv , Out )}};
152+
142153notice (Id , Recv , Text , divide ) ->
143154 MaxSize = notice_max_size (Id , Recv ),
144155 TextList = irc_text :divide (clean_up (Text ), MaxSize ),
145- F = fun (X ) -> {message , #{command => privmsg ,
156+ F = fun (X ) -> {message , #{command => notice ,
146157 receiver => Recv ,
147158 message => irc_command :notice (Recv , X )}}
148159 end ,
@@ -178,18 +189,29 @@ privmsg_max_size(Id, Msgtarget) ->
178189% % Command: PRIVMSG
179190% % Parameters: <msgtarget> <text to be sent>
180191
181- privmsg (Id , Recv , Text ) -> privmsg (Id , Recv , Text , { truncate , ? DEFAULT_TRUNC }).
192+ privmsg (Id , Recv , Text ) -> privmsg (Id , Recv , Text , #{ mode => truncate }).
182193
183194
184- privmsg (Id , Recv , Text , {truncate , Ellipsis }) ->
185- MaxSize = privmsg_max_size (Id , Recv ),
186- TruncText = irc_text :truncate (clean_up (Text ), MaxSize , Ellipsis ),
195+ privmsg (Id , Recv , Text , #{mode := truncate } = Opts ) ->
196+ Ellipsis = maps :get (ellipsis , Opts , ? DEFAULT_TRUNC ),
197+ Max = privmsg_max_size (Id , Recv ),
198+ Out = irc_text :truncate (clean_up (Text ), Max , Ellipsis ),
187199 {message , #{command => privmsg ,
188200 receiver => Recv ,
189- message => irc_command :privmsg (Recv , TruncText )}};
190- privmsg (Id , Recv , Text , divide ) ->
191- MaxSize = privmsg_max_size (Id , Recv ),
192- TextList = irc_text :divide (clean_up (Text ), MaxSize ),
201+ message => irc_command :privmsg (Recv , Out )}};
202+
203+ privmsg (Id , Recv , Texts , #{mode := fractional } = Opts ) ->
204+ Ellipsis = maps :get (ellipsis , Opts , ? DEFAULT_TRUNC ),
205+ Max = privmsg_max_size (Id , Recv ),
206+ Ts = [{F , clean_up (T )} || {F , T } <- Texts ],
207+ Out = irc_text :fractional_truncate (Ts , Max , Ellipsis ),
208+ {message , #{command => privmsg ,
209+ receiver => Recv ,
210+ message => irc_command :privmsg (Recv , Out )}};
211+
212+ privmsg (Id , Recv , Text , #{mode := divide }) ->
213+ Max = privmsg_max_size (Id , Recv ),
214+ TextList = irc_text :divide (clean_up (Text ), Max ),
193215 F = fun (X ) -> {message , #{command => privmsg ,
194216 receiver => Recv ,
195217 message => irc_command :privmsg (Recv , X )}}
@@ -198,8 +220,8 @@ privmsg(Id, Recv, Text, divide) ->
198220
199221
200222ctcp_action (Id , Target , Text ) ->
201- MaxSize = privmsg_max_size (Id , Target ) - 9 ,
202- TruncText = irc_text :truncate (clean_up (Text ), MaxSize , ? DEFAULT_TRUNC ),
223+ Max = privmsg_max_size (Id , Target ) - 9 ,
224+ Out = irc_text :truncate (clean_up (Text ), Max , ? DEFAULT_TRUNC ),
203225 {message , #{command => privmsg ,
204226 receiver => Target ,
205- message => irc_command :ctcp_action (Target , TruncText )}}.
227+ message => irc_command :ctcp_action (Target , Out )}}.
0 commit comments