3

如何将日晒深色添加到coderay

我正在考虑调整alpha.rb文件,但不确定哪个 css 类定义可以替换为哪个颜色代码。

有更好的主意吗?也许存在一些开箱即用的解决方案?也发现了这个,但不知道如何使用它。

4

1 回答 1

5

下面的结果与solarized的外观非常接近,但并不完美。基本上,我将这个样式表用于 solarize并逐个选择器进行选择器,并尽我所能将其转换为Coderay 使用的样式

这是 ruby​​ 的原始曝光示例: 在此处输入图像描述

这是我能够使用 coderay 产生的结果: 在此处输入图像描述

SO:它并不完美,但会让任何想要为 Coderay 使用类似 Solarized 的“主题”的人。

这是您需要做的(对于 Rails 3 应用程序):

首先,您需要覆盖 coderay gem 中用于生成内联样式的模块。创建一个名为coderay.rb内的文件config/initializers

接下来将以下内容粘贴到config/intializers/coderay.rb您刚刚创建的文件中:

module CodeRay
  module Styles

  # A colorful theme using CSS 3 colors (with alpha channel).
  class Alpha < Style

    register_for :alpha

    code_background = '#073642'
    numbers_background = 'hsl(180,65%,90%)'
    border_color = '#c0c0c0'
    normal_color = '#d5f6f6'

    CSS_MAIN_STYLES = <<-MAIN  # :nodoc:
    .CodeRay {
      background-color:##073642;
      border:1px solid #c0c0c0;
      background: #002B36;
      color:#eee8d5;
    }
    .CodeRay pre {
      margin: 0px;
    }

    span.CodeRay { white-space: pre; border: 0px; padding: 2px; }

    table.CodeRay { border-collapse: collapse; width: 100%; padding: 2px; }
    table.CodeRay td { padding: 2px 4px; vertical-align: top; }

    .CodeRay .line-numbers {
      background-color:#d5f6f6;
      color:#808080;
      text-align:right;
      -webkit-user-select:none;
      -moz-user-select:none;
      user-select:none;
    }
    .CodeRay .line-numbers a {
      background-color:#d5f6f6;
      color:#808080;
      text-decoration:none
    }
    .CodeRay .line-numbers a:target { color:#00f !important; }
    .CodeRay .line-numbers .highlighted { color: red !important; }
    .CodeRay .line-numbers .highlighted a { color: red !important; }
    .CodeRay span.line-numbers { padding: 0px 4px; }
    .CodeRay .line { display: block; float: left; width: 100%; }
    .CodeRay .code { width: 100%; }
    MAIN

    TOKEN_COLORS = <<-'TOKENS'
    .debug{color:#fff;background:#00f}
    .annotation{color:#586E75}
    .attribute-name{color:#93A1A1}
    .attribute-value{color:#93A1A1}
    .binary{color:#509}
    .char .content{color:#d20}
    .char .delimiter{color:#710}
    .char{color:#2AA198}
    .class{color:#268BD2;font-weight:bold}
    .class-variable{color:#268BD2}
    .color{color:#eee8d5}
    .comment{color:#586E75}
    .comment .char{color:#859900}
    .comment .delimiter{color:#859900}
    .complex{color:#a08}
    .constant{color:#B58900;font-weight:bold}
    .decorator{color:#268BD2}
    .definition{color:#099;font-weight:bold}
    .delimiter{color:#000}
    .directive{color:#088;font-weight:bold}
    .doc{color:#93A1A1}
    .doc-string{color:#93A1A1;font-weight:bold}
    .doctype{color:#DC322F}
    .entity{color:#CB4B16;font-weight:bold}
    .error{color:#93A1A1;background-color:#faa}
    .escape{color:#CB4B16}
    .exception{color:#CB4B16;font-weight:bold}
    .float{color:#2AA198}
    .function{color:#268BD2;font-weight:bold}
    .global-variable{color:#268BD2}
    .hex{color:#2AA198}
    .imaginary{color:#f00}
    .include{color:#b44;font-weight:bold}
    .inline{background-color:transparent;color:#93A1A1!important}
    .inline-delimiter{font-weight:bold;color:#DC322F}
    .instance-variable{color:#268BD2}
    .integer{color:#2AA198}
    .key .char{color:#DC322F}
    .key .delimiter{color:#268BD2}
    .key{color:#859900}
    .keyword{color:#859900;font-weight:bold}
    .label{color:#93A1A1;font-weight:bold}
    .local-variable{color:#268BD2}
    .namespace{color:#859900;font-weight:bold}
    .octal{color:#2AA198}
    .operator, .predefined{color:#859900;font-weight:bold}
    .predefined-constant{color:#2AA198}
    .predefined-type{color:#DC322F;font-weight:bold}
    .preprocessor{color:#859900}
    .pseudo-class{color:#859900;font-weight:bold}
    .regexp .content{color:#2AA198}
    .regexp .delimiter{color:#DC322F}
    .regexp .modifier{color:#CB4B16}
    .regexp{background-color:transparent}
    .reserved{color:#268BD2;font-weight:bold}
    .shell .content{color:#2b2}
    .shell .delimiter{color:#161}
    .shell{background-color:transparent}
    .string .char{color:#2AA198}
    .string .content{color:#2AA198}
    .string .delimiter{color:#DC322F}
    .string .modifier{color:#2AA198}
    .string{background-color:transparent}
    .symbol .content{color:#2AA198}
    .symbol .delimiter{color:#2AA198}
    .symbol{color:#2AA198}
    .tag{color: #268BD2}
    .type{color:#DC322F;font-weight:bold}
    .value{color:#268BD2}
    .variable{color:#268BD2}
    .insert{background:transparent}
    .delete{background:transparent}
    .change{color:#CB4B16;background:transparent}
    .head{color:#CB4B16;background:transparent}
    .head .filename{color:#CB4B16}
    .delete .eyecatcher{background-color:rgba(255,0,0,0.2);border:1px solid rgba(230,0,0,0.5);margin:-1px;border-bottom:none;border-top-left-radius:5px;border-top-right-radius:5px}
    .insert .eyecatcher{background-color:rgba(0,255,0,0.2);border:1px solid rgba(0,128,0,0.5);margin:-1px;border-top:none;border-bottom-left-radius:5px;border-bottom-right-radius:5px}
    .insert .insert{color:#CB4B16;background:transparent;font-weight:bold}
    .delete .delete{color:##2AA198;background:transparent;font-weight:bold}
    .change .change{color:#CB4B16}
    .head .head{color:#CB4B16}
    TOKENS

  end

  end
end

您还将向您的应用程序添加以下 CSS(或者,如果您愿意,可以为它创建一个文件assets/stylesheetscoderay.css

pre {
  background: #002A35!important;
  color: #93A1A1!important;
}

以上会将您的代码背景设置为 solarize 使用的深色背景,并将 codeway 未注释的任何代码设置为 solarize 中使用的后备颜色。

现在只需重新启动您的应用程序。

** 同样,这并不完美,您可能希望coderay.rb在某个时候再次打开该文件并改进内容。您可以使用它来帮助:http: //jsfiddle.net/bradleygriffith/CNTw4/ **

于 2012-12-09T01:51:33.417 回答