@@ -66,19 +66,30 @@ multi method irc-privmsg-channel($msg where .args[1] ~~ / ^ ‘.u’ \s (.*)/) {
66
66
self . irc-to-me($ msg )
67
67
}
68
68
69
- method get-description ($ ord ) {
69
+ multi method codepointify (Int $ ord ) { $ ord . fmt (“ U+%04X” ) }
70
+ multi method codepointify (Str $ char ) { $ char . ords ». fmt (“ U+%04X” ). join : ‘ , ’ }
71
+
72
+ method sanify ($ ord ) {
70
73
my $ char ;
71
74
try {
72
75
$ char = $ ord . chr ;
73
- CATCH { default { return sprintf “ U+%04X (invalid codepoint)” , $ ord } }
76
+ CATCH { default { return “ { self . codepointify( $ ord ) } (invalid codepoint)” } }
74
77
}
75
- $ char = ‘ ◌’ ~ $ ord . chr if $ ord . uniprop . starts-with : ‘ M’ ; # TODO ask samcv
76
78
try {
77
79
$ char . encode;
78
- CATCH { default { $ char = ‘ unencodable character’ } }
80
+ CATCH { default { return ‘ unencodable character’ } }
79
81
}
82
+ $ char = ‘ ◌’ ~ $ ord . chr if $ ord . uniprop . starts-with : ‘ M’ ; # TODO ask samcv
80
83
$ char = ‘ control character’ if $ ord . uniprop eq ‘ Cc’ ;
81
- sprintf “ U+%04X % s [% s ] (% s )” , $ ord , $ ord . uniname , $ ord . uniprop , $ char
84
+ $ char
85
+ }
86
+
87
+ method get-description ($ ord ) {
88
+ my $ sane = self . sanify($ ord );
89
+ return $ sane if $ sane . ends-with (‘ )’ );
90
+ sprintf “ % s % s [% s ] (% s )” ,
91
+ self . codepointify($ ord ), $ ord . uniname ,
92
+ $ ord . uniprop , self . sanify($ ord )
82
93
}
83
94
84
95
method from-numerics ($ query ) {
@@ -203,7 +214,7 @@ method propdump($msg, $query) {
203
214
for @ prop-table -> $ category {
204
215
$ answer ~ = sprintf “ \n ### % s\n ” , $ category . key ;
205
216
$ answer ~ = sprintf ‘ | %-55s |’ , ‘ Property names’ ;
206
- $ answer ~ = . fmt : ‘ %-25s |’ for @ query . map : -> $ char { “ Value: { & escape ($ char . chr )} ” };
217
+ $ answer ~ = . fmt : ‘ %-25s |’ for @ query . map : -> $ char { “ Value: { & escape (self . sanify : $ char )} ” };
207
218
$ answer ~ = “ \n ” ;
208
219
$ answer ~ = “ |{ ‘ -’ x 57 } |” ;
209
220
$ answer ~ = “ { ‘ -’ x 27 } |” x @ query ;
@@ -212,7 +223,7 @@ method propdump($msg, $query) {
212
223
my @ props = @ query . map : *. uniprop : $ cat [0 ];
213
224
my $ bold = ([eq ] @ props ) ?? 「 」 !! 「 **」 ;
214
225
$ answer ~ = ($ bold ~ $ cat . join (‘ , ’ ) ~ $ bold ). fmt : ‘ | %-55s |’ ;
215
- $ answer ~ = & escape ($ _ ). fmt : ‘ %-25s |’ for @ props ;
226
+ $ answer ~ = & escape (. comb » . ords . flat . map ({ self . sanify( $ _ )}) . join ). fmt : ‘ %-25s |’ for @ props ;
216
227
$ answer ~ = “ \n ” ;
217
228
}
218
229
}
0 commit comments