style_train 0.2.1 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
 - data/lib/style_train/color.rb +13 -1
 - data/lib/style_train/color_types/color_type.rb +23 -8
 - data/lib/style_train/sheet.rb +104 -1
 - data/lib/style_train/theme.rb +20 -4
 - data/spec/color/color_spec.rb +28 -0
 - data/spec/color/color_type_spec.rb +22 -3
 - data/spec/sheet_spec.rb +174 -0
 - data/spec/theme_spec.rb +47 -7
 - data/style_train.gemspec +2 -2
 - metadata +4 -4
 
    
        data/VERSION
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            0.2. 
     | 
| 
      
 1 
     | 
    
         
            +
            0.2.3
         
     | 
    
        data/lib/style_train/color.rb
    CHANGED
    
    | 
         @@ -82,7 +82,19 @@ module StyleTrain 
     | 
|
| 
       82 
82 
     | 
    
         | 
| 
       83 
83 
     | 
    
         
             
                  self.background_set = true
         
     | 
| 
       84 
84 
     | 
    
         
             
                  @background  
         
     | 
| 
       85 
     | 
    
         
            -
                end 
     | 
| 
      
 85 
     | 
    
         
            +
                end
         
     | 
| 
      
 86 
     | 
    
         
            +
                
         
     | 
| 
      
 87 
     | 
    
         
            +
                def step(end_color, steps=10)
         
     | 
| 
      
 88 
     | 
    
         
            +
                  start_color = self.delegate
         
     | 
| 
      
 89 
     | 
    
         
            +
                  end_color = end_color.delegate
         
     | 
| 
      
 90 
     | 
    
         
            +
                  array = [start_color]
         
     | 
| 
      
 91 
     | 
    
         
            +
                  (2..(steps-1)).each do |number|
         
     | 
| 
      
 92 
     | 
    
         
            +
                    ratio = 1 - (steps-number)/steps.to_f
         
     | 
| 
      
 93 
     | 
    
         
            +
                    array << start_color.mix(end_color, ratio)
         
     | 
| 
      
 94 
     | 
    
         
            +
                  end
         
     | 
| 
      
 95 
     | 
    
         
            +
                  array << end_color
         
     | 
| 
      
 96 
     | 
    
         
            +
                  array
         
     | 
| 
      
 97 
     | 
    
         
            +
                end    
         
     | 
| 
       86 
98 
     | 
    
         | 
| 
       87 
99 
     | 
    
         
             
                def render(render_style=nil) 
         
     | 
| 
       88 
100 
     | 
    
         
             
                  if render_style && render_style.to_sym == :ie
         
     | 
| 
         @@ -87,12 +87,13 @@ module StyleTrain 
     | 
|
| 
       87 
87 
     | 
    
         
             
                end 
         
     | 
| 
       88 
88 
     | 
    
         | 
| 
       89 
89 
     | 
    
         
             
                # blending
         
     | 
| 
       90 
     | 
    
         
            -
                def mix( color )
         
     | 
| 
      
 90 
     | 
    
         
            +
                def mix( color, mix_ratio=0.5 )
         
     | 
| 
      
 91 
     | 
    
         
            +
                  mix_ratio = 1-mix_ratio
         
     | 
| 
       91 
92 
     | 
    
         
             
                  mixed = self.dup
         
     | 
| 
       92 
     | 
    
         
            -
                  mixed.r =  
     | 
| 
       93 
     | 
    
         
            -
                  mixed.g =  
     | 
| 
       94 
     | 
    
         
            -
                  mixed.b =  
     | 
| 
       95 
     | 
    
         
            -
                  mixed.alpha =  
     | 
| 
      
 93 
     | 
    
         
            +
                  mixed.r = ratio(self.r, color.r, mix_ratio)
         
     | 
| 
      
 94 
     | 
    
         
            +
                  mixed.g = ratio(self.g, color.g, mix_ratio)
         
     | 
| 
      
 95 
     | 
    
         
            +
                  mixed.b = ratio(self.b, color.b, mix_ratio)
         
     | 
| 
      
 96 
     | 
    
         
            +
                  mixed.alpha = ratio(self.alpha, color.alpha, mix_ratio, false)
         
     | 
| 
       96 
97 
     | 
    
         
             
                  mixed.build
         
     | 
| 
       97 
98 
     | 
    
         
             
                  mixed
         
     | 
| 
       98 
99 
     | 
    
         
             
                end
         
     | 
| 
         @@ -109,13 +110,27 @@ module StyleTrain 
     | 
|
| 
       109 
110 
     | 
    
         
             
                end
         
     | 
| 
       110 
111 
     | 
    
         | 
| 
       111 
112 
     | 
    
         
             
                def self.blend(first, second, ratio) 
         
     | 
| 
       112 
     | 
    
         
            -
                   
     | 
| 
      
 113 
     | 
    
         
            +
                  ratio(first, second, ratio)
         
     | 
| 
       113 
114 
     | 
    
         
             
                end    
         
     | 
| 
       114 
115 
     | 
    
         | 
| 
       115 
116 
     | 
    
         
             
                def self.average(first, second, round=true)
         
     | 
| 
       116 
     | 
    
         
            -
                   
     | 
| 
       117 
     | 
    
         
            -
             
     | 
| 
      
 117 
     | 
    
         
            +
                  ratio(first, second, round)
         
     | 
| 
      
 118 
     | 
    
         
            +
                end
         
     | 
| 
      
 119 
     | 
    
         
            +
                
         
     | 
| 
      
 120 
     | 
    
         
            +
                def self.ratio(first, second, first_ratio=0.5, round=true)
         
     | 
| 
      
 121 
     | 
    
         
            +
                  second_ratio = 1-first_ratio
         
     | 
| 
      
 122 
     | 
    
         
            +
                  value = first*first_ratio + second*second_ratio
         
     | 
| 
      
 123 
     | 
    
         
            +
                  round ? value.round : value 
         
     | 
| 
      
 124 
     | 
    
         
            +
                end
         
     | 
| 
      
 125 
     | 
    
         
            +
                
         
     | 
| 
      
 126 
     | 
    
         
            +
                def ratio *args
         
     | 
| 
      
 127 
     | 
    
         
            +
                  self.class.ratio *args
         
     | 
| 
      
 128 
     | 
    
         
            +
                end 
         
     | 
| 
      
 129 
     | 
    
         
            +
              
         
     | 
| 
      
 130 
     | 
    
         
            +
                def average *args
         
     | 
| 
      
 131 
     | 
    
         
            +
                  self.class.average *args
         
     | 
| 
       118 
132 
     | 
    
         
             
                end 
         
     | 
| 
      
 133 
     | 
    
         
            +
                
         
     | 
| 
       119 
134 
     | 
    
         | 
| 
       120 
135 
     | 
    
         
             
                def self.blend_alphas(first, second)
         
     | 
| 
       121 
136 
     | 
    
         
             
                  base, blender = first > second ? [first, second] : [second, first]
         
     | 
    
        data/lib/style_train/sheet.rb
    CHANGED
    
    | 
         @@ -61,7 +61,9 @@ module StyleTrain 
     | 
|
| 
       61 
61 
     | 
    
         | 
| 
       62 
62 
     | 
    
         
             
                def property( label, value )
         
     | 
| 
       63 
63 
     | 
    
         
             
                  value = value.join(' ') if value.is_a?(Array)
         
     | 
| 
       64 
     | 
    
         
            -
                   
     | 
| 
      
 64 
     | 
    
         
            +
                  str = "\n#{indent}#{label}: #{value};"
         
     | 
| 
      
 65 
     | 
    
         
            +
                  self.output << str
         
     | 
| 
      
 66 
     | 
    
         
            +
                  str
         
     | 
| 
       65 
67 
     | 
    
         
             
                end
         
     | 
| 
       66 
68 
     | 
    
         | 
| 
       67 
69 
     | 
    
         
             
                def background( opts )
         
     | 
| 
         @@ -222,6 +224,107 @@ module StyleTrain 
     | 
|
| 
       222 
224 
     | 
    
         
             
                  RUBY
         
     | 
| 
       223 
225 
     | 
    
         
             
                end
         
     | 
| 
       224 
226 
     | 
    
         | 
| 
      
 227 
     | 
    
         
            +
                def corners(opts)
         
     | 
| 
      
 228 
     | 
    
         
            +
                  str = ""
         
     | 
| 
      
 229 
     | 
    
         
            +
                  if opts.is_a?(Hash)
         
     | 
| 
      
 230 
     | 
    
         
            +
                    if opts[:left]
         
     | 
| 
      
 231 
     | 
    
         
            +
                      str << corner_top_left( opts[:left] )
         
     | 
| 
      
 232 
     | 
    
         
            +
                      str << corner_bottom_left( opts[:left] )
         
     | 
| 
      
 233 
     | 
    
         
            +
                    end
         
     | 
| 
      
 234 
     | 
    
         
            +
                    
         
     | 
| 
      
 235 
     | 
    
         
            +
                    if opts[:right]
         
     | 
| 
      
 236 
     | 
    
         
            +
                      str << corner_top_right( opts[:right] )
         
     | 
| 
      
 237 
     | 
    
         
            +
                      str << corner_bottom_right( opts[:right] )
         
     | 
| 
      
 238 
     | 
    
         
            +
                    end
         
     | 
| 
      
 239 
     | 
    
         
            +
                    
         
     | 
| 
      
 240 
     | 
    
         
            +
                    if opts[:top]
         
     | 
| 
      
 241 
     | 
    
         
            +
                      str << corner_top_right( opts[:top] )
         
     | 
| 
      
 242 
     | 
    
         
            +
                      str << corner_top_left( opts[:top] )
         
     | 
| 
      
 243 
     | 
    
         
            +
                    end
         
     | 
| 
      
 244 
     | 
    
         
            +
                    
         
     | 
| 
      
 245 
     | 
    
         
            +
                    if opts[:bottom]
         
     | 
| 
      
 246 
     | 
    
         
            +
                      str << corner_bottom_right( opts[:bottom] )
         
     | 
| 
      
 247 
     | 
    
         
            +
                      str << corner_bottom_left( opts[:bottom] )
         
     | 
| 
      
 248 
     | 
    
         
            +
                    end
         
     | 
| 
      
 249 
     | 
    
         
            +
                    
         
     | 
| 
      
 250 
     | 
    
         
            +
                    str << corner_top_left( opts[:top_left] )         if opts[:top_left]
         
     | 
| 
      
 251 
     | 
    
         
            +
                    str << corner_top_right( opts[:top_right] )       if opts[:top_right]
         
     | 
| 
      
 252 
     | 
    
         
            +
                    str << corner_bottom_left( opts[:bottom_left] )   if opts[:bottom_left]
         
     | 
| 
      
 253 
     | 
    
         
            +
                    str << corner_bottom_right( opts[:bottom_right] ) if opts[:bottom_right]
         
     | 
| 
      
 254 
     | 
    
         
            +
                  else
         
     | 
| 
      
 255 
     | 
    
         
            +
                    str << property('border-radius', opts )
         
     | 
| 
      
 256 
     | 
    
         
            +
                    str << property('-moz-border-radius', opts)
         
     | 
| 
      
 257 
     | 
    
         
            +
                    str << property('-webkit-border-radius', opts)
         
     | 
| 
      
 258 
     | 
    
         
            +
                  end
         
     | 
| 
      
 259 
     | 
    
         
            +
                  str
         
     | 
| 
      
 260 
     | 
    
         
            +
                end
         
     | 
| 
      
 261 
     | 
    
         
            +
                
         
     | 
| 
      
 262 
     | 
    
         
            +
                def corner_top_left size
         
     | 
| 
      
 263 
     | 
    
         
            +
                  str = ""
         
     | 
| 
      
 264 
     | 
    
         
            +
                  str << property('border-top-left-radius', size)
         
     | 
| 
      
 265 
     | 
    
         
            +
                  str << property('-moz-border-radius-topleft', size)
         
     | 
| 
      
 266 
     | 
    
         
            +
                  str << property('-webkit-border-top-left-radius', size)
         
     | 
| 
      
 267 
     | 
    
         
            +
                  str
         
     | 
| 
      
 268 
     | 
    
         
            +
                end
         
     | 
| 
      
 269 
     | 
    
         
            +
                
         
     | 
| 
      
 270 
     | 
    
         
            +
                def corner_bottom_left size
         
     | 
| 
      
 271 
     | 
    
         
            +
                  str = ""
         
     | 
| 
      
 272 
     | 
    
         
            +
                  str << property('border-bottom-left-radius', size)
         
     | 
| 
      
 273 
     | 
    
         
            +
                  str << property('-moz-border-radius-bottomleft', size)
         
     | 
| 
      
 274 
     | 
    
         
            +
                  str << property('-webkit-border-bottom-left-radius', size)
         
     | 
| 
      
 275 
     | 
    
         
            +
                  str
         
     | 
| 
      
 276 
     | 
    
         
            +
                end
         
     | 
| 
      
 277 
     | 
    
         
            +
                
         
     | 
| 
      
 278 
     | 
    
         
            +
                def corner_top_right size
         
     | 
| 
      
 279 
     | 
    
         
            +
                  str = ""
         
     | 
| 
      
 280 
     | 
    
         
            +
                  str << property('border-top-right-radius', size)
         
     | 
| 
      
 281 
     | 
    
         
            +
                  str << property('-moz-border-radius-topright', size)
         
     | 
| 
      
 282 
     | 
    
         
            +
                  str << property('-webkit-border-top-right-radius', size)
         
     | 
| 
      
 283 
     | 
    
         
            +
                  str
         
     | 
| 
      
 284 
     | 
    
         
            +
                end
         
     | 
| 
      
 285 
     | 
    
         
            +
                
         
     | 
| 
      
 286 
     | 
    
         
            +
                def corner_bottom_right size
         
     | 
| 
      
 287 
     | 
    
         
            +
                  str = ""
         
     | 
| 
      
 288 
     | 
    
         
            +
                  str << property('border-bottom-right-radius', size)
         
     | 
| 
      
 289 
     | 
    
         
            +
                  str << property('-moz-border-radius-bottomright', size)
         
     | 
| 
      
 290 
     | 
    
         
            +
                  str << property('-webkit-border-bottom-right-radius', size)
         
     | 
| 
      
 291 
     | 
    
         
            +
                  str
         
     | 
| 
      
 292 
     | 
    
         
            +
                end
         
     | 
| 
      
 293 
     | 
    
         
            +
                
         
     | 
| 
      
 294 
     | 
    
         
            +
                def shadow(opts={})
         
     | 
| 
      
 295 
     | 
    
         
            +
                  opts[:horizontal_offset] ||= default_shadow_offset
         
     | 
| 
      
 296 
     | 
    
         
            +
                  opts[:vertical_offset] ||= default_shadow_offset
         
     | 
| 
      
 297 
     | 
    
         
            +
                  opts[:blur] ||= default_shadow_offset
         
     | 
| 
      
 298 
     | 
    
         
            +
                  opts[:color] ||= default_shadow_color
         
     | 
| 
      
 299 
     | 
    
         
            +
                  str = ""
         
     | 
| 
      
 300 
     | 
    
         
            +
                  str << property('box-shadow', shadow_options(opts))
         
     | 
| 
      
 301 
     | 
    
         
            +
                  str << property('-webkit-box-shadow', shadow_options(opts))
         
     | 
| 
      
 302 
     | 
    
         
            +
                  str << property('-moz-box-shadow', shadow_options(opts))
         
     | 
| 
      
 303 
     | 
    
         
            +
                  str
         
     | 
| 
      
 304 
     | 
    
         
            +
                end
         
     | 
| 
      
 305 
     | 
    
         
            +
                
         
     | 
| 
      
 306 
     | 
    
         
            +
                def default_shadow_offset
         
     | 
| 
      
 307 
     | 
    
         
            +
                  0.25.em # this can be overwritten on a class by class basis
         
     | 
| 
      
 308 
     | 
    
         
            +
                end
         
     | 
| 
      
 309 
     | 
    
         
            +
                
         
     | 
| 
      
 310 
     | 
    
         
            +
                def default_shadow_color
         
     | 
| 
      
 311 
     | 
    
         
            +
                  :black # this too
         
     | 
| 
      
 312 
     | 
    
         
            +
                end
         
     | 
| 
      
 313 
     | 
    
         
            +
                
         
     | 
| 
      
 314 
     | 
    
         
            +
                def shadow_options(opts)
         
     | 
| 
      
 315 
     | 
    
         
            +
                  "#{opts[:inner] ? 'inset ' : ''}#{opts[:horizontal_offset]} #{opts[:vertical_offset]} #{opts[:blur]} #{opts[:color]}"
         
     | 
| 
      
 316 
     | 
    
         
            +
                end
         
     | 
| 
      
 317 
     | 
    
         
            +
                
         
     | 
| 
      
 318 
     | 
    
         
            +
                def gradient(opts={})
         
     | 
| 
      
 319 
     | 
    
         
            +
                  raise ArgumentError, "gradient styles require a :start and :end color" unless opts[:start] && opts[:end]
         
     | 
| 
      
 320 
     | 
    
         
            +
                  opts[:from] ||= 'top'
         
     | 
| 
      
 321 
     | 
    
         
            +
                  direction = opts[:from] == 'top' ? "left top, left bottom" : "left top, right top" 
         
     | 
| 
      
 322 
     | 
    
         
            +
                  str = ""
         
     | 
| 
      
 323 
     | 
    
         
            +
                  str << property('background', opts[:end])
         
     | 
| 
      
 324 
     | 
    
         
            +
                  str << property('background', "-webkit-gradient(linear, #{direction}, from(#{opts[:start]}), to(#{opts[:end]}))")
         
     | 
| 
      
 325 
     | 
    
         
            +
                  str << property('background', "-moz-linear-gradient(#{opts[:from]},  #{opts[:start]},  #{opts[:end]})")
         
     | 
| 
      
 326 
     | 
    
         
            +
                  str
         
     | 
| 
      
 327 
     | 
    
         
            +
                end
         
     | 
| 
       225 
328 
     | 
    
         | 
| 
       226 
329 
     | 
    
         
             
                def content
         
     | 
| 
       227 
330 
     | 
    
         
             
                  # override me in subclasses
         
     | 
    
        data/lib/style_train/theme.rb
    CHANGED
    
    | 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module StyleTrain
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Theme
         
     | 
| 
       3 
     | 
    
         
            -
                attr_accessor :value_hash, :name 
         
     | 
| 
      
 3 
     | 
    
         
            +
                attr_accessor :value_hash, :name, :palette 
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
                def self.required_keys *args
         
     | 
| 
       6 
6 
     | 
    
         
             
                  if args.empty?
         
     | 
| 
         @@ -14,6 +14,14 @@ module StyleTrain 
     | 
|
| 
       14 
14 
     | 
    
         
             
                  @themes ||= Gnash.new
         
     | 
| 
       15 
15 
     | 
    
         
             
                end
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
      
 17 
     | 
    
         
            +
                def self.defaults hash=nil
         
     | 
| 
      
 18 
     | 
    
         
            +
                  if hash
         
     | 
| 
      
 19 
     | 
    
         
            +
                    @defaults = Gnash.new(hash)
         
     | 
| 
      
 20 
     | 
    
         
            +
                  else
         
     | 
| 
      
 21 
     | 
    
         
            +
                    @defaults || Gnash.new
         
     | 
| 
      
 22 
     | 
    
         
            +
                  end
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
                
         
     | 
| 
       17 
25 
     | 
    
         
             
                def self.[](key)
         
     | 
| 
       18 
26 
     | 
    
         
             
                  themes[key]
         
     | 
| 
       19 
27 
     | 
    
         
             
                end
         
     | 
| 
         @@ -22,15 +30,23 @@ module StyleTrain 
     | 
|
| 
       22 
30 
     | 
    
         
             
                  themes.keys.map{|k| k.to_sym}
         
     | 
| 
       23 
31 
     | 
    
         
             
                end
         
     | 
| 
       24 
32 
     | 
    
         | 
| 
       25 
     | 
    
         
            -
                def initialize(name, value_hash)
         
     | 
| 
      
 33 
     | 
    
         
            +
                def initialize(name, value_hash, palette = {})
         
     | 
| 
       26 
34 
     | 
    
         
             
                  raise ArgumentError, "Unique name is required as first argument" if !name || self.class.themes[name]
         
     | 
| 
       27 
     | 
    
         
            -
                   
     | 
| 
      
 35 
     | 
    
         
            +
                  self.palette = palette
         
     | 
| 
      
 36 
     | 
    
         
            +
                  self.value_hash = Gnash.new(self.class.defaults.merge(substitute(value_hash)))
         
     | 
| 
      
 37 
     | 
    
         
            +
                  missing_keys = self.class.required_keys - self.value_hash.keys.map{|k| k.to_sym}
         
     | 
| 
       28 
38 
     | 
    
         
             
                  raise ArgumentError, "Required keys not provided: #{missing_keys.map{|k| k.inspect}.join(", ")}" if !missing_keys.empty?
         
     | 
| 
       29 
     | 
    
         
            -
                  self.value_hash = Gnash.new(value_hash)
         
     | 
| 
       30 
39 
     | 
    
         
             
                  self.name = name
         
     | 
| 
       31 
40 
     | 
    
         
             
                  self.class.themes[name] = self
         
     | 
| 
       32 
41 
     | 
    
         
             
                end
         
     | 
| 
       33 
42 
     | 
    
         | 
| 
      
 43 
     | 
    
         
            +
                def substitute hash
         
     | 
| 
      
 44 
     | 
    
         
            +
                  hash.each do |key, value|
         
     | 
| 
      
 45 
     | 
    
         
            +
                    hash[key] = palette[value] if palette[value]
         
     | 
| 
      
 46 
     | 
    
         
            +
                  end
         
     | 
| 
      
 47 
     | 
    
         
            +
                  hash
         
     | 
| 
      
 48 
     | 
    
         
            +
                end
         
     | 
| 
      
 49 
     | 
    
         
            +
                
         
     | 
| 
       34 
50 
     | 
    
         
             
                def [](key)
         
     | 
| 
       35 
51 
     | 
    
         
             
                  value_hash[key]
         
     | 
| 
       36 
52 
     | 
    
         
             
                end
         
     | 
    
        data/spec/color/color_spec.rb
    CHANGED
    
    | 
         @@ -221,4 +221,32 @@ describe Color do 
     | 
|
| 
       221 
221 
     | 
    
         
             
                  Color.new(:black, :alpha => 0.5).to_s.should == Color.new(:black, :alpha => 0.5).render
         
     | 
| 
       222 
222 
     | 
    
         
             
                end
         
     | 
| 
       223 
223 
     | 
    
         
             
              end
         
     | 
| 
      
 224 
     | 
    
         
            +
              
         
     | 
| 
      
 225 
     | 
    
         
            +
              describe 'stepping' do
         
     | 
| 
      
 226 
     | 
    
         
            +
                before :all do
         
     | 
| 
      
 227 
     | 
    
         
            +
                  @black = Color.new('#000')
         
     | 
| 
      
 228 
     | 
    
         
            +
                  @yellow = Color.new(:lightyellow, :alpha => 0.5)
         
     | 
| 
      
 229 
     | 
    
         
            +
                  @steps = @black.step(@yellow)
         
     | 
| 
      
 230 
     | 
    
         
            +
                end
         
     | 
| 
      
 231 
     | 
    
         
            +
                
         
     | 
| 
      
 232 
     | 
    
         
            +
                it 'returs an array' do
         
     | 
| 
      
 233 
     | 
    
         
            +
                  @steps.is_a?(Array).should be_true
         
     | 
| 
      
 234 
     | 
    
         
            +
                end
         
     | 
| 
      
 235 
     | 
    
         
            +
                
         
     | 
| 
      
 236 
     | 
    
         
            +
                it 'has 10 steps by default' do
         
     | 
| 
      
 237 
     | 
    
         
            +
                  @steps.size.should == 10
         
     | 
| 
      
 238 
     | 
    
         
            +
                end
         
     | 
| 
      
 239 
     | 
    
         
            +
                
         
     | 
| 
      
 240 
     | 
    
         
            +
                it 'has takes optional number of steps' do
         
     | 
| 
      
 241 
     | 
    
         
            +
                  @black.step(@yellow, 5).size.should == 5
         
     | 
| 
      
 242 
     | 
    
         
            +
                end
         
     | 
| 
      
 243 
     | 
    
         
            +
                
         
     | 
| 
      
 244 
     | 
    
         
            +
                it 'first color should be the starting point' do
         
     | 
| 
      
 245 
     | 
    
         
            +
                  @steps.first.should == @black.delegate
         
     | 
| 
      
 246 
     | 
    
         
            +
                end
         
     | 
| 
      
 247 
     | 
    
         
            +
                
         
     | 
| 
      
 248 
     | 
    
         
            +
                it 'last color should be the last point' do
         
     | 
| 
      
 249 
     | 
    
         
            +
                  @steps.last.should == @yellow.delegate
         
     | 
| 
      
 250 
     | 
    
         
            +
                end
         
     | 
| 
      
 251 
     | 
    
         
            +
              end
         
     | 
| 
       224 
252 
     | 
    
         
             
            end
         
     | 
| 
         @@ -271,7 +271,7 @@ describe ColorType do 
     | 
|
| 
       271 
271 
     | 
    
         
             
                    @hex = HexColor.new(:color => '#666') 
         
     | 
| 
       272 
272 
     | 
    
         
             
                  end
         
     | 
| 
       273 
273 
     | 
    
         | 
| 
       274 
     | 
    
         
            -
                  describe 'averaging' do
         
     | 
| 
      
 274 
     | 
    
         
            +
                  describe 'averaging (getting a midway point)' do
         
     | 
| 
       275 
275 
     | 
    
         
             
                    it 'should average the r, g, and b values' do
         
     | 
| 
       276 
276 
     | 
    
         
             
                      color = @rgb.mix(@hex)
         
     | 
| 
       277 
277 
     | 
    
         
             
                      color.r.should == ((102+20)/2.0).round
         
     | 
| 
         @@ -358,8 +358,27 @@ describe ColorType do 
     | 
|
| 
       358 
358 
     | 
    
         
             
                    end 
         
     | 
| 
       359 
359 
     | 
    
         
             
                  end  
         
     | 
| 
       360 
360 
     | 
    
         | 
| 
       361 
     | 
    
         
            -
                  describe ' 
     | 
| 
       362 
     | 
    
         
            -
             
     | 
| 
      
 361 
     | 
    
         
            +
                  describe 'blending a ratio of one color to the other' do
         
     | 
| 
      
 362 
     | 
    
         
            +
                    it 'should mix in the correct percentage r, g, and b values' do
         
     | 
| 
      
 363 
     | 
    
         
            +
                      color = @rgb.mix(@hex, 0.25) # only 25% of the @hex
         
     | 
| 
      
 364 
     | 
    
         
            +
                      color.r.should == (102*0.25 + 20*0.75).round
         
     | 
| 
      
 365 
     | 
    
         
            +
                      color.g.should == (102*0.25 + 40*0.75).round
         
     | 
| 
      
 366 
     | 
    
         
            +
                      color.b.should == (102*0.25 + 60*0.75).round
         
     | 
| 
      
 367 
     | 
    
         
            +
                    end 
         
     | 
| 
      
 368 
     | 
    
         
            +
                    
         
     | 
| 
      
 369 
     | 
    
         
            +
                    it 'should average the alpha' do
         
     | 
| 
      
 370 
     | 
    
         
            +
                      color = @rgb.mix(@hex, 0.25)
         
     | 
| 
      
 371 
     | 
    
         
            +
                      color.alpha.should == 0.5*0.75 + 1*0.25
         
     | 
| 
      
 372 
     | 
    
         
            +
                    end
         
     | 
| 
      
 373 
     | 
    
         
            +
                    
         
     | 
| 
      
 374 
     | 
    
         
            +
                    it 'should return the original color type' do 
         
     | 
| 
      
 375 
     | 
    
         
            +
                      color = @rgb.mix(@hex, 0.25)
         
     | 
| 
      
 376 
     | 
    
         
            +
                      color.class.should == RGBcolor
         
     | 
| 
      
 377 
     | 
    
         
            +
                      
         
     | 
| 
      
 378 
     | 
    
         
            +
                      color = @hex.mix(@rgb, 0.25)
         
     | 
| 
      
 379 
     | 
    
         
            +
                      color.class.should == HexColor
         
     | 
| 
      
 380 
     | 
    
         
            +
                    end
         
     | 
| 
      
 381 
     | 
    
         
            +
                  end
         
     | 
| 
       363 
382 
     | 
    
         
             
                end
         
     | 
| 
       364 
383 
     | 
    
         | 
| 
       365 
384 
     | 
    
         
             
                describe 'rendering' do
         
     | 
    
        data/spec/sheet_spec.rb
    CHANGED
    
    | 
         @@ -514,6 +514,180 @@ describe Sheet do 
     | 
|
| 
       514 
514 
     | 
    
         
             
                  end
         
     | 
| 
       515 
515 
     | 
    
         
             
                end
         
     | 
| 
       516 
516 
     | 
    
         
             
              end
         
     | 
| 
      
 517 
     | 
    
         
            +
              
         
     | 
| 
      
 518 
     | 
    
         
            +
              describe 'css 3 goodies' do
         
     | 
| 
      
 519 
     | 
    
         
            +
                before :all do
         
     | 
| 
      
 520 
     | 
    
         
            +
                  @sheet = Sheet.new
         
     | 
| 
      
 521 
     | 
    
         
            +
                end
         
     | 
| 
      
 522 
     | 
    
         
            +
                
         
     | 
| 
      
 523 
     | 
    
         
            +
                describe '#corners' do
         
     | 
| 
      
 524 
     | 
    
         
            +
                  it 'makes all corners the specified roundness' do
         
     | 
| 
      
 525 
     | 
    
         
            +
                    str = @sheet.corners(32.px)
         
     | 
| 
      
 526 
     | 
    
         
            +
                    str.should include "border-radius: 32px"
         
     | 
| 
      
 527 
     | 
    
         
            +
                    str.should include "-moz-border-radius: 32px"
         
     | 
| 
      
 528 
     | 
    
         
            +
                    str.should include "-webkit-border-radius: 32px"
         
     | 
| 
      
 529 
     | 
    
         
            +
                  end
         
     | 
| 
      
 530 
     | 
    
         
            +
                  
         
     | 
| 
      
 531 
     | 
    
         
            +
                  it '#corner_top_left make the correct three declarations' do
         
     | 
| 
      
 532 
     | 
    
         
            +
                    str = @sheet.corner_top_left(1.em)
         
     | 
| 
      
 533 
     | 
    
         
            +
                    str.should include( 
         
     | 
| 
      
 534 
     | 
    
         
            +
                      "border-top-left-radius: 1em", 
         
     | 
| 
      
 535 
     | 
    
         
            +
                      "-moz-border-radius-topleft: 1em", 
         
     | 
| 
      
 536 
     | 
    
         
            +
                      "-webkit-border-top-left-radius: 1em"
         
     | 
| 
      
 537 
     | 
    
         
            +
                    )  
         
     | 
| 
      
 538 
     | 
    
         
            +
                  end
         
     | 
| 
      
 539 
     | 
    
         
            +
                  
         
     | 
| 
      
 540 
     | 
    
         
            +
                  it '#corners makes a top left corner' do
         
     | 
| 
      
 541 
     | 
    
         
            +
                    @sheet.corners(:top_left => 2.em).should == @sheet.corner_top_left(2.em)
         
     | 
| 
      
 542 
     | 
    
         
            +
                  end
         
     | 
| 
      
 543 
     | 
    
         
            +
                  
         
     | 
| 
      
 544 
     | 
    
         
            +
                  it '#corner_top_right make the correct three declarations' do
         
     | 
| 
      
 545 
     | 
    
         
            +
                    str = @sheet.corner_top_right(1.5.em)
         
     | 
| 
      
 546 
     | 
    
         
            +
                    str.should include( 
         
     | 
| 
      
 547 
     | 
    
         
            +
                      "border-top-right-radius: 1.5em", 
         
     | 
| 
      
 548 
     | 
    
         
            +
                      "-moz-border-radius-topright: 1.5em", 
         
     | 
| 
      
 549 
     | 
    
         
            +
                      "-webkit-border-top-right-radius: 1.5em"
         
     | 
| 
      
 550 
     | 
    
         
            +
                    )  
         
     | 
| 
      
 551 
     | 
    
         
            +
                  end
         
     | 
| 
      
 552 
     | 
    
         
            +
                  
         
     | 
| 
      
 553 
     | 
    
         
            +
                  it '#corners makes a top left corner' do
         
     | 
| 
      
 554 
     | 
    
         
            +
                    @sheet.corners(:top_right => 1.em).should == @sheet.corner_top_right(1.em)
         
     | 
| 
      
 555 
     | 
    
         
            +
                  end
         
     | 
| 
      
 556 
     | 
    
         
            +
                  
         
     | 
| 
      
 557 
     | 
    
         
            +
                  
         
     | 
| 
      
 558 
     | 
    
         
            +
                  it '#corner_bottom_right make the correct three declarations' do
         
     | 
| 
      
 559 
     | 
    
         
            +
                    str = @sheet.corner_bottom_right(1.5.em)
         
     | 
| 
      
 560 
     | 
    
         
            +
                    str.should include( 
         
     | 
| 
      
 561 
     | 
    
         
            +
                      "border-bottom-right-radius: 1.5em", 
         
     | 
| 
      
 562 
     | 
    
         
            +
                      "-moz-border-radius-bottomright: 1.5em", 
         
     | 
| 
      
 563 
     | 
    
         
            +
                      "-webkit-border-bottom-right-radius: 1.5em"
         
     | 
| 
      
 564 
     | 
    
         
            +
                    )  
         
     | 
| 
      
 565 
     | 
    
         
            +
                  end
         
     | 
| 
      
 566 
     | 
    
         
            +
                  
         
     | 
| 
      
 567 
     | 
    
         
            +
                  it '#corners makes a top right corner' do
         
     | 
| 
      
 568 
     | 
    
         
            +
                    @sheet.corners(:bottom_right => 1.em).should == @sheet.corner_bottom_right(1.em)
         
     | 
| 
      
 569 
     | 
    
         
            +
                  end
         
     | 
| 
      
 570 
     | 
    
         
            +
                  
         
     | 
| 
      
 571 
     | 
    
         
            +
                  it '#corner_bottom_left make the correct three declarations' do
         
     | 
| 
      
 572 
     | 
    
         
            +
                    str = @sheet.corner_bottom_left(1.5.em)
         
     | 
| 
      
 573 
     | 
    
         
            +
                    str.should include( 
         
     | 
| 
      
 574 
     | 
    
         
            +
                      "border-bottom-left-radius: 1.5em", 
         
     | 
| 
      
 575 
     | 
    
         
            +
                      "-moz-border-radius-bottomleft: 1.5em", 
         
     | 
| 
      
 576 
     | 
    
         
            +
                      "-webkit-border-bottom-left-radius: 1.5em"
         
     | 
| 
      
 577 
     | 
    
         
            +
                    )  
         
     | 
| 
      
 578 
     | 
    
         
            +
                  end
         
     | 
| 
      
 579 
     | 
    
         
            +
                  
         
     | 
| 
      
 580 
     | 
    
         
            +
                  it '#corners makes a top left corner' do
         
     | 
| 
      
 581 
     | 
    
         
            +
                    @sheet.corners(:bottom_left => 1.em).should == @sheet.corner_bottom_left(1.em)
         
     | 
| 
      
 582 
     | 
    
         
            +
                  end
         
     | 
| 
      
 583 
     | 
    
         
            +
                  
         
     | 
| 
      
 584 
     | 
    
         
            +
                  it 'makes both top corners at once' do
         
     | 
| 
      
 585 
     | 
    
         
            +
                    str = @sheet.corners(:top => 20.px)
         
     | 
| 
      
 586 
     | 
    
         
            +
                    str.should include "border-top-left-radius: 20px"
         
     | 
| 
      
 587 
     | 
    
         
            +
                    str.should include "-moz-border-radius-topleft: 20px"
         
     | 
| 
      
 588 
     | 
    
         
            +
                    str.should include "-webkit-border-top-left-radius: 20px"
         
     | 
| 
      
 589 
     | 
    
         
            +
                    str.should include "border-top-right-radius: 20px"
         
     | 
| 
      
 590 
     | 
    
         
            +
                    str.should include "-moz-border-radius-topright: 20px"
         
     | 
| 
      
 591 
     | 
    
         
            +
                    str.should include "-webkit-border-top-right-radius: 20px"
         
     | 
| 
      
 592 
     | 
    
         
            +
                  end
         
     | 
| 
      
 593 
     | 
    
         
            +
                  
         
     | 
| 
      
 594 
     | 
    
         
            +
                  it 'makes both bottom corners at once' do
         
     | 
| 
      
 595 
     | 
    
         
            +
                    str = @sheet.corners(:bottom => 30.px)
         
     | 
| 
      
 596 
     | 
    
         
            +
                    str.should include "border-bottom-left-radius: 30px"
         
     | 
| 
      
 597 
     | 
    
         
            +
                    str.should include "-moz-border-radius-bottomleft: 30px"
         
     | 
| 
      
 598 
     | 
    
         
            +
                    str.should include "-webkit-border-bottom-left-radius: 30px"
         
     | 
| 
      
 599 
     | 
    
         
            +
                    str.should include "border-bottom-right-radius: 30px"
         
     | 
| 
      
 600 
     | 
    
         
            +
                    str.should include "-moz-border-radius-bottomright: 30px"
         
     | 
| 
      
 601 
     | 
    
         
            +
                    str.should include "-webkit-border-bottom-right-radius: 30px"
         
     | 
| 
      
 602 
     | 
    
         
            +
                  end
         
     | 
| 
      
 603 
     | 
    
         
            +
                  
         
     | 
| 
      
 604 
     | 
    
         
            +
                  it 'makes both left corners at once' do
         
     | 
| 
      
 605 
     | 
    
         
            +
                    str = @sheet.corners(:left => 10.px)
         
     | 
| 
      
 606 
     | 
    
         
            +
                    str.should include "border-bottom-left-radius: 10px"
         
     | 
| 
      
 607 
     | 
    
         
            +
                    str.should include "-moz-border-radius-bottomleft: 10px"
         
     | 
| 
      
 608 
     | 
    
         
            +
                    str.should include "-webkit-border-bottom-left-radius: 10px"
         
     | 
| 
      
 609 
     | 
    
         
            +
                    str.should include "border-top-left-radius: 10px"
         
     | 
| 
      
 610 
     | 
    
         
            +
                    str.should include "-moz-border-radius-topleft: 10px"
         
     | 
| 
      
 611 
     | 
    
         
            +
                    str.should include "-webkit-border-top-left-radius: 10px"
         
     | 
| 
      
 612 
     | 
    
         
            +
                    
         
     | 
| 
      
 613 
     | 
    
         
            +
                  end
         
     | 
| 
      
 614 
     | 
    
         
            +
                  
         
     | 
| 
      
 615 
     | 
    
         
            +
                  it 'makes both right corners at once' do
         
     | 
| 
      
 616 
     | 
    
         
            +
                    str = @sheet.corners(:left => 15.px)
         
     | 
| 
      
 617 
     | 
    
         
            +
                    str.should include "border-bottom-left-radius: 15px"
         
     | 
| 
      
 618 
     | 
    
         
            +
                    str.should include "-moz-border-radius-bottomleft: 15px"
         
     | 
| 
      
 619 
     | 
    
         
            +
                    str.should include "-webkit-border-bottom-left-radius: 15px"
         
     | 
| 
      
 620 
     | 
    
         
            +
                    str.should include "border-top-left-radius: 15px"
         
     | 
| 
      
 621 
     | 
    
         
            +
                    str.should include "-moz-border-radius-topleft: 15px"
         
     | 
| 
      
 622 
     | 
    
         
            +
                    str.should include "-webkit-border-top-left-radius: 15px"
         
     | 
| 
      
 623 
     | 
    
         
            +
                  end
         
     | 
| 
      
 624 
     | 
    
         
            +
                end
         
     | 
| 
      
 625 
     | 
    
         
            +
                
         
     | 
| 
      
 626 
     | 
    
         
            +
                describe '#shadow' do
         
     | 
| 
      
 627 
     | 
    
         
            +
                  it 'build declarations for all three browser types' do
         
     | 
| 
      
 628 
     | 
    
         
            +
                    str = @sheet.shadow
         
     | 
| 
      
 629 
     | 
    
         
            +
                    str.should match(/^box-shadow/)
         
     | 
| 
      
 630 
     | 
    
         
            +
                    str.should include '-webkit-box-shadow'
         
     | 
| 
      
 631 
     | 
    
         
            +
                    str.should include '-moz-box-shadow'
         
     | 
| 
      
 632 
     | 
    
         
            +
                  end
         
     | 
| 
      
 633 
     | 
    
         
            +
                  
         
     | 
| 
      
 634 
     | 
    
         
            +
                  it 'has good defaults' do
         
     | 
| 
      
 635 
     | 
    
         
            +
                    @sheet.shadow.should include "0.25em 0.25em 0.25em black"
         
     | 
| 
      
 636 
     | 
    
         
            +
                  end
         
     | 
| 
      
 637 
     | 
    
         
            +
                  
         
     | 
| 
      
 638 
     | 
    
         
            +
                  it 'uses the color when provided' do
         
     | 
| 
      
 639 
     | 
    
         
            +
                    str = @sheet.shadow(:color => '#666')
         
     | 
| 
      
 640 
     | 
    
         
            +
                    str.should include '#666'
         
     | 
| 
      
 641 
     | 
    
         
            +
                    str.should_not include 'black'
         
     | 
| 
      
 642 
     | 
    
         
            +
                  end
         
     | 
| 
      
 643 
     | 
    
         
            +
                  
         
     | 
| 
      
 644 
     | 
    
         
            +
                  it 'uses the horizontal offset when provided' do
         
     | 
| 
      
 645 
     | 
    
         
            +
                    @sheet.shadow(:horizontal_offset => 20.px).should include "20px 0.25em 0.25em black"
         
     | 
| 
      
 646 
     | 
    
         
            +
                  end
         
     | 
| 
      
 647 
     | 
    
         
            +
                  
         
     | 
| 
      
 648 
     | 
    
         
            +
                  it 'uses the vertical offset when provided' do
         
     | 
| 
      
 649 
     | 
    
         
            +
                    @sheet.shadow(:vertical_offset => 10.px).should include "0.25em 10px 0.25em black"
         
     | 
| 
      
 650 
     | 
    
         
            +
                  end
         
     | 
| 
      
 651 
     | 
    
         
            +
                  
         
     | 
| 
      
 652 
     | 
    
         
            +
                  it 'uses the blur when provided' do
         
     | 
| 
      
 653 
     | 
    
         
            +
                    @sheet.shadow(:blur => 15.px).should include "0.25em 0.25em 15px black"
         
     | 
| 
      
 654 
     | 
    
         
            +
                  end
         
     | 
| 
      
 655 
     | 
    
         
            +
                  
         
     | 
| 
      
 656 
     | 
    
         
            +
                  it 'will make an inner shadow' do
         
     | 
| 
      
 657 
     | 
    
         
            +
                    @sheet.shadow(:inner => true).should include "inset 0.25em 0.25em 0.25em black"
         
     | 
| 
      
 658 
     | 
    
         
            +
                  end
         
     | 
| 
      
 659 
     | 
    
         
            +
                end
         
     | 
| 
      
 660 
     | 
    
         
            +
                
         
     | 
| 
      
 661 
     | 
    
         
            +
                describe 'gradient' do
         
     | 
| 
      
 662 
     | 
    
         
            +
                  it 'requires a start and end color' do
         
     | 
| 
      
 663 
     | 
    
         
            +
                    lambda{ @sheet.gradient }.should raise_error(ArgumentError, "gradient styles require a :start and :end color")
         
     | 
| 
      
 664 
     | 
    
         
            +
                  end
         
     | 
| 
      
 665 
     | 
    
         
            +
                  
         
     | 
| 
      
 666 
     | 
    
         
            +
                  it 'builds the necessary declarations' do
         
     | 
| 
      
 667 
     | 
    
         
            +
                    @sheet.gradient(:start => :white, :end => :black).should include(
         
     | 
| 
      
 668 
     | 
    
         
            +
                      "background: black",
         
     | 
| 
      
 669 
     | 
    
         
            +
                      "background: -webkit-gradient",
         
     | 
| 
      
 670 
     | 
    
         
            +
                      "background: -moz-linear-gradient"
         
     | 
| 
      
 671 
     | 
    
         
            +
                    )
         
     | 
| 
      
 672 
     | 
    
         
            +
                  end
         
     | 
| 
      
 673 
     | 
    
         
            +
                  
         
     | 
| 
      
 674 
     | 
    
         
            +
                  describe 'direction' do
         
     | 
| 
      
 675 
     | 
    
         
            +
                    it 'defaults from top to bottom' do
         
     | 
| 
      
 676 
     | 
    
         
            +
                      @sheet.gradient(:start => :white, :end => :black).should include( 
         
     | 
| 
      
 677 
     | 
    
         
            +
                        "linear, left top, left bottom", 
         
     | 
| 
      
 678 
     | 
    
         
            +
                        "linear-gradient(top"
         
     | 
| 
      
 679 
     | 
    
         
            +
                      )
         
     | 
| 
      
 680 
     | 
    
         
            +
                    end
         
     | 
| 
      
 681 
     | 
    
         
            +
                    
         
     | 
| 
      
 682 
     | 
    
         
            +
                    it 'makes from left to right' do
         
     | 
| 
      
 683 
     | 
    
         
            +
                      @sheet.gradient(:start => :white, :end => :black, :from => :left).should include(
         
     | 
| 
      
 684 
     | 
    
         
            +
                        "linear, left top, right top",
         
     | 
| 
      
 685 
     | 
    
         
            +
                        "linear-gradient(left" 
         
     | 
| 
      
 686 
     | 
    
         
            +
                      )
         
     | 
| 
      
 687 
     | 
    
         
            +
                    end
         
     | 
| 
      
 688 
     | 
    
         
            +
                  end
         
     | 
| 
      
 689 
     | 
    
         
            +
                end
         
     | 
| 
      
 690 
     | 
    
         
            +
              end
         
     | 
| 
       517 
691 
     | 
    
         | 
| 
       518 
692 
     | 
    
         
             
              class StyleSheet < StyleTrain::Sheet
         
     | 
| 
       519 
693 
     | 
    
         
             
                def content
         
     | 
    
        data/spec/theme_spec.rb
    CHANGED
    
    | 
         @@ -4,16 +4,42 @@ Theme = StyleTrain::Theme unless defined?( Theme ) 
     | 
|
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            describe Theme do
         
     | 
| 
       6 
6 
     | 
    
         
             
              class MyTheme < Theme
         
     | 
| 
       7 
     | 
    
         
            -
                required_keys :foo, :bar
         
     | 
| 
      
 7 
     | 
    
         
            +
                required_keys :foo, :bar, :zardoz
         
     | 
| 
      
 8 
     | 
    
         
            +
                defaults :zardoz => 'sexy'
         
     | 
| 
       8 
9 
     | 
    
         
             
              end
         
     | 
| 
       9 
10 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
              describe ' 
     | 
| 
       11 
     | 
    
         
            -
                 
     | 
| 
       12 
     | 
    
         
            -
                   
     | 
| 
      
 11 
     | 
    
         
            +
              describe 'requiring keys' do
         
     | 
| 
      
 12 
     | 
    
         
            +
                describe '#require_keys' do
         
     | 
| 
      
 13 
     | 
    
         
            +
                  it 'stores the values' do
         
     | 
| 
      
 14 
     | 
    
         
            +
                    MyTheme.instance_eval('@required_keys').should == [:foo, :bar, :zardoz]
         
     | 
| 
      
 15 
     | 
    
         
            +
                  end
         
     | 
| 
      
 16 
     | 
    
         
            +
                
         
     | 
| 
      
 17 
     | 
    
         
            +
                  it 'retreives the keys when no argument is supplied' do
         
     | 
| 
      
 18 
     | 
    
         
            +
                    MyTheme.required_keys.should == [:foo, :bar, :zardoz]
         
     | 
| 
      
 19 
     | 
    
         
            +
                  end
         
     | 
| 
       13 
20 
     | 
    
         
             
                end
         
     | 
| 
       14 
21 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
                 
     | 
| 
       16 
     | 
    
         
            -
                   
     | 
| 
      
 22 
     | 
    
         
            +
                describe '#defaults' do
         
     | 
| 
      
 23 
     | 
    
         
            +
                  before :all do
         
     | 
| 
      
 24 
     | 
    
         
            +
                    @theme = MyTheme.new(:orange_red, :foo => 'orange', :bar => 'white')
         
     | 
| 
      
 25 
     | 
    
         
            +
                  end
         
     | 
| 
      
 26 
     | 
    
         
            +
                  
         
     | 
| 
      
 27 
     | 
    
         
            +
                  it 'store the values' do
         
     | 
| 
      
 28 
     | 
    
         
            +
                    MyTheme.instance_eval('@defaults').should == Gnash.new(:zardoz => 'sexy')
         
     | 
| 
      
 29 
     | 
    
         
            +
                  end
         
     | 
| 
      
 30 
     | 
    
         
            +
                  
         
     | 
| 
      
 31 
     | 
    
         
            +
                  it 'retrieves the hash when called without an argument' do
         
     | 
| 
      
 32 
     | 
    
         
            +
                    MyTheme.defaults.should == Gnash.new(:zardoz => 'sexy')
         
     | 
| 
      
 33 
     | 
    
         
            +
                  end
         
     | 
| 
      
 34 
     | 
    
         
            +
                  
         
     | 
| 
      
 35 
     | 
    
         
            +
                  it 'adds defaults to the value hash' do
         
     | 
| 
      
 36 
     | 
    
         
            +
                    @theme[:zardoz].should == 'sexy'
         
     | 
| 
      
 37 
     | 
    
         
            +
                  end
         
     | 
| 
      
 38 
     | 
    
         
            +
                  
         
     | 
| 
      
 39 
     | 
    
         
            +
                  it 'does not override values with the same key' do
         
     | 
| 
      
 40 
     | 
    
         
            +
                    theme = MyTheme.new(:red_orange, :foo => 'red', :bar => 'white', :zardoz => 'not all that')
         
     | 
| 
      
 41 
     | 
    
         
            +
                    theme[:zardoz].should == 'not all that'
         
     | 
| 
      
 42 
     | 
    
         
            +
                  end
         
     | 
| 
       17 
43 
     | 
    
         
             
                end
         
     | 
| 
       18 
44 
     | 
    
         
             
              end
         
     | 
| 
       19 
45 
     | 
    
         | 
| 
         @@ -48,7 +74,21 @@ describe Theme do 
     | 
|
| 
       48 
74 
     | 
    
         | 
| 
       49 
75 
     | 
    
         
             
                it 'sets the value hash to value_hash accessor' do
         
     | 
| 
       50 
76 
     | 
    
         
             
                  theme = MyTheme.new(:maroon, :foo => 'maroon', :bar => 'white')
         
     | 
| 
       51 
     | 
    
         
            -
                  theme.value_hash.should == Gnash.new({:foo => 'maroon', :bar => 'white'})
         
     | 
| 
      
 77 
     | 
    
         
            +
                  theme.value_hash.should == Gnash.new({:foo => 'maroon', :bar => 'white', :zardoz => 'sexy'})
         
     | 
| 
      
 78 
     | 
    
         
            +
                end
         
     | 
| 
      
 79 
     | 
    
         
            +
                
         
     | 
| 
      
 80 
     | 
    
         
            +
                describe 'with palette' do
         
     | 
| 
      
 81 
     | 
    
         
            +
                  before :all do
         
     | 
| 
      
 82 
     | 
    
         
            +
                    @theme = MyTheme.new(:substitutor, {:foo => :blue, :bar => :white}, {:blue => 'true blue', :white => 'off sometimes'})
         
     | 
| 
      
 83 
     | 
    
         
            +
                  end
         
     | 
| 
      
 84 
     | 
    
         
            +
                  
         
     | 
| 
      
 85 
     | 
    
         
            +
                  it "will save the pallete when it finds that argument" do
         
     | 
| 
      
 86 
     | 
    
         
            +
                    @theme.palette.should == {:blue => 'true blue', :white => 'off sometimes'}
         
     | 
| 
      
 87 
     | 
    
         
            +
                  end
         
     | 
| 
      
 88 
     | 
    
         
            +
                  
         
     | 
| 
      
 89 
     | 
    
         
            +
                  it 'will substitue symbols for pallete values with the same key' do
         
     | 
| 
      
 90 
     | 
    
         
            +
                    @theme.value_hash.should == Gnash.new({:foo => 'true blue', :bar => 'off sometimes', :zardoz => 'sexy'})
         
     | 
| 
      
 91 
     | 
    
         
            +
                  end
         
     | 
| 
       52 
92 
     | 
    
         
             
                end
         
     | 
| 
       53 
93 
     | 
    
         
             
              end
         
     | 
| 
       54 
94 
     | 
    
         | 
    
        data/style_train.gemspec
    CHANGED
    
    | 
         @@ -5,11 +5,11 @@ 
     | 
|
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            Gem::Specification.new do |s|
         
     | 
| 
       7 
7 
     | 
    
         
             
              s.name = %q{style_train}
         
     | 
| 
       8 
     | 
    
         
            -
              s.version = "0.2. 
     | 
| 
      
 8 
     | 
    
         
            +
              s.version = "0.2.3"
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         
     | 
| 
       11 
11 
     | 
    
         
             
              s.authors = ["Kane Baccigalupi"]
         
     | 
| 
       12 
     | 
    
         
            -
              s.date = %q{2011-02- 
     | 
| 
      
 12 
     | 
    
         
            +
              s.date = %q{2011-02-23}
         
     | 
| 
       13 
13 
     | 
    
         
             
              s.description = %q{style_train builds CSS using pure Ruby, not a DSL interpreted via Ruby. This allows inheritance, modules, instance level calculations and all the goodness Ruby can offer.}
         
     | 
| 
       14 
14 
     | 
    
         
             
              s.email = %q{baccigalupi@gmail.com}
         
     | 
| 
       15 
15 
     | 
    
         
             
              s.extra_rdoc_files = [
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,13 +1,13 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: style_train
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
              hash:  
     | 
| 
      
 4 
     | 
    
         
            +
              hash: 17
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       6 
6 
     | 
    
         
             
              segments: 
         
     | 
| 
       7 
7 
     | 
    
         
             
              - 0
         
     | 
| 
       8 
8 
     | 
    
         
             
              - 2
         
     | 
| 
       9 
     | 
    
         
            -
              -  
     | 
| 
       10 
     | 
    
         
            -
              version: 0.2. 
     | 
| 
      
 9 
     | 
    
         
            +
              - 3
         
     | 
| 
      
 10 
     | 
    
         
            +
              version: 0.2.3
         
     | 
| 
       11 
11 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       12 
12 
     | 
    
         
             
            authors: 
         
     | 
| 
       13 
13 
     | 
    
         
             
            - Kane Baccigalupi
         
     | 
| 
         @@ -15,7 +15,7 @@ autorequire: 
     | 
|
| 
       15 
15 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       16 
16 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
     | 
    
         
            -
            date: 2011-02- 
     | 
| 
      
 18 
     | 
    
         
            +
            date: 2011-02-23 00:00:00 -08:00
         
     | 
| 
       19 
19 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       20 
20 
     | 
    
         
             
            dependencies: 
         
     | 
| 
       21 
21 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     |