class Css2Stylus::Converter
Public Class Methods
new(css=nil)
click to toggle source
# File lib/css2stylus.rb, line 5 def initialize(css=nil) if not css.nil? @css = css end end
Public Instance Methods
get()
click to toggle source
# File lib/css2stylus.rb, line 22 def get return @stylus end
process()
click to toggle source
# File lib/css2stylus.rb, line 11 def process @stylus = '' if @css.nil? || @css.empty? return @stylus end @tree = {} generate_tree render return true end
Private Instance Methods
add_rule(tree, selectors, style)
click to toggle source
# File lib/css2stylus.rb, line 28 def add_rule(tree, selectors, style) return if style.nil? || style.empty? if selectors.empty? (tree[:style] ||= '') << style else first, rest = selectors.first, selectors[1..-1] node = (tree[first] ||= {}) add_rule(node, rest, style) end end
generate_tree()
click to toggle source
# File lib/css2stylus.rb, line 39 def generate_tree @css.split("\n").map { |line| line.strip }.join.gsub(/\/\*+[^\*]*\*+\//, '').split(/[\{\}]/).each_slice(2) do |style| rules = style[0].strip if rules.include?(',') add_rule(@tree, [rules], style[1]) else add_rule(@tree, rules.split(/\s+/), style[1]) end end end
render(tree=nil, indent=0)
click to toggle source
# File lib/css2stylus.rb, line 50 def render(tree=nil, indent=0) if tree.nil? tree = @tree end tree.each do |element, children| @stylus = @stylus + ' ' * indent + element + "\n" style = children.delete(:style) if style @stylus = @stylus + style.split(';').map { |s| s.strip }.reject { |s| s.empty? }.map { |s| ' ' * (indent + 2) + s.gsub(/:(\s)*/, ' ') }.join("\n") + "\n" end render(children, indent + 2) end end