Экранированный код ANSI с HTML-тегами в Ruby? - PullRequest
4 голосов
/ 04 февраля 2011

Интересно, что в Ruby есть встроенный код ESCI .

Существует также более мощная версия от самоцвета .

К сожалению, эти журналы выводятся на консоль. Мой текст отображается на странице, поэтому мне нужны HTML-теги, чтобы обернуть вокруг него текст.

Ребята, вы не знаете, как это сделать?

Ответы [ 2 ]

5 голосов
/ 23 марта 2011

Полагаю, вам нужно преобразовать escape-символы в HTML.

Я сделал это один раз, предположив следующий хэш кода / цвета для escape-символов:

{ :reset          =>  0,
  :bright         =>  1,
  :dark           =>  2,
  :underline      =>  4,
  :blink          =>  5,
  :negative       =>  7,
  :black          => 30,
  :red            => 31,
  :green          => 32,
  :yellow         => 33,
  :blue           => 34,
  :magenta        => 35,
  :cyan           => 36,
  :white          => 37,
  :back_black     => 40,
  :back_red       => 41,
  :back_green     => 42,
  :back_yellow    => 43,
  :back_blue      => 44,
  :back_magenta   => 45,
  :back_cyan      => 46,
  :back_white     => 47}

То, что я сделал, было следующим преобразованием (далеко не оптимизированным):

def escape_to_html(data)
  { 1 => :nothing,
    2 => :nothing,
    4 => :nothing,
    5 => :nothing,
    7 => :nothing,
    30 => :black,
    31 => :red,
    32 => :green,
    33 => :yellow,
    34 => :blue,
    35 => :magenta,
    36 => :cyan,
    37 => :white,
    40 => :nothing,
    41 => :nothing,
    43 => :nothing,
    44 => :nothing,
    45 => :nothing,
    46 => :nothing,
    47 => :nothing,
  }.each do |key, value|
    if value != :nothing
      data.gsub!(/\e\[#{key}m/,"<span style=\"color:#{value}\">")
    else
      data.gsub!(/\e\[#{key}m/,"<span>")
    end
  end
  data.gsub!(/\e\[0m/,'</span>')
  return data
end

Ну, вам нужно будет заполнить пробелы цветов, которые я не рассматриваю, или фонов. Но я думаю, вы можете понять эту идею.

Надеюсь, это поможет

2 голосов
/ 04 февраля 2011

Спасибо за ссылку на крутой драгоценный камень, которого я не видел. Я думаю, что то, что вы ищете, называется Cascading Style Sheets (CSS). Поскольку этот поиск в Google будет отображать все остальные страницы, кэшированные в Интернете, вот несколько ссылок для вас, с которых следует начать:

* SASS - это рубиновая абстракция CSS, используемая очень часто с ruby ​​/ rails

...