【问题标题】:Parse, edit and output CSS in Ruby在 Ruby 中解析、编辑和输出 CSS
【发布时间】:2010-09-20 16:08:52
【问题描述】:

是否有一个 gem 可以在 Ruby 中执行 css 编辑和解析?我需要的是打开css 文件,通过选择器执行find,更改它并保存输出。最好的方法如下所示:

draft = CSSParser.load('structure.css')
draft.find('#header a').style('color', '#333')
draft.render

最合适的方法是什么?

【问题讨论】:

    标签: ruby-on-rails css ruby


    【解决方案1】:

    我采取了一些措施来解决我的问题。目前以下代码能够改变 CSS,尽管它缺少漂亮的查找线 draft.find('#header a').style('color', '#333')

    CSS:

    $red: #900;
    
    #hello_world a{
      font-size: 1pt + 3pt;
    
      &:hover{ color: $red + #333 }
    
      color: #444333;
    }
    

    代码:

    require 'rubygems'
    require 'haml'
    require 'sass'
    
    def get_file_as_string(filename)
      data = ''
      File.open(filename, "r").each_line {|line| data += line}
      data
    end
    
    engine = Sass::Engine.new(template, :syntax => :scss)
    result, extends = engine.to_tree.perform(Sass::Environment.new).cssize
    
    @x = result.children[1] # nice search method should be here
    
    class Sass::Tree::RuleNode
      def set_property(property, value)
        prop = self.children.first{|child| child.class == 'Sass::Tree::PropNode' && child.instance_variable_get(:@resolved_name) == property }
        prop.instance_variable_set(:@resolved_value, value)
      end
    end
    
    @x.set_property('color', '#362')
    
    puts result.to_s
    

    【讨论】:

      【解决方案2】:

      Google Code 上的ruby-css-parser 看起来很有希望。

      他们的示例页面展示了解析和操作 CSS 选择器。

      【讨论】:

      • 不确定它是否能够更改 CSS 文件中的某些内容。 Concat - 是的,但是编辑呢?
      【解决方案3】:

      试试Sass(语法上很棒的样式表)。

      我正在使用它,它很棒!

      【讨论】:

      • Sass 目前无法修改 css 文件,- 只能解析。
      • 我不知道你在做什么,但在我的项目中,每个客户都有一个不同的带有公司颜色的 css,而且它是 100% sass。也许你的需求比我的更复杂。
      【解决方案4】:

      Sass 确实包含一个 CSS->Sass 转换器,您可以创建“混合”和变量以在您的样式表中使用。我知道这并不完全符合您的要求,但根据您的尝试,这可能是一个更好的解决方案。

      否则,看起来 ruby​​-css-parser 与您将获得的一样接近,而无需自己编写一些东西。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-19
        • 2022-11-10
        • 1970-01-01
        • 2019-03-08
        • 1970-01-01
        • 1970-01-01
        • 2020-12-14
        • 2011-08-27
        相关资源
        最近更新 更多