是否有在Ruby中執行css編輯和解析的gem?我需要的是打開css
文件,通過選擇器執行find
,對其進行修改並保存輸出。最好的辦法如下:在Ruby中解析,編輯和輸出CSS
draft = CSSParser.load('structure.css')
draft.find('#header a').style('color', '#333')
draft.render
什麼是最合適的方式做到這一點?
是否有在Ruby中執行css編輯和解析的gem?我需要的是打開css
文件,通過選擇器執行find
,對其進行修改並保存輸出。最好的辦法如下:在Ruby中解析,編輯和輸出CSS
draft = CSSParser.load('structure.css')
draft.find('#header a').style('color', '#333')
draft.render
什麼是最合適的方式做到這一點?
我爲解決我的問題做了一些步驟。目前,下面的代碼是能夠改變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
ruby-css-parser谷歌代碼看起來很有希望。
他們的示例頁面顯示瞭解析和操作CSS選擇器。
Sass包含CSS-> Sass轉換器,您可以創建'mixins'和變量以在您的樣式表中使用。我知道這不是你所要求的,但取決於你想要做什麼,這可能是一個更好的解決方案。
否則,它看起來像ruby-css解析器是一樣親密,你會得到,而無需自己寫一些東西。
不知道,如果是能夠改變CSS裏面的東西文件。 Concat - 是的,但是編輯怎麼樣? – gmile 2010-09-20 17:07:35