bulldog 0.2.0 → 0.2.1

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