2010-09-20 46 views
4

是否有在Ruby中執行css編輯和解析的gem?我需要的是打開css文件,通過選擇器執行find,對其進行修改並保存輸出。最好的辦法如下:在Ruby中解析,編輯和輸出CSS

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

什麼是最合適的方式做到這一點?

回答

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 
0

ruby-css-parser谷歌代碼看起來很有希望。

他們的示例頁面顯示瞭解析和操作CSS選擇器。

+0

不知道,如果是能夠改變CSS裏面的東西文件。 Concat - 是的,但是編輯怎麼樣? – gmile 2010-09-20 17:07:35

0

嘗試Sass(Sintactically Awesome StyleSheets)。

我正在使用它,它太棒了!

+0

Sass目前無法改變css文件, - 它只能解析。 – gmile 2010-09-20 17:08:19

+0

我不知道你在做什麼,但是在我的項目中,每個客戶都有不同的法人顏色的CSS,並且它是100%sass。也許你的需求比我的複雜。 – pablorc 2010-09-21 08:33:57

0

Sass包含CSS-> Sass轉換器,您可以創建'mixins'和變量以在您的樣式表中使用。我知道這不是你所要求的,但取決於你想要做什麼,這可能是一個更好的解決方案。

否則,它看起來像ruby-css解析器是一樣親密,你會得到,而無需自己寫一些東西。