compass-connector 0.6 → 0.7

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.
@@ -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: