bulldog 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,8 @@
1
+ == 0.2.1 2010-07-15
2
+
3
+ * Path/URL templates may be symbols specifying methods to call to
4
+ generate the path/URL. Method is passed attachment name and style.
5
+
1
6
  == 0.2.0 2010-07-14
2
7
 
3
8
  * Remove dimensions and aspect ratio as a storable attributes. Store
@@ -152,7 +152,11 @@ module Bulldog
152
152
  def interpolate_path(style_name, params={})
153
153
  template = reflection.path_template
154
154
  style = reflection.styles[style_name]
155
- Interpolation.interpolate(template, record, name, style, params)
155
+ if template.is_a?(Symbol)
156
+ record.send(template, name, style)
157
+ else
158
+ Interpolation.interpolate(template, record, name, style, params)
159
+ end
156
160
  end
157
161
 
158
162
  #
@@ -166,7 +170,11 @@ module Bulldog
166
170
  def interpolate_url(style_name, params={})
167
171
  template = reflection.url_template
168
172
  style = reflection.styles[style_name]
169
- Interpolation.interpolate(template, record, name, style, params)
173
+ if template.is_a?(Symbol)
174
+ record.send(template, name, style)
175
+ else
176
+ Interpolation.interpolate(template, record, name, style, params)
177
+ end
170
178
  end
171
179
 
172
180
  protected # ---------------------------------------------------
@@ -1,5 +1,5 @@
1
1
  module Bulldog
2
- VERSION = [0, 2, 0]
2
+ VERSION = [0, 2, 1]
3
3
 
4
4
  class << VERSION
5
5
  include Comparable
@@ -22,107 +22,157 @@ describe Attachment::Maybe do
22
22
  end
23
23
 
24
24
  describe "#interpolate_path" do
25
- it "should return the path that the given style name would be stored at" do
26
- spec = self
27
- configure_attachment do
28
- path "#{spec.temporary_directory}/:attachment.:style.jpg"
25
+ describe "when the path template is a Symbol" do
26
+ before do
27
+ Thing.class_eval do
28
+ has_attachment :photo do
29
+ path :test_path
30
+ end
31
+
32
+ define_method :test_path do |@name, @style|
33
+ "#{name}-#{style.name}"
34
+ end
35
+
36
+ attr_reader :name, :style
37
+ end
38
+ @thing = Thing.new
29
39
  end
30
- @thing.photo.interpolate_path(:original).should == "#{temporary_directory}/photo.original.jpg"
31
- end
32
40
 
33
- it "should use the given interpolation parameters" do
34
- spec = self
35
- configure_attachment do
36
- path "#{spec.temporary_directory}/:attachment.:style.jpg"
41
+ it "should call the specified method with the attachment name and style" do
42
+ @thing.photo.interpolate_path(:original).should == "photo-original"
43
+ @thing.name == :photo
44
+ @thing.style.name == :original
37
45
  end
38
- @thing.photo.interpolate_path(:original, :style => 'STYLE').should == "#{temporary_directory}/photo.STYLE.jpg"
39
46
  end
40
47
 
41
- it "should use the style's format attribute for the extension by default" do
42
- spec = self
43
- configure_attachment do
44
- style :processed, :format => 'png'
45
- path "#{spec.temporary_directory}/:attachment.:style.:extension"
46
- end
47
- @thing.photo.interpolate_path(:processed, :format => 'png').should == "#{temporary_directory}/photo.processed.png"
48
- end
49
-
50
- describe "for the original style" do
51
- it "should support the :basename interpolation key if the basename is given" do
48
+ describe "when the path template is a String" do
49
+ it "should return the path that the given style name would be stored at" do
52
50
  spec = self
53
51
  configure_attachment do
54
- path "#{spec.temporary_directory}/:attachment.:style/:basename"
52
+ path "#{spec.temporary_directory}/:attachment.:style.jpg"
55
53
  end
56
- @thing.photo.interpolate_path(:original, :basename => 'file.xyz').should == "#{temporary_directory}/photo.original/file.xyz"
54
+ @thing.photo.interpolate_path(:original).should == "#{temporary_directory}/photo.original.jpg"
57
55
  end
58
56
 
59
- it "should support the :extension interpolation key if the basename is given" do
57
+ it "should use the given interpolation parameters" do
60
58
  spec = self
61
59
  configure_attachment do
62
- path "#{spec.temporary_directory}/:attachment.:style.:extension"
60
+ path "#{spec.temporary_directory}/:attachment.:style.jpg"
63
61
  end
64
- @thing.photo.interpolate_path(:original, :basename => 'file.xyz').should == "#{temporary_directory}/photo.original.xyz"
62
+ @thing.photo.interpolate_path(:original, :style => 'STYLE').should == "#{temporary_directory}/photo.STYLE.jpg"
65
63
  end
66
64
 
67
- it "should support the :extension interpolation key if the extension is given" do
65
+ it "should use the style's format attribute for the extension by default" do
68
66
  spec = self
69
67
  configure_attachment do
68
+ style :processed, :format => 'png'
70
69
  path "#{spec.temporary_directory}/:attachment.:style.:extension"
71
70
  end
72
- @thing.photo.interpolate_path(:original, :extension => 'xyz').should == "#{temporary_directory}/photo.original.xyz"
71
+ @thing.photo.interpolate_path(:processed, :format => 'png').should == "#{temporary_directory}/photo.processed.png"
73
72
  end
74
- end
75
- end
76
73
 
77
- describe "#interpolate_url" do
78
- it "should return the url that the given style name would be found at" do
79
- spec = self
80
- configure_attachment do
81
- url "/:attachment.:style.jpg"
74
+ describe "for the original style" do
75
+ it "should support the :basename interpolation key if the basename is given" do
76
+ spec = self
77
+ configure_attachment do
78
+ path "#{spec.temporary_directory}/:attachment.:style/:basename"
79
+ end
80
+ @thing.photo.interpolate_path(:original, :basename => 'file.xyz').should == "#{temporary_directory}/photo.original/file.xyz"
81
+ end
82
+
83
+ it "should support the :extension interpolation key if the basename is given" do
84
+ spec = self
85
+ configure_attachment do
86
+ path "#{spec.temporary_directory}/:attachment.:style.:extension"
87
+ end
88
+ @thing.photo.interpolate_path(:original, :basename => 'file.xyz').should == "#{temporary_directory}/photo.original.xyz"
89
+ end
90
+
91
+ it "should support the :extension interpolation key if the extension is given" do
92
+ spec = self
93
+ configure_attachment do
94
+ path "#{spec.temporary_directory}/:attachment.:style.:extension"
95
+ end
96
+ @thing.photo.interpolate_path(:original, :extension => 'xyz').should == "#{temporary_directory}/photo.original.xyz"
97
+ end
82
98
  end
83
- @thing.photo.interpolate_url(:original).should == "/photo.original.jpg"
84
99
  end
100
+ end
85
101
 
86
- it "should use the given interpolation parameters" do
87
- spec = self
88
- configure_attachment do
89
- url "/:attachment.:style.jpg"
102
+ describe "#interpolate_url" do
103
+ describe "when the url template is a Symbol" do
104
+ before do
105
+ Thing.class_eval do
106
+ has_attachment :photo do
107
+ url :test_url
108
+ end
109
+
110
+ define_method :test_url do |@name, @style|
111
+ "#{name}-#{style.name}"
112
+ end
113
+
114
+ attr_reader :name, :style
115
+ end
116
+ @thing = Thing.new
90
117
  end
91
- @thing.photo.interpolate_url(:original, :style => 'STYLE').should == "/photo.STYLE.jpg"
92
- end
93
118
 
94
- it "should use the style's format attribute for the extension by default" do
95
- spec = self
96
- configure_attachment do
97
- style :processed, :format => 'png'
98
- url "/:attachment.:style.:extension"
119
+ it "should call the specified method with the attachment name and style" do
120
+ @thing.photo.interpolate_url(:original).should == "photo-original"
121
+ @thing.name == :photo
122
+ @thing.style.name == :original
99
123
  end
100
- @thing.photo.interpolate_url(:processed).should == "/photo.processed.png"
101
124
  end
102
125
 
103
- describe "for the original style" do
104
- it "should support the :basename interpolation key if the basename is given" do
126
+ describe "when the url template is a String" do
127
+ it "should return the url that the given style name would be found at" do
105
128
  spec = self
106
129
  configure_attachment do
107
- url "/:attachment.:style/:basename"
130
+ url "/:attachment.:style.jpg"
108
131
  end
109
- @thing.photo.interpolate_url(:original, :basename => 'file.xyz').should == "/photo.original/file.xyz"
132
+ @thing.photo.interpolate_url(:original).should == "/photo.original.jpg"
110
133
  end
111
134
 
112
- it "should support the :extension interpolation key if the basename is given" do
135
+ it "should use the given interpolation parameters" do
113
136
  spec = self
114
137
  configure_attachment do
115
- url "/:attachment.:style.:extension"
138
+ url "/:attachment.:style.jpg"
116
139
  end
117
- @thing.photo.interpolate_url(:original, :basename => 'file.xyz').should == "/photo.original.xyz"
140
+ @thing.photo.interpolate_url(:original, :style => 'STYLE').should == "/photo.STYLE.jpg"
118
141
  end
119
142
 
120
- it "should support the :extension interpolation key if the extension is given" do
143
+ it "should use the style's format attribute for the extension by default" do
121
144
  spec = self
122
145
  configure_attachment do
146
+ style :processed, :format => 'png'
123
147
  url "/:attachment.:style.:extension"
124
148
  end
125
- @thing.photo.interpolate_url(:original, :extension => 'xyz').should == "/photo.original.xyz"
149
+ @thing.photo.interpolate_url(:processed).should == "/photo.processed.png"
150
+ end
151
+
152
+ describe "for the original style" do
153
+ it "should support the :basename interpolation key if the basename is given" do
154
+ spec = self
155
+ configure_attachment do
156
+ url "/:attachment.:style/:basename"
157
+ end
158
+ @thing.photo.interpolate_url(:original, :basename => 'file.xyz').should == "/photo.original/file.xyz"
159
+ end
160
+
161
+ it "should support the :extension interpolation key if the basename is given" do
162
+ spec = self
163
+ configure_attachment do
164
+ url "/:attachment.:style.:extension"
165
+ end
166
+ @thing.photo.interpolate_url(:original, :basename => 'file.xyz').should == "/photo.original.xyz"
167
+ end
168
+
169
+ it "should support the :extension interpolation key if the extension is given" do
170
+ spec = self
171
+ configure_attachment do
172
+ url "/:attachment.:style.:extension"
173
+ end
174
+ @thing.photo.interpolate_url(:original, :extension => 'xyz').should == "/photo.original.xyz"
175
+ end
126
176
  end
127
177
  end
128
178
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 2
8
- - 0
9
- version: 0.2.0
8
+ - 1
9
+ version: 0.2.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - George Ogata
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-07-14 00:00:00 -04:00
17
+ date: 2010-07-15 00:00:00 -04:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency