PageRenderTime 25ms CodeModel.GetById 12ms app.highlight 11ms RepoModel.GetById 1ms app.codeStats 0ms

/ext-4.0.7/resources/themes/lib/utils.rb

https://bitbucket.org/srogerf/javascript
Ruby | 93 lines | 87 code | 6 blank | 0 comment | 3 complexity | e070a8e44c7a2ddbdc312e43312a45aa MD5 | raw file
 1module 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
75        def theme_image_exists(path)
76          result = false
77
78          where_to_look = path.value.gsub('../../resources', 'resources')
79
80          if where_to_look && FileTest.exists?("#{where_to_look}")
81            result = true
82          end
83
84          return Sass::Script::Bool.new(result)
85        end
86      end
87    end
88  end
89end
90
91module Sass::Script::Functions
92  include ExtJS4::SassExtensions::Functions::Utils
93end