Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def parse_line (line,strip=false)
- #s1='\003\002\037\026\017\n'
- #s2='cbuion'
- if strip
- line.gsub!(/(?:\003\d{0,2}(?:,\d{0,2}){0,1})|[\002\037\026\017\n]/,'')
- else
- line = CGI::escapeHTML line
- spanned = false
- tmp = ''
- s = Set.new
- so = Set.new
- fg = bg = ''
- clst = false
- line.chars do |ch|
- case ch
- when "\002"
- s = s ^ ['b']
- when "\037"
- s = s ^ ['u']
- when "\026"
- s = s ^ ['i']
- when "\017"
- s.clear
- when "\003"
- fg='fg'
- bg=''
- clst = true
- when '0'..'9'
- if clst
- unless bg.eql? ''
- case bg.size
- when 4
- clst = false
- s = s + ['bg']
- redo
- when 2..3
- bg = bg + ch
- end
- else
- case fg.size
- when 4
- clst = false
- bg = ''
- s = s + ['fg']
- s = s - ['bg']
- redo
- when 2..3
- fg = fg + ch
- end
- end
- else
- tmp = tmp + ch
- end
- when ','
- if clst && bg.eql? ''
- bg = 'bg'
- else
- if s != so
- if spanned
- tmp = tmp + '</span>'
- else
- spanned = true
- end
- tmp = tmp + "<span class='#{s.to_a.join ' '}'>"
- end
- tmp = tmp + ch
- end
- else
- if s != so
- if spanned
- tmp = tmp + '</span>'
- else
- spanned = true
- end
- tmp = tmp + "<span class='#{s.to_a.join ' '}'>"
- end
- tmp = tmp + ch
- end
- end
- tmp = tmp + '</span>' if spanned
- end
- end
Add Comment
Please, Sign In to add comment