compass-connector 0.6 → 0.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -27,6 +27,7 @@ module CompassConnector
27
27
  class Resolver
28
28
 
29
29
  @process = nil
30
+ @api_version = 1
30
31
 
31
32
  private_class_method
32
33
  def self.resolver(method, *args)
@@ -41,47 +42,119 @@ module CompassConnector
41
42
  return ret
42
43
  end
43
44
 
45
+ def self.get_path_mode(path)
46
+ if path =~ /^@/
47
+ return "app"
48
+ end
49
+ if path =~ %r!^(([a-z0-9]+:/)?/)!
50
+ return "absolute"
51
+ end
52
+ "vendor"
53
+ end
54
+
55
+ def self.get_mode_and_path(path, required_mode=nil, type=nil)
56
+ mode = self.get_path_mode(path)
57
+ if required_mode and required_mode != mode
58
+ raise "Path mode "+required_mode+" is required for "+path+", "+mode+" detected"
59
+ end
60
+ if mode == "app"
61
+ path = path[1..-1]
62
+ end
63
+
64
+ return mode, path
65
+ end
66
+
67
+ def self.get_url(path, type, required_mode=nil)
68
+ mode, path = self.get_mode_and_path(path, required_mode, type)
69
+
70
+ if mode == "absolute"
71
+ path
72
+ else
73
+ resolver("get_url", path, type, mode)
74
+ end
75
+ end
76
+
77
+ def self.get_file(path, type, required_mode=nil)
78
+ mode, path = self.get_mode_and_path(path, required_mode, type)
79
+
80
+ FakeFile.from_response(resolver("get_file", path, type, mode))
81
+ end
82
+
44
83
  def self.find_import(uri)
45
- FakeFile.from_response(resolver("find_import", uri))
84
+
85
+ mode, path = self.get_mode_and_path(uri, "app")
86
+
87
+ base = File.dirname(path)
88
+ file = File.basename(path, ".scss")
89
+
90
+ if base == "."
91
+ base = ""
92
+ else
93
+ base += "/"
94
+ end
95
+
96
+ f = self.get_file("@"+base+file+".scss", "scss", "app")
97
+ #request partial if import not found
98
+ if not f
99
+ f = self.get_file("@"+base+"_"+file+".scss", "scss", "app")
100
+ end
101
+ f
46
102
  end
103
+
104
+ def self.check_api_version()
105
+ v = resolver("api_version")
106
+ if @api_version != v
107
+ raise "Need connector api v#{@api_version}, v#{v or 0} provided"
108
+ end
109
+ end
110
+
47
111
  def self.image_url(path)
48
- resolver("get_image_url", path)
112
+ self.get_url(path, "image")
49
113
  end
50
114
  def self.get_image(path)
51
- FakeFile.from_response(resolver("get_file", path, "image"))
115
+ self.get_file(path,"image")
52
116
  end
53
117
  def self.generated_image_url(path)
54
- resolver("get_generated_image_url", path)
118
+ self.get_url(path, "generated_image")
55
119
  end
56
120
  def self.get_generated_image(path)
57
- FakeFile.from_response(resolver("get_file", path, "generated_image"))
121
+ self.get_file(path, "generated_image")
122
+ end
123
+ def self.get_generated_sprite(path)
124
+ path = path.gsub(/^\//, "")
125
+ self.get_file(path, "generated_image")
58
126
  end
59
127
  def self.find_sprites_matching(uri)
60
- resolver("find_sprites_matching", uri)
128
+ mode, path = self.get_mode_and_path(uri)
129
+ resolver("find_sprites_matching", path, mode)
61
130
  end
62
131
  def self.find_sprite(file)
63
- FakeFile.from_response(resolver("get_file", file, "sprite"))
132
+ self.get_file(file, "image")
64
133
  end
65
- def self.get_font(path)
66
- FakeFile.from_response(resolver("get_file", path, "font"))
134
+ def self.get_font(file)
135
+ self.get_file(file, "font")
67
136
  end
68
137
  def self.font_url(path)
69
- resolver("get_font_url", path)
138
+ self.get_url(path, "font")
70
139
  end
71
140
  def self.stylesheet_url(path)
72
- resolver("get_stylesheet_url", path)
141
+ self.get_url(path, "css")
73
142
  end
74
143
  def self.put_sprite(filename, f)
75
- resolver("put_file", filename, "sprite", Base64.encode64(f.read))
144
+ filename = filename.gsub(/^\//, "")
145
+ mode, path = self.get_mode_and_path(filename)
146
+ resolver("put_file", path, "generated_image", Base64.encode64(f.read), mode)
76
147
  end
77
148
  def self.put_output_css(filename, data)
78
- resolver("put_file", filename, "css", Base64.encode64(data))
149
+ mode, path = self.get_mode_and_path(filename,"app")
150
+ resolver("put_file", path, "out_css", Base64.encode64(data), mode)
79
151
  end
80
152
  def self.get_output_css(filename)
81
- FakeFile.from_response(resolver("get_file", filename, "out_stylesheet"))
153
+ self.get_file(filename, "out_css", "app")
82
154
  end
83
155
 
84
156
  def self.configuration()
157
+ self.check_api_version()
85
158
  resolver("get_configuration")
86
159
  end
87
160
 
@@ -5,10 +5,10 @@ module Compass
5
5
  module SassExtensions
6
6
  module Sprites
7
7
  module SpriteMethods
8
-
8
+
9
9
  def tmp_filename
10
10
  fname = File.join(Compass.configuration.generated_images_path, name_and_hash)
11
- f = CompassConnector::Resolver.get_generated_image(fname)
11
+ f = CompassConnector::Resolver.get_generated_sprite(fname)
12
12
  f && f.to_path || nil
13
13
  end
14
14
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: compass-connector
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.6'
4
+ version: '0.7'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: