All pastes #784481 Raw Edit

Stuff

public text v1 · immutable
·published 2007-11-19 18:38 UTC
rendered paste body
flip {
  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
}