Guest User

Untitled

a guest
Dec 12th, 2018
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.80 KB | None | 0 0
  1. def parse_line (line,strip=false)
  2. #s1='\003\002\037\026\017\n'
  3. #s2='cbuion'
  4. if strip
  5. line.gsub!(/(?:\003\d{0,2}(?:,\d{0,2}){0,1})|[\002\037\026\017\n]/,'')
  6. else
  7. line = CGI::escapeHTML line
  8. spanned = false
  9. tmp = ''
  10. s = Set.new
  11. so = Set.new
  12. fg = bg = ''
  13. clst = false
  14. line.chars do |ch|
  15. case ch
  16. when "\002"
  17. s = s ^ ['b']
  18. when "\037"
  19. s = s ^ ['u']
  20. when "\026"
  21. s = s ^ ['i']
  22. when "\017"
  23. s.clear
  24. when "\003"
  25. fg='fg'
  26. bg=''
  27. clst = true
  28. when '0'..'9'
  29. if clst
  30. unless bg.eql? ''
  31. case bg.size
  32. when 4
  33. clst = false
  34. s = s + ['bg']
  35. redo
  36. when 2..3
  37. bg = bg + ch
  38. end
  39. else
  40. case fg.size
  41. when 4
  42. clst = false
  43. bg = ''
  44. s = s + ['fg']
  45. s = s - ['bg']
  46. redo
  47. when 2..3
  48. fg = fg + ch
  49. end
  50. end
  51. else
  52. tmp = tmp + ch
  53. end
  54. when ','
  55. if clst && bg.eql? ''
  56. bg = 'bg'
  57. else
  58. if s != so
  59. if spanned
  60. tmp = tmp + '</span>'
  61. else
  62. spanned = true
  63. end
  64. tmp = tmp + "<span class='#{s.to_a.join ' '}'>"
  65. end
  66. tmp = tmp + ch
  67. end
  68. else
  69. if s != so
  70. if spanned
  71. tmp = tmp + '</span>'
  72. else
  73. spanned = true
  74. end
  75. tmp = tmp + "<span class='#{s.to_a.join ' '}'>"
  76. end
  77. tmp = tmp + ch
  78. end
  79. end
  80. tmp = tmp + '</span>' if spanned
  81. end
  82. end
Add Comment
Please, Sign In to add comment