;
; $strcc2html / String control codes to HTML
; by Spoofing @ RusNet IRC Network
;
; Using: $strcc2html(string[,char])[.rawmsg]
; string - string for convert to HTML
; char = ASCII number (1-255) for replacing space ($chr(32)) into , default is 10 ($chr(10) / $lf / LF)
;
; .rawmsg - If you using it for $rawmsg for save spaces :)
; * Example: on *:TEXT:*:#:write log.html $+(<,$nick,>) $strcc2html($rawmsg).rawmsg
;
; Replaces:
; "&" to "&"
; "<" to "<"
; ">" to ">"
;
; Features:
; Multiple spaces.
; * Example: " " (5 spaces) to " " (3 spaces and 2 )
;
; Greets:
; Thanks to jaytea for idea about $lf instead $chr(160). http://trout.snt.utwente.nl/ubbthreads/ubbthreads.php?ubb=showflat&Board=5&Number=227154
alias strcc2html {
bset -t &stdin 1 $replacex($1,$chr(32),$iif($2,$chr($v1),$lf),&,&,<,<,>,>) $+ $chr(15)
breplace &stdin $iif($2,$v1,10) 32
if ($prop == rawmsg) bcopy -c &stdin 1 &stdin $calc($bfind(&stdin,0,32 58) + 2) -1
if ($bvar(&stdin,0)) {
var %i = 1, %0 = $v1, %^B = $false, %^K = $false, %^R = $false, %^I = $false, %^U = $false, %nbsp = 0
while (%i <= %0) {
var %char = $bvar(&stdin,%i), %i = %i + 1
if (%char == 2) {
var %^B = $iif(%^B,$false,$true)
bset -t &stdout $calc($bvar(&stdout,0) + 1) $iif(%^B,,)
}
elseif (%char == 3) {
var %text, %style
if (%^K) {
var %^K = $false
bset -t &stdout $calc($bvar(&stdout,0) + 1)
}
if ($bvar(&stdin,%i) isnum 48-57) var %text = $base($chr($v1),10,10,2), %i = %i + 1
if ($bvar(&stdin,%i) isnum 48-57) var %text = $base($+(%text,$chr($v1)),10,10,2), %i = %i + 1
if ($bvar(&stdin,%i) == 44) {
var %i = %i + 1, %background
if ($bvar(&stdin,%i) isnum 48-57) var %background = $base($chr($v1),10,10,2), %i = %i + 1
if ($bvar(&stdin,%i) isnum 48-57) var %background = $base($+(%background,$chr($v1)),10,10,2), %i = %i + 1
}
if (%text) var %color = $base($color($v1),10,16,6), %style = $+(color:#,$mid(%color,5,2),$mid(%color,3,2),$mid(%color,1,2))
if (%background) var %background-color = $base($color($v1),10,16,6), %style = $+(%style,;background-color:#,$mid(%background-color,5,2),$mid(%background-color,3,2),$mid(%background-color,1,2))
if (%style) {
var %^K = $true
bset -t &stdout $calc($bvar(&stdout,0) + 1)
}
}
elseif (%char == 15) {
if (%^B) {
var %^B = $false
bset -t &stdout $calc($bvar(&stdout,0) + 1)
}
if (%^K) {
var %^K = $false, %background
bset -t &stdout $calc($bvar(&stdout,0) + 1)
}
if (%^R) {
var %^R = $false
bset -t &stdout $calc($bvar(&stdout,0) + 1)
}
if (%^I) {
var %^I = $false
bset -t &stdout $calc($bvar(&stdout,0) + 1)
}
if (%^U) {
var %^U = $false
bset -t &stdout $calc($bvar(&stdout,0) + 1)
}
}
elseif (%char == 22) {
var %text = $base($color($color(Background)),10,16,6), %background = $base($color($color(Normal text)),10,16,6), %^R = $iif(%^R,$false,$true)
bset -t &stdout $calc($bvar(&stdout,0) + 1) $iif(%^R,,)
}
elseif (%char == 29) {
var %^I = $iif(%^I,$false,$true)
bset -t &stdout $calc($bvar(&stdout,0) + 1) $iif(%^I,,)
}
elseif (%char == 31) {
var %^U = $iif(%^U,$false,$true)
bset -t &stdout $calc($bvar(&stdout,0) + 1) $iif(%^U,,)
}
elseif (%char == 32) {
var %nbsp = %nbsp + 1
if (2 \\ %nbsp) {
bset &stdout $calc($bvar(&stdout,0) + 1) 32
}
else {
bset -t &stdout $calc($bvar(&stdout,0) + 1)
}
}
else {
var %nbsp = 0
bset &stdout $calc($bvar(&stdout,0) + 1) %char
}
}
return $bvar(&stdout,1-).text
}
}