class CssBuilder

Public Class Methods

new() click to toggle source
# File lib/css_builder.rb, line 3
def initialize
  @css = ''
end

Public Instance Methods

class!(*args, &block) click to toggle source
# File lib/css_builder.rb, line 23
def class!(*args, &block)
  _start_tag(_class(args[0]), *args[1..-1], &block)
  @css
end
comment!(comment) click to toggle source
# File lib/css_builder.rb, line 11
def comment!(comment)
  css! "/* #{comment} */"
  _newline
  _newline
  @css
end
id!(*args, &block) click to toggle source
# File lib/css_builder.rb, line 18
def id!(*args, &block)
  _start_tag("##{args[0]}", *args[1..-1], &block)
  @css
end
method_missing(m, *args, &block) click to toggle source

the magic

# File lib/css_builder.rb, line 60
def method_missing(m, *args, &block)

  if block
    _start_tag(m, *args, &block)
  else
    _indent
    css! _dasherize m
    css! " : #{args.first};"
    _newline
  end
 
  @css
end
mixin!(name, *args, &block) click to toggle source
# File lib/css_builder.rb, line 40
def mixin!(name, *args, &block)
  css! _class(name)
  _args_param_values(args)
  if block
    _open
    _newline 

    self.instance_eval(&block)

    _close
    _newline
  else
    css! ";"
  end
  _newline
  @css
end
value!() click to toggle source
# File lib/css_builder.rb, line 7
def value!
  @css
end
variable!(name, value=nil) click to toggle source

enventaully move all LESS specific stuff to another file

# File lib/css_builder.rb, line 30
def variable!(name, value=nil)
  if value
    css! "@#{_dasherize name} : #{value};"
    _newline
  else
    return "@#{_dasherize name}"
  end
  @css
end

Private Instance Methods

_args_hash_values(hash) click to toggle source
# File lib/css_builder.rb, line 132
def _args_hash_values(hash)
  if hash.has_key?(:selector)
    css! hash.delete(:selector)
  end
  css! _dasherize hash.delete(:tag) if hash.has_key?(:tag)
  css! "##{hash.delete(:id)}" if hash.has_key?(:id)
  css! _class(hash.delete(:class)) if hash.has_key?(:class)
  hash.each do |k,v|
    css! ":#{_dasherize k}(#{v})"
  end
end
_args_param_values(args) click to toggle source

enventaully move all LESS specific stuff to another file

# File lib/css_builder.rb, line 146
def _args_param_values(args)
  return if args.empty?
  css! " ("

  len = args.length
  args.each_with_index do |v, idx|
    if v.is_a?(Array)
      case v.length
      when 0
      when 1
        css! "@#{_dasherize v[0]}"
      else
        css! "@#{_dasherize v[0]}: #{v[1]}"
      end
    else
      css! v
    end
    css! ", " if idx < len - 1
  end
  css! ")"
end
_args_tag_values(args) click to toggle source
# File lib/css_builder.rb, line 119
def _args_tag_values(args)
  args.each do |arg|
    case arg
    when ::Array
      _args_tag_values(arg)
      css! " "
    when ::Hash
      _args_hash_values(arg)
    else
    end
  end
end
_class(v) click to toggle source
# File lib/css_builder.rb, line 111
def _class(v)
  ".#{v.strip.gsub(/\s+/, '.')}"
end
_close() click to toggle source
# File lib/css_builder.rb, line 99
def _close
  css! "}"
end
_dasherize(v) click to toggle source
# File lib/css_builder.rb, line 115
def _dasherize(v)
  v.to_s.gsub(/_/, '-')
end
_indent() click to toggle source
# File lib/css_builder.rb, line 107
def _indent
  css! "  "
end
_newline() click to toggle source
# File lib/css_builder.rb, line 95
def _newline
  css! "\n"
end
_open() click to toggle source
# File lib/css_builder.rb, line 103
def _open
  css! " {"
end
_start_tag(value, *args, &block) click to toggle source
# File lib/css_builder.rb, line 76
def _start_tag(value, *args, &block)
  css! _dasherize(value)

  _args_tag_values(args)

  _open
  _newline 

  self.instance_eval(&block)

  _close
  _newline
  _newline
end
css!(val) click to toggle source
# File lib/css_builder.rb, line 91
def css!(val)
  @css << val
end