Стиль CodeRay испортил - как исправить

Я пытаюсь использовать CodeRay в своем проекте, и он, кажется, работает, однако стиль и форматирование, кажется, перепутаны:

Кодер испортил код

Обратите внимание, что я использую CodeRay в сочетании с Markdown (Redcarpet). Я добавил оба драгоценных камня в свой гемфайл и в app/helpers/application_helper.rb Я добавил следующее:

class CodeRayify < Redcarpet::Render::HTML
    def block_code(code, language)
        CodeRay.scan(code, language).div(:line_numbers => :inline)
    end
end

def markdown(text)
    coderayified = CodeRayify.new(:filter_html => true, :hard_wrap => true)

    language ||= :plaintext

    options = {
        :fenced_code_blocks => true,
        :no_intra_emphasis => false,
        :autolink => true,
        :strikethrough => true,
        :lax_html_blocks => true,
        :superscript => true
    }

    markdown_to_html = Redcarpet::Markdown.new(coderayified, options)
    markdown_to_html.render(text).html_safe
end

Который работает, как вы можете видеть на прикрепленном скриншоте. Проблема заключается в форматировании. Есть идеи?

2 ответа

Решение

Я также заметил, что текущий CSS, поставляемый с репозиторием CodeRay, не очень хорошо реагирует на разработку для мобильных устройств / планшетов.

Чтобы исправить, выполните следующие действия:

1. Добавьте это в свой CSS:

/ * Отображение полосы прокрутки * /

::-webkit-scrollbar {
    -webkit-appearance: none;
    margin-top: 10px;
    width: 7px;
    height: 8px;
    background-color: #eee;
    border-radius: 4px;
}

::-webkit-scrollbar-thumb {
    border-radius: 4px;
    height: 10px;
    background-color: rgba(0,0,0,.5);
    -webkit-box-shadow: 0 0 1px rgba(255,255,255,.5);
}

2. В файле помощника приложения для параметров CodeRay убедитесь, что для параметров block_code:line_numbers установлено значение:inline, как показано ниже:

Класс CodeRayify

    def block_code(code, language)
        CodeRay.scan(code, language).div(:line_numbers => :inline)
    end
end

Вы пытались использовать таблицу для line_numbers вместо inline?

module ApplicationHelper
 class CodeRayify < Redcarpet::Render::HTML
  def block_code(code, language)
    CodeRay.scan(code, language).div(:line_numbers => :table)
  end
end

def markdown(text)
  coderayified = CodeRayify.new(:filter_html => true, 
                                :hard_wrap => true)
  options = {
    :fenced_code_blocks => true,
    :no_intra_emphasis => true,
    :autolink => true,
    :strikethrough => true,
    :lax_html_blocks => true,
    :superscript => true
  }
  markdown_to_html = Redcarpet::Markdown.new(coderayified, options)
  markdown_to_html.render(text).html_safe
 end
end
Другие вопросы по тегам