rendered paste bodyflip {
var %res, %spc, %len = $len($$1-), %i = 1
while (%i <= %len) {
var %chr = $mid($1-,%i,4), %chrlen = $utf8len(%chr)
%chr = $left(%chr, %chrlen)
if (%chr == $chr(32)) {
%spc = $true | inc %i | continue
}
%chr = $flipchr(%chr)
if (%spc) { %res = %chr %res | %spc = $false }
else %res = %chr $+ %res | inc %i %chrlen
}
say %res
}
flipchr {
if (($1 == l) || ($1 == o) || ($1 == s) || $&
($1 == x) || ($1 == z)) return $lower($1)
var %p1 = b q
var %p2 = d p
var %p3 = n u
var %p4 = a $+($chr(201),$chr(144))
var %p5 = c $+($chr(201),$chr(148))
var %p6 = e $+($chr(199),$chr(157))
var %p7 = f $+($chr(201),$chr(159))
var %p8 = g $+($chr(198),$chr(131))
var %p9 = h $+($chr(201),$chr(165))
var %p10 = i $+($chr(196),$chr(177))
var %p11 = j $+($chr(201),$chr(190))
var %p12 = k $+($chr(202),$chr(158))
var %p13 = m $+($chr(201),$chr(175))
var %p14 = r $+($chr(201),$chr(185))
var %p15 = t $+($chr(202),$chr(135))
var %p16 = v $+($chr(202),$chr(140))
var %p17 = w $+($chr(202),$chr(141))
var %p18 = y $+($chr(202),$chr(142))
var %p19 = . $+($chr(203),$chr(153))
var %p20 = $chr(91) $chr(93)
var %p21 = ( )
var %p22 = $chr(123) $chr(125)
var %p23 = ? $+($chr(194),$chr(191))
var %p24 = ! $+($chr(194),$chr(161))
var %p25 = ' $chr(44)
var %p26 = < >
var %p27 = _ $+($chr(226),$chr(128),$chr(190))
var %p28 = $chr(59) $+($chr(216),$chr(155))
var %chr = $1, %i = 1
while ($($+(%,p,%i),2)) {
tokenize 32 $v1
if ($1 == %chr) return $2
if ($2 == %chr) return $1
inc %i
}
return %chr
}
utf8len {
if ($asc($1) < 128) return 1 | var %res = 1
if (($v1 >= 194) && ($v1 <= 223)) %res = 2
elseif (($v1 >= 224) && ($v1 <= 239)) %res = 3
elseif (($v1 >= 240) && ($v1 <= 243)) %res = 4
; validate the other bytes
var %i = 2
while (%i <= %res) {
if (($asc($mid($1,%i,1)) < 128) || ($v1 > 191)) {
return 1
} | inc %i
} | return %res
}