Upgrade to ExtJS 4.0.0 - Released 04/26/2011
[extjs.git] / resources / themes / lib / utils.rb
1 module ExtJS4
2   module SassExtensions
3     module Functions
4       module Utils
5         def parsebox(list, n)
6           assert_type n, :Number
7           if !n.int?
8             raise ArgumentError.new("List index #{n} must be an integer")
9           elsif n.to_i < 1
10             raise ArgumentError.new("List index #{n} must be greater than or equal to 1")
11           elsif n.to_i > 4
12             raise ArgumentError.new("A box string can't contain more then 4")
13           end
14
15           new_list = list.clone.to_a
16           size = new_list.size
17                       
18           if n.to_i >= size
19             if size == 1
20               new_list[1] = new_list[0]
21               new_list[2] = new_list[0]
22               new_list[3] = new_list[0]
23             elsif size == 2
24               new_list[2] = new_list[0]
25               new_list[3] = new_list[1]
26             elsif size == 3
27               new_list[3] = new_list[1]
28             end
29           end
30           
31           new_list.to_a[n.to_i - 1]
32         end
33         
34         def parseint(value)
35           Sass::Script::Number.new(value.to_i)
36         end
37         
38         # Returns a background-image property for a specified images for the theme
39         def theme_image(theme, path, without_url = false, relative = false)
40           path = path.value
41           theme = theme.value
42           without_url = (without_url.class == FalseClass) ? without_url : without_url.value
43           
44           relative_path = "../images/"
45           
46           if relative
47             if relative.class == Sass::Script::String
48               relative_path = relative.value
49               relative = true
50             elsif relative.class == FalseClass || relative.class == TrueClass
51               relative = relative
52             else
53               relative = relative.value
54             end
55           else
56             relative = false
57           end
58           
59           if relative
60             image_path = File.join(relative_path, theme, path)
61           else
62             images_path = File.join($ext_path, 'resources', 'themes', 'images', theme)
63             image_path = File.join(images_path, path)
64           end
65           
66           if !without_url
67             url = "url('#{image_path}')"
68           else
69             url = "#{image_path}"
70           end
71           
72           Sass::Script::String.new(url)
73         end
74       end
75     end
76   end
77 end
78
79 module Sass::Script::Functions
80   include ExtJS4::SassExtensions::Functions::Utils
81 end