view 1.0.0.alpha.3 → 1.0.0.alpha.4

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.
Files changed (36) hide show
  1. data/README.rdoc +269 -51
  2. data/lib/view/configuration.rb +55 -0
  3. data/lib/view/formatter.rb +8 -12
  4. data/lib/view/formatters/array.rb +1 -1
  5. data/lib/view/formatters/auto.rb +6 -2
  6. data/lib/view/formatters/definition_list.rb +110 -0
  7. data/lib/view/formatters/file_link.rb +1 -1
  8. data/lib/view/formatters/guess.rb +2 -2
  9. data/lib/view/formatters/human.rb +1 -0
  10. data/lib/view/formatters/image.rb +49 -8
  11. data/lib/view/formatters/link.rb +29 -4
  12. data/lib/view/formatters/percentage.rb +3 -1
  13. data/lib/view/formatters/phone.rb +1 -0
  14. data/lib/view/formatters/precision.rb +3 -1
  15. data/lib/view/formatters/size.rb +7 -0
  16. data/lib/view/formatters/table.rb +208 -0
  17. data/lib/view/helper.rb +27 -0
  18. data/lib/view/railtie.rb +1 -1
  19. data/lib/view/version.rb +1 -1
  20. data/lib/view.rb +28 -56
  21. data/spec/spec_helper.rb +52 -4
  22. data/spec/view/configuration_spec.rb +11 -0
  23. data/spec/view/formatters/currency_spec.rb +2 -6
  24. data/spec/view/formatters/definition_list_spec.rb +59 -0
  25. data/spec/view/formatters/delimited_spec.rb +2 -6
  26. data/spec/view/formatters/html_safe_spec.rb +13 -0
  27. data/spec/view/formatters/human_spec.rb +9 -0
  28. data/spec/view/formatters/image_spec.rb +36 -0
  29. data/spec/view/formatters/link_spec.rb +20 -0
  30. data/spec/view/formatters/percentage_spec.rb +15 -0
  31. data/spec/view/formatters/phone_spec.rb +15 -0
  32. data/spec/view/formatters/precision_spec.rb +15 -0
  33. data/spec/view/formatters/size_spec.rb +15 -0
  34. data/spec/view/formatters/table_spec.rb +131 -0
  35. data/spec/view/helper_spec.rb +26 -4
  36. metadata +29 -4
data/README.rdoc CHANGED
@@ -2,79 +2,304 @@
2
2
 
3
3
  {Source}[http://github.com/iain/view] | {Documentation}[http://rubydoc.info/github/iain/view/master/frames]
4
4
 
5
- Automatic viewer. Very configurable. Very flexible. Very alpha (for now).
5
+ View is a DSL to help you make default representations of objects. It's goal is not to add complex
6
+ logic, but to help you make it really easy to display default elements.
6
7
 
7
- It is made for displaying stuff in views. This can be very handy for DSLs that create views.
8
- Some of those DSLs are coming soon to a rubygem near you!
8
+ Some features:
9
9
 
10
- But first, the view!
10
+ * View will automatically display your objects as you expect them to be.
11
+ * View is smart about blank objects, so no more checking it in your views.
12
+ * View contains many formatters, some really complex, and is very extensible.
13
+ * View allows for exceptions by using the power of blocks.
14
+ * View is designed to be short and looks at home in HAML.
15
+ * Optional support for InheritedResources.
11
16
 
12
- == Usage
17
+ This gem was inspired by {formtastic}[http://github.com/justinfrench/formtastic] and
18
+ {simple_form}[http://github.com/plataformatec/simple_form]. It has been extracted from the helper
19
+ methods I use regularly myself, but as a gem, View has still a long way to go.
13
20
 
14
- Use it from your views:
21
+ == Installation
22
+
23
+ Just add it to your Gemfile:
24
+
25
+ gem 'view'
26
+
27
+ Run `bundle install` and you're ready to go!
28
+
29
+ == Basic Usage
15
30
 
16
- <%= view @post %>
31
+ It' usually done through the `view` helper method.
32
+
33
+ = view @post
17
34
 
18
35
  View will try to figure out what the most logical way is to present the object you passed in.
19
36
  If the @post object has a title for instance, it will use that.
20
37
 
21
- See the auto formatter for more information.
38
+ View will automatically try to choose the proper formatter. The following will use I18n for
39
+ formatting the time correctly:
22
40
 
23
- You can use view anywhere you like:
41
+ = view @post.created_at
24
42
 
25
- puts View.format(@post)
43
+ Normally I18n.localize will throw an exception if the value were to be nil, so you'd have to
44
+ check for that yourself. View does this for you.
26
45
 
27
- But beware that for many formatters, a reference to the template is required.
28
- It is a helper for the view part of your application after all.
46
+ You can specify a formatter yourself:
29
47
 
30
- == Options
48
+ = view @post.created_at, :as => :date
31
49
 
32
- View will automatically try to choose the proper formatter. You can specify a formatter yourself:
50
+ You can add a block to specify your own behavior. The formatter is passed in as a block-variable.
51
+ On the formatter the following methods are always available:
33
52
 
34
- <%= view @post.created_at, :as => :date %>
53
+ * `to_s` gets the formatted result
54
+ * `value` gets the original value
55
+ * `options` will return a (filtered) options hash, complete with defaults
35
56
 
36
- You can add a block to specify your own behavior. The formatter is passed in as a block-variable.
57
+ Example:
37
58
 
38
- <%= view @post.author do |formatter| %>
39
- <%= link_to formatter.to_s, formatter.value %>
40
- <% end %>
59
+ = view @post.author do |formatter|
60
+ = link_to formatter.to_s, backend_user_path(formatter.value)
41
61
 
42
- Most formatters pass their options down to the method they use, such as the image formatter:
62
+ Most formatters pass their options down to the method they use, such as the date formatter:
43
63
 
44
- <%= view @user.avatar, :as => :image, :size => "40x40", :class => "avatar" %>
64
+ = view @post.created_at, :format => :short
45
65
 
46
66
  == Examples
47
67
 
48
- There are many formatters included (18 and counting), but here are some interesting use cases of some of them.
68
+ Now that we've got the basics down, let's continue with some more advanced examples.
69
+ There are a lot of formatters that do very trivial things. This is because they are meant to be
70
+ used inside other formatters. Let's start with some bigger formatters to give you an idea.
71
+
72
+ === Table
73
+
74
+ You can render a table quite easily. If you're displaying a collection of ActiveRecord objects,
75
+ it's even trivial:
76
+
77
+ = view @posts, :as => :table
78
+
79
+ or even:
80
+
81
+ = table_for @posts
82
+
83
+ This will display all columns, properly formatted, as you would expect. All columns might be a bit
84
+ too much, so let's slim the table down:
85
+
86
+ = table_for @posts, :fields => [ :title, :author, :published_at ]
87
+
88
+ Turn the titles into links:
89
+
90
+ = table_for @posts, :fields => [ :title, :author, :published_at ], :link => :title
91
+
92
+ Ok, nice, but this is rather ugly. This list might get very long. Also, what if you want to
93
+ control how certain columns are formatted? The solution is simple: use a block:
94
+
95
+ = table_for @posts do |table|
96
+
97
+ = table.view :title, :as => :link
98
+
99
+ = table.view :author do |formatter|
100
+ = link_to formatter.to_s, formatter.value
101
+
102
+ = table.view :published_at, :as => :date
103
+
104
+ Now the power of the simple formatters can be fully appreciated.
105
+
106
+ The table formatter will display a simple table. If you want to control what the table looks like,
107
+ you can add a partial to your application in `app/views/shared/_table.html.haml` (or erb). Since
108
+ this gem is a Rails 3 engine, it will automatically choose your own version over the one provided
109
+ by this gem.
110
+
111
+ One final note on tables: If you're using the gem
112
+ {InheritedResources}[http://github.com/josevalim/inherited_resources], or something similar, you
113
+ can just call `table` from the index view, and it will automatically use the collection.
114
+
115
+ = table
116
+
117
+ See the {documentation}[http://rubydoc.info/github/iain/view/master/View/Table] for more
118
+ information on tables.
119
+
120
+ === Definition lists
121
+
122
+ You can generate definition lists in rather the same fashion as tables.
123
+ Definition Lists are great for the show pages in a backend.
124
+
125
+ On it's own:
126
+
127
+ = view @post, :as => :definition_list
128
+
129
+ Or even:
130
+
131
+ = definition_list_for @post
132
+
133
+ Or if you're using InheritedResources:
134
+
135
+ = definition_list
136
+
137
+ You can also specify fields:
138
+
139
+ = definition_list_for @post, :fields => [ :title, :author ]
140
+
141
+ And you can also use a block to go specific:
142
+
143
+ = definition_list_for @post do |dl|
144
+
145
+ = dl.view :title, :as => :link
146
+ = dl.view :author
147
+ = dl.view :published_on, :as => :date
148
+
149
+ See the {documentation}[http://rubydoc.info/github/iain/view/master/View/DefinitionList] for more
150
+ information on definition lists.
151
+
152
+ === Other formatters
153
+
154
+ No we've seen the biggest formatters, let's look at some smaller ones.
155
+
156
+ Some of these are longer than their regular Rails counterparts. In that case, remember that
157
+ they can be easily used inside the table or definition list. Most of the common Rails helpers
158
+ have been converted to formatters for that reason.
159
+
160
+ ==== Links
161
+
162
+ Links can be quite easy:
163
+
164
+ = view @post, :as => :link
165
+
166
+ You can provide options too:
167
+
168
+ = view @post, :as => :link, :method => :delete, :confirm => "are you sure?"
169
+
170
+ And you can link to the specific versions of the page, using the awesome power of Rails'
171
+ `polymorphic_path`.
172
+
173
+ = view @post, :as => :link, :path => [ :edit, :backend ]
49
174
 
50
- # Options are passed to the helper methods:
51
- view @post, :as => :link, :method => :delete, :confirm => "are you sure?"
175
+ {Documentation}[http://rubydoc.info/github/iain/view/master/View/Link]
52
176
 
53
- # Renders a link to the edit_page of the post:
54
- view @post, :as => :link, :path => [ :edit ]
177
+ ==== Sentences
55
178
 
56
- # Renders a sentence of links:
57
- view Post.all, :each => { :as => :link }
179
+ Create a simple sentence of an array, propery formatting each element:
58
180
 
59
- # When using paperclip, renders the image:
60
- view @project.logo, :as => :image
181
+ = view @post.tags, :as => :sentence
182
+
183
+ Or even create a sentence of links:
184
+
185
+ = view @post.tags, :as => :sentence, :each => { :as => :link }
186
+
187
+ {Documentation}[http://rubydoc.info/github/iain/view/master/View/Sentence]
188
+
189
+ ==== Images and file links
190
+
191
+ There is also some support for uploaded files with paperclip.
192
+
193
+ The following displays the user's (resized) avatar:
194
+
195
+ = view @user.avatar, :as => :image, :style => :thumbnail
196
+
197
+ Or, if it isn't an image:
198
+
199
+ = view @project.document, :as => :file_link
200
+
201
+ {Image Documentation}[http://rubydoc.info/github/iain/view/master/View/Image]
202
+ {FileLink Documentation}[http://rubydoc.info/github/iain/view/master/View/FileLink]
203
+
204
+ ==== Booleans
205
+
206
+ Booleans are automatically determined and converted into "Yes" and "No".
61
207
 
62
- # Renders "yes" or "no" (with I18n support!)
63
208
  view @user.admin?
64
209
 
65
- See the formatters in lib/views/formatters to see their full documentation.
210
+ You can change the text via I18n:
211
+
212
+ en:
213
+ view:
214
+ booleans:
215
+ 'true': Yup
216
+ 'false': Nope
217
+
218
+ {Documentation}[http://rubydoc.info/github/iain/view/master/View/Boolean]
219
+
220
+ ==== Blank values
221
+
222
+ Blank values are usually caught before any other formatter. So the Blank formatter can be used
223
+ even if you chose another.
224
+
225
+ So if the post hasn't been published, it will use the blank formatter.
226
+
227
+ = view @post.published_at
228
+
229
+ Normally, the blank formatter doesn't output anything. You can change that by using I18n:
230
+
231
+ en:
232
+ view:
233
+ blank: "<em>~</em>"
234
+
235
+
236
+ {Documentation}[http://rubydoc.info/github/iain/view/master/View/Blank]
237
+
238
+ == Configuration
239
+
240
+ There a lots of ways to configure the gem itself and individual formatters too! Let's go over
241
+ the most important ones:
242
+
243
+ The `guess` formatter looks for methods it considers to be safe to display. The default list is
244
+
245
+ * `to_label`
246
+ * `display_name`
247
+ * `full_name`
248
+ * `title`
249
+ * `username`
250
+ * `login`
251
+ * `value`
252
+ * `to_s`
253
+
254
+ It will use the first one it can find. If you want to add a method to that list, you can add
255
+ a file in your initializers and write:
256
+
257
+ View.configure do |config|
258
+ config.guessing_methods = [ :my, :own, :methods ]
259
+ end
260
+
261
+ If you wrote your own formatter that you would rather use, instead of the `auto` formatter:
262
+
263
+ View.configure do |config|
264
+ config.default_formatter = :my_own_formatter
265
+ end
266
+
267
+ There is also a default formatter for arrays, which you can change like this:
268
+
269
+ View.configure do |config|
270
+ config.default_list_formatter = :sentence
271
+ end
272
+
273
+ {Configuration}[http://rubydoc.info/github/iain/view/master/View/Configuration]
274
+
275
+ You might have a special object, that you want to be rendered with your favorite formatter.
276
+ You can let the auto formatter know about it. Say you want to display all numbers as delimited
277
+ values (using the `number_with_delimiter` helper from Rails):
278
+
279
+ View::Auto.add :delimited do
280
+ value.is_a?(Fixnum)
281
+ end
282
+
283
+ {Auto formatter}[http://rubydoc.info/github/iain/view/master/View/Auto]
284
+
285
+ You can also customize formatters default options. To change every unit in currency,
286
+ you can use this:
287
+
288
+ View::Currency.default_options = { :unit => "Cubits", :format => "%n %s" }
289
+
290
+ Remember that the Rails number formatters can also be configured using I18n.
66
291
 
67
292
  == Adding formatters
68
293
 
69
- You can add a formatter by inheriting from +View::Formatter+.
70
- The only method you need to implement is the +format+ method.
294
+ You can add a formatter by inheriting from `View::Formatter`.
295
+ The only method you need to implement is the `format` method.
71
296
 
72
297
  In the class you have access to the following methods:
73
298
 
74
- * +value+: the object passed in
75
- * +options+: a filtered hash of options
76
- * +all_options+: the unfiltered hash
77
- * +template+: call methods like link_to on this
299
+ * `value`: the object passed in
300
+ * `options`: a filtered hash of options
301
+ * `all_options`: the unfiltered hash
302
+ * `template`: call methods like link_to on this
78
303
 
79
304
  If you wanted a uppercase formatter for example, you could do this:
80
305
 
@@ -88,7 +313,7 @@ If you wanted a uppercase formatter for example, you could do this:
88
313
 
89
314
  The name of the formatter is automatically infered from the name of the class.
90
315
 
91
- You can use the +.as+ method to specify a different name.
316
+ You can use the `.as` method to specify a different name.
92
317
 
93
318
  class Foo < View::Formatter
94
319
  as :bar
@@ -102,7 +327,7 @@ You can control which options are allowed, by adding reserved options:
102
327
  end
103
328
 
104
329
  Now, the options method will return the options passed by the user, minus foo and bar.
105
- To use them, in your code, use the +all_options+ method.
330
+ To use them, in your code, use the `all_options` method.
106
331
  This is done to easily pass the options to another method, without cluttering:
107
332
 
108
333
  class Paragraph < View::Formatter
@@ -122,22 +347,15 @@ To more tightly control which options are allowed, specify the allowed options:
122
347
 
123
348
  You can use the existing formatters as examples.
124
349
 
125
- == Configuration:
126
-
127
- See +lib/view.rb+ for information on configuration.
128
-
129
- == Installation
130
-
131
- Just add it to your Gemfile:
132
-
133
- gem 'view'
134
-
135
- Run +bundle install+ and you're ready to go!
350
+ {Documentation}[http://rubydoc.info/github/iain/view/master/View/Formatter]
136
351
 
137
352
  == Contributing
138
353
 
139
354
  Yes please! You know the drill: fork, commit, pull request, profit!
140
355
 
356
+ I'm especially interested in ideas for formatters and new use cases.
357
+ Use the {issue tracker}[http://github.com/iain/view/issues] to let me know!
358
+
141
359
  == License
142
360
 
143
361
  Copyright 2010 Iain Hecker (iain@iain.nl), released under the MIT License.
@@ -0,0 +1,55 @@
1
+ module View
2
+
3
+ # The central place for all configuration.
4
+ class Configuration
5
+
6
+ # Used by the guess filter, these are the methods used to format an object.
7
+ # It will use the first method that the object responds to.
8
+ attr_accessor :guessing_methods
9
+
10
+ # To determine if something is an uploaded image, it checks
11
+ # to see whether it responds to one of these methods.
12
+ attr_accessor :file_methods
13
+
14
+ # To show an image, it will use one of these methods to get the src
15
+ # attribute.
16
+ attr_accessor :path_methods
17
+
18
+ # You can set a default argument for rendering images, like the style or size
19
+ # of the image. It will be passed to one of the path_methods.
20
+ attr_accessor :path_arguments
21
+
22
+ # Which formatter will be used by default. The default is auto, which does
23
+ # all sorts of interesting stuff to see what to do.
24
+ attr_accessor :default_formatter
25
+
26
+ # The auto formatter will choose this formatter by default when your value is
27
+ # an array (or really, something that responds to +each+).
28
+ attr_accessor :default_list_formatter
29
+
30
+ # Shorthand for configuring this gem.
31
+ #
32
+ # @example In +config/initializers/view.rb+
33
+ #
34
+ # View.configure do |config|
35
+ # config.default_formatter = :self
36
+ # end
37
+ #
38
+ # @yield [config] The View module
39
+ def configure
40
+ yield self
41
+ end
42
+
43
+ def initialize
44
+ self.guessing_methods = %w|to_label display_name full_name name title
45
+ username login value to_s|
46
+ self.file_methods = %w|file? mounted_as public_filename|
47
+ self.path_methods = %w|url mounted_as public_filename|
48
+ self.path_arguments = []
49
+ self.default_formatter = :auto
50
+ self.default_list_formatter = :sentence
51
+ end
52
+
53
+ end
54
+
55
+ end
@@ -9,7 +9,7 @@ module View
9
9
  self.default_options = {}
10
10
 
11
11
  class_inheritable_array :reserved_options
12
- self.reserved_options = [ :as, :block_arguments ]
12
+ self.reserved_options = [ :as ]
13
13
 
14
14
  class_inheritable_array :allowed_options
15
15
  self.allowed_options = []
@@ -47,7 +47,7 @@ module View
47
47
 
48
48
  # By default, blank values (nil, empty strings, etc), will override any
49
49
  # formatter you specified. This way empty values are handled globally.
50
- #
50
+ #
51
51
  # If you don't want this, you can either turn it off per formatter.
52
52
  # Call this method to turn it off.
53
53
  #
@@ -81,7 +81,7 @@ module View
81
81
  # It's generally a good idea to black list options that you use inside your
82
82
  # formatter.
83
83
  #
84
- # The options +:as+ and +:block_arguments+ are black listed by default.
84
+ # The option +:as+ is black listed by default.
85
85
  #
86
86
  # @example White listing:
87
87
  #
@@ -148,7 +148,7 @@ module View
148
148
  end
149
149
 
150
150
  def self.formatters
151
- View.formatters ||= []
151
+ View.formatters
152
152
  end
153
153
 
154
154
  def initialize(value, options = {}, template = nil, &block)
@@ -160,7 +160,7 @@ module View
160
160
 
161
161
  def formatted_value
162
162
  formatter_not_found unless formatter
163
- formatter.new(value, all_options, template, &block).format!
163
+ formatter.new(value, all_options, template, &block).send(:format!)
164
164
  end
165
165
 
166
166
  def template_can_capture?
@@ -176,11 +176,11 @@ module View
176
176
  end
177
177
 
178
178
  def captured_value_by_template
179
- template.capture(self, *block_arguments, &block)
179
+ template.capture(self, &block)
180
180
  end
181
181
 
182
182
  def captured_return_value
183
- block.call(self, *block_arguments)
183
+ block.call(self)
184
184
  end
185
185
 
186
186
  def formatter
@@ -204,12 +204,8 @@ module View
204
204
  end
205
205
  end
206
206
 
207
- def block_arguments
208
- all_options[:block_arguments] || []
209
- end
210
-
211
207
  def as
212
- all_options[:as] || View.default_formatter
208
+ all_options[:as] || View.configuration.default_formatter
213
209
  end
214
210
 
215
211
  def blank_formatter
@@ -27,7 +27,7 @@ module View
27
27
  end
28
28
 
29
29
  def each_options
30
- all_options[:each] || { :as => View.default_formatter }
30
+ all_options[:each] || { :as => View.configuration.default_formatter }
31
31
  end
32
32
 
33
33
  end
@@ -43,7 +43,7 @@ module View
43
43
  as ? as[:formatter] : :guess
44
44
  end
45
45
 
46
- add View.default_list_formatter do
46
+ add View.configuration.default_list_formatter do
47
47
  value.respond_to?(:each)
48
48
  end
49
49
 
@@ -52,13 +52,17 @@ module View
52
52
  end
53
53
 
54
54
  add :file_link do
55
- View.file_methods.any? { |method| value.respond_to?(method) }
55
+ View.configuration.file_methods.any? { |method| value.respond_to?(method) }
56
56
  end
57
57
 
58
58
  add :link do
59
59
  all_options.has_key?(:to)
60
60
  end
61
61
 
62
+ add :self do
63
+ value.is_a?(String)
64
+ end
65
+
62
66
  add :blank do
63
67
  value.blank?
64
68
  end
@@ -0,0 +1,110 @@
1
+ module View
2
+
3
+ # Creates a simple definition list for an object.
4
+ # This works well with ActiveRecord objects.
5
+ # Without a block it will render all fields. You can specify the fields
6
+ # using the `fields` option.
7
+ #
8
+ # You can use a block, to further format the way the definition items are
9
+ # formatted.
10
+ #
11
+ # @example Without a block
12
+ #
13
+ # = view @post, :as => :definition_list, :fields => [ :title, :author ]
14
+ #
15
+ # @example With a block
16
+ #
17
+ # = view @post, :as => :definition_list do |dl|
18
+ # = dl.view :title
19
+ # = dl.view :author
20
+ # = dl.view :published_at, :as => :date
21
+ #
22
+ class DefinitionList < Formatter
23
+
24
+ self.reserved_options = [ :fields ]
25
+
26
+ # This will add the dt and dd tags.
27
+ #
28
+ # @param [Symbol] attribute The name of the attribute to be called on +value+
29
+ # @param [Hash] options These will be delegated to the formatting of the
30
+ # attribute's value.
31
+ # @yield [formatter] The block will be used for formatting the attribute's
32
+ # value
33
+ def view(attribute, options = {}, &block)
34
+ tag = Attribute.new(value, attribute, block, template, options)
35
+ tag.dt + tag.dd
36
+ end
37
+
38
+ protected
39
+
40
+ def format!
41
+ template.content_tag(:dl, super, options)
42
+ end
43
+
44
+ def format
45
+ unless block
46
+ fields.inject("".html_safe) do |html, field|
47
+ html << view(field)
48
+ end
49
+ end
50
+ end
51
+
52
+ def fields
53
+ all_options[:fields] || all_fields
54
+ end
55
+
56
+ private
57
+
58
+ def all_fields
59
+ value_class.respond_to?(:column_names) ? value_class.column_names : []
60
+ end
61
+
62
+ def value_class
63
+ value.class
64
+ end
65
+
66
+ # Helper class for definition lists
67
+ class Attribute < Struct.new(:resource, :attribute, :block, :template, :options)
68
+
69
+ def dt
70
+ tag :dt, name
71
+ end
72
+
73
+ def dd
74
+ tag :dd, value
75
+ end
76
+
77
+ private
78
+
79
+ def tag(type, value)
80
+ template.content_tag(type, value, html_options)
81
+ end
82
+
83
+ def name
84
+ if klass.respond_to?(:human_attribute_name)
85
+ klass.human_attribute_name(attribute)
86
+ else
87
+ attribute.to_s.titleize
88
+ end
89
+ end
90
+
91
+ def klass
92
+ resource.class
93
+ end
94
+
95
+ def value
96
+ View.format(original_value, options, template, &block)
97
+ end
98
+
99
+ def original_value
100
+ resource.send(attribute)
101
+ end
102
+
103
+ def html_options
104
+ { :class => attribute }
105
+ end
106
+
107
+ end
108
+
109
+ end
110
+ end
@@ -25,7 +25,7 @@ module View
25
25
  end
26
26
 
27
27
  def path
28
- View.path_methods.each do |method|
28
+ View.configuration.path_methods.each do |method|
29
29
  return value.send(method) if value.respond_to?(method)
30
30
  end
31
31
  nil
@@ -3,11 +3,11 @@ module View
3
3
  # This formatter is the fallback formatter for auto. It figures out which
4
4
  # method will be called to get a proper version to render.
5
5
  #
6
- # @see View.guessing_methods
6
+ # @see View::Configuration#guessing_methods
7
7
  class Guess < Formatter
8
8
 
9
9
  def format
10
- View.guessing_methods.each do |method|
10
+ View.configuration.guessing_methods.each do |method|
11
11
  return value.send(method) if value.respond_to?(method)
12
12
  end
13
13
  value
@@ -2,6 +2,7 @@ module View
2
2
 
3
3
  # The number_to_human helper was introduced in Rails 3.
4
4
  # It will give results like "10 thousand"
5
+ # @see http://rubydoc.info/docs/rails/3.0.1/ActionView/Helpers/NumberHelper:number_to_human
5
6
  class Human < Formatter
6
7
 
7
8
  self.allowed_options = [ :locale, :precision, :significant, :separator, :delimiter,