utils.rb 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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. new_list = list.clone.to_a
  15. size = new_list.size
  16. if n.to_i >= size
  17. if size == 1
  18. new_list[1] = new_list[0]
  19. new_list[2] = new_list[0]
  20. new_list[3] = new_list[0]
  21. elsif size == 2
  22. new_list[2] = new_list[0]
  23. new_list[3] = new_list[1]
  24. elsif size == 3
  25. new_list[3] = new_list[1]
  26. end
  27. end
  28. new_list.to_a[n.to_i - 1]
  29. end
  30. def parseint(value)
  31. Sass::Script::Number.new(value.to_i)
  32. end
  33. # Returns a background-image property for a specified images for the theme
  34. def theme_image(theme, path, without_url = false, relative = false)
  35. path = path.value
  36. theme = theme.value
  37. without_url = (without_url.class == FalseClass) ? without_url : without_url.value
  38. relative_path = "../images/"
  39. if relative
  40. if relative.class == Sass::Script::String
  41. relative_path = relative.value
  42. relative = true
  43. elsif relative.class == FalseClass || relative.class == TrueClass
  44. relative = relative
  45. else
  46. relative = relative.value
  47. end
  48. else
  49. relative = false
  50. end
  51. if relative
  52. image_path = File.join(relative_path, theme, path)
  53. else
  54. images_path = File.join($ext_path, 'resources', 'themes', 'images', theme)
  55. image_path = File.join(images_path, path)
  56. end
  57. if !without_url
  58. url = "url('#{image_path}')"
  59. else
  60. url = "#{image_path}"
  61. end
  62. Sass::Script::String.new(url)
  63. end
  64. def theme_image_exists(path)
  65. result = false
  66. where_to_look = path.value.gsub('../../resources', 'resources')
  67. if where_to_look && FileTest.exists?("#{where_to_look}")
  68. result = true
  69. end
  70. return Sass::Script::Bool.new(result)
  71. end
  72. end
  73. end
  74. end
  75. end
  76. module Sass::Script::Functions
  77. include ExtJS4::SassExtensions::Functions::Utils
  78. end