show_for 0.1.6 → 0.2.0

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/README.rdoc CHANGED
@@ -7,12 +7,12 @@ ShowFor allows you to quickly show a model information with I18n features.
7
7
  <%= u.attribute :nickname, :in => :profile %>
8
8
  <%= u.attribute :confirmed? %>
9
9
  <%= u.attribute :created_at, :format => :short %>
10
- <%= u.attribute :last_sign_in_at, :if_blank => "User did not access yet"
10
+ <%= u.attribute :last_sign_in_at, :if_blank => "User did not access yet",
11
11
  :wrapper_html => { :id => "sign_in_timestamp" } %>
12
12
 
13
- <% u.attribute :photo do %>
14
- <%= image_tag(@user.photo_url) %>
15
- <% end %>
13
+ <% u.attribute :photo do
14
+ <%= image_url(@user.photo_url) %>
15
+ end %>
16
16
 
17
17
  <%= u.association :company %>
18
18
  <%= u.association :tags, :to_sentence => true %>
@@ -22,17 +22,16 @@ ShowFor allows you to quickly show a model information with I18n features.
22
22
 
23
23
  Install the gem:
24
24
 
25
- sudo gem install show_for --version=0.1.3
26
-
27
- Configure simple_form gem inside your app:
28
-
29
- config.gem 'show_for'
25
+ sudo gem install show_for --version=0.2
30
26
 
31
27
  Run the generator:
32
28
 
33
- ruby script/generate show_for_install
29
+ rails generate show_for_install
30
+
31
+ And you are ready to go. Since this branch is aims Rails 3 support,
32
+ if you want to use it with Rails 2.3 you should check this branch:
34
33
 
35
- And you're ready to go.
34
+ http://github.com/plataformatec/show_for/tree/v0.1
36
35
 
37
36
  == Usage
38
37
 
@@ -46,7 +45,7 @@ ShowFor allows you to quickly show a model information with I18n features.
46
45
  :wrapper_html => { :id => "sign_in_timestamp" } %>
47
46
 
48
47
  <% a.attribute :photo do %>
49
- <%= image_tag(@admin.photo_url) %>
48
+ <%= image_url(@admin.photo_url) %>
50
49
  <% end %>
51
50
  <% end %>
52
51
 
@@ -101,8 +100,8 @@ options. Containers can have their tags configured on demand as well through
101
100
  show_for also exposes the label method. In case you want to use the default
102
101
  human_attribute_name lookup and the default wrapping:
103
102
 
104
- a.label :name #=> <strong class="label">Name</strong>
105
- a.label "Name", :id => "my_name" #=> <strong class="label" id="my_name">Name</strong>
103
+ a.label :name #=> <b class="label">Name</b>
104
+ a.label "Name", :id => "my_name" #=> <b class="label" id="my_name">Name</b>
106
105
 
107
106
  == Associations
108
107
 
data/init.rb CHANGED
@@ -1 +1 @@
1
- require 'show_for'
1
+ require 'show_for'
@@ -1,3 +1,3 @@
1
1
  To copy a ShowFor initializer to your Rails App, with some configuration values, just do:
2
2
 
3
- script/generate show_for_install
3
+ rails generate show_for_install
@@ -0,0 +1,19 @@
1
+ class ShowForInstallGenerator < Rails::Generators::Base
2
+ desc "Copy ShowFor installation files"
3
+
4
+ def self.source_root
5
+ @_source_root = File.expand_path('../templates', __FILE__)
6
+ end
7
+
8
+ def copy_initializers
9
+ copy_file 'show_for.rb', 'config/initializers/show_for.rb'
10
+ end
11
+
12
+ def copy_locale_file
13
+ copy_file 'en.yml', 'config/locales/show_for.en.yml'
14
+ end
15
+
16
+ def copy_generator_template
17
+ copy_file 'show.html.erb', 'lib/templates/erb/scaffold/show.html.erb'
18
+ end
19
+ end
@@ -0,0 +1,8 @@
1
+ <%% show_for @<%= singular_name %> do |o| %>
2
+ <% attributes.each do |attribute| -%>
3
+ <%%= o.<%= attribute.reference? ? :association : :attribute %> :<%= attribute.name %> %>
4
+ <% end -%>
5
+ <%% end %>
6
+
7
+ <%%= link_to 'Edit', edit_<%= singular_name %>_path(@<%= singular_name %>) %> |
8
+ <%%= link_to 'Back', <%= plural_name %>_path %>
@@ -23,10 +23,8 @@ module ShowFor
23
23
  end
24
24
 
25
25
  def wrap_label_and_content(name, value, options, &block) #:nodoc:
26
- label = label(name, options, false)
27
- label += html_safe(ShowFor.separator.to_s) if label.present?
28
- wrap_with(:wrapper, label + content(value, options, false, &block),
29
- options, true, (value.is_a?(Proc) or collection_block?(block)))
26
+ wrap_with(:wrapper, label(name, options, false) + ShowFor.separator.to_s.html_safe +
27
+ content(value, options, false, &block), options, value.is_a?(Proc))
30
28
  end
31
29
 
32
30
  # Set "#{object_name}_#{attribute_name}" as in the wrapper tag.
@@ -39,7 +37,7 @@ module ShowFor
39
37
  # Gets the default tag set in ShowFor module and apply (if defined)
40
38
  # around the given content. It also check for html_options in @options
41
39
  # hash related to the current type.
42
- def wrap_with(type, content, options, safe=false, concat=false) #:nodoc:
40
+ def wrap_with(type, content, options, concat=false) #:nodoc:
43
41
  tag = options.delete(:"#{type}_tag") || ShowFor.send(:"#{type}_tag")
44
42
 
45
43
  html = if tag
@@ -50,8 +48,7 @@ module ShowFor
50
48
  content
51
49
  end
52
50
 
53
- html = html_safe(html) if safe
54
- concat ? @template.concat(html) : html
51
+ concat ? @template.safe_concat(html) : html.html_safe
55
52
  end
56
53
 
57
54
  # Returns true if the block is supposed to iterate through a collection,
@@ -59,16 +56,5 @@ module ShowFor
59
56
  def collection_block?(block) #:nodoc:
60
57
  block && block.arity == 1
61
58
  end
62
-
63
- # Ensure we make html safe only if it responds to it.
64
- def html_safe(content)
65
- if content.respond_to?(:html_safe)
66
- content.html_safe
67
- elsif content.respond_to?(:html_safe!)
68
- content.html_safe!
69
- else
70
- content
71
- end
72
- end
73
59
  end
74
- end
60
+ end
@@ -5,8 +5,6 @@ module ShowFor
5
5
  value = options.delete(:if_blank) || I18n.t(:'show_for.blank', :default => "Not specified")
6
6
  options[:class] = [options[:class], ShowFor.blank_content_class].join(' ')
7
7
  end
8
-
9
- value = value.to_a if value.is_a?(Array)
10
8
 
11
9
  content = case value
12
10
  when Date, Time, DateTime
@@ -45,4 +43,4 @@ module ShowFor
45
43
  wrap_with(:collection, response, options)
46
44
  end
47
45
  end
48
- end
46
+ end
@@ -9,7 +9,7 @@ module ShowFor
9
9
  human_attribute_name(text_or_attribute)
10
10
  end
11
11
 
12
- return nil.to_s if label == false
12
+ return "" if label == false
13
13
  options[:label_html] = options.dup if apply_options
14
14
  wrap_with :label, label, options
15
15
  end
@@ -20,4 +20,4 @@ module ShowFor
20
20
  @object.class.human_attribute_name(attribute.to_s)
21
21
  end
22
22
  end
23
- end
23
+ end
@@ -1,3 +1,3 @@
1
1
  module ShowFor
2
- VERSION = "0.1.6".freeze
3
- end
2
+ VERSION = "0.2.0".freeze
3
+ end
data/lib/show_for.rb CHANGED
@@ -18,6 +18,9 @@ module ShowFor
18
18
  mattr_accessor :blank_content_class
19
19
  @@blank_content_class = "blank"
20
20
 
21
+ mattr_accessor :blank_content
22
+ @@blank_content = ""
23
+
21
24
  mattr_accessor :wrapper_tag
22
25
  @@wrapper_tag = :p
23
26
 
data/test/builder_test.rb CHANGED
@@ -26,7 +26,7 @@ class BuilderTest < ActionView::TestCase
26
26
  end
27
27
  end
28
28
 
29
- # WRAPPER
29
+ # WRAPPER
30
30
  test "show_for attribute wraps each attribute with a label and content" do
31
31
  with_attribute_for @user, :name
32
32
  assert_select "div.show_for p.user_name.wrapper"
@@ -66,7 +66,6 @@ class BuilderTest < ActionView::TestCase
66
66
  test "show_for skips label if requested" do
67
67
  with_attribute_for @user, :name, :label => false
68
68
  assert_no_select "div.show_for p.wrapper strong.label"
69
- assert_no_select "div.show_for p.wrapper br"
70
69
  end
71
70
 
72
71
  test "show_for allows label to be configured globally" do
@@ -219,7 +218,7 @@ class BuilderTest < ActionView::TestCase
219
218
  with_content_for @user, "Special content", :content_tag => :b, :id => "thecontent", :class => "special"
220
219
  assert_select "div.show_for b#thecontent.special.content", "Special content"
221
220
  end
222
-
221
+
223
222
  test "show_for#content with blank value has a 'no value'-class" do
224
223
  swap ShowFor, :blank_content_class => "nothing" do
225
224
  with_content_for @user, nil, :content_tag => :b
@@ -227,6 +226,13 @@ class BuilderTest < ActionView::TestCase
227
226
  end
228
227
  end
229
228
 
229
+ test "show_for#content with blank value fallbacks on a default value" do
230
+ swap ShowFor, :blank_content => "Not specified" do
231
+ with_content_for @user, nil, :content_tag => :b
232
+ assert_select "div.show_for b", "Not specified"
233
+ end
234
+ end
235
+
230
236
  # COLLECTIONS
231
237
  test "show_for accepts an attribute as a collection" do
232
238
  with_attribute_for @user, :scopes
@@ -328,4 +334,4 @@ class BuilderTest < ActionView::TestCase
328
334
  assert_select "div.show_for p.wrapper p.collection span", "Tag 2"
329
335
  assert_select "div.show_for p.wrapper p.collection span", "Tag 3"
330
336
  end
331
- end
337
+ end
@@ -1,12 +1,16 @@
1
1
  require 'ostruct'
2
2
 
3
3
  class Company < Struct.new(:id, :name)
4
+ extend ActiveModel::Naming
5
+
4
6
  def alternate_name
5
7
  "Alternate #{self.name}"
6
8
  end
7
9
  end
8
10
 
9
11
  class Tag < Struct.new(:id, :name)
12
+ extend ActiveModel::Naming
13
+
10
14
  def self.all(options={})
11
15
  (1..3).map{ |i| Tag.new(i, "Tag #{i}") }
12
16
  end
@@ -17,6 +21,8 @@ class Tag < Struct.new(:id, :name)
17
21
  end
18
22
 
19
23
  class User < OpenStruct
24
+ extend ActiveModel::Naming
25
+
20
26
  # Get rid of deprecation warnings
21
27
  undef_method :id
22
28
 
data/test/test_helper.rb CHANGED
@@ -1,8 +1,7 @@
1
1
  require 'rubygems'
2
2
  require 'test/unit'
3
3
 
4
- gem 'actionpack', '2.3.9'
5
-
4
+ require 'active_model'
6
5
  require 'action_controller'
7
6
  require 'action_view/test_case'
8
7
 
metadata CHANGED
@@ -1,13 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: show_for
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 1
9
- - 6
10
- version: 0.1.6
4
+ version: 0.2.0
11
5
  platform: ruby
12
6
  authors:
13
7
  - "Jos\xC3\xA9 Valim"
@@ -15,7 +9,7 @@ autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
11
 
18
- date: 2010-10-08 00:00:00 -03:00
12
+ date: 2010-02-07 00:00:00 +01:00
19
13
  default_executable:
20
14
  dependencies: []
21
15
 
@@ -28,10 +22,12 @@ extensions: []
28
22
  extra_rdoc_files:
29
23
  - README.rdoc
30
24
  files:
31
- - generators/show_for_install/USAGE
32
- - generators/show_for_install/show_for_install_generator.rb
33
- - generators/show_for_install/templates/show_for.rb
34
25
  - init.rb
26
+ - lib/generators/show_for_install/USAGE
27
+ - lib/generators/show_for_install/show_for_install_generator.rb
28
+ - lib/generators/show_for_install/templates/en.yml
29
+ - lib/generators/show_for_install/templates/show.html.erb
30
+ - lib/generators/show_for_install/templates/show_for.rb
35
31
  - lib/show_for.rb
36
32
  - lib/show_for/association.rb
37
33
  - lib/show_for/attribute.rb
@@ -39,14 +35,8 @@ files:
39
35
  - lib/show_for/content.rb
40
36
  - lib/show_for/helper.rb
41
37
  - lib/show_for/label.rb
42
- - lib/show_for/locale/en.yml
43
38
  - lib/show_for/version.rb
44
39
  - README.rdoc
45
- - test/builder_test.rb
46
- - test/helper_test.rb
47
- - test/support/misc_helpers.rb
48
- - test/support/models.rb
49
- - test/test_helper.rb
50
40
  has_rdoc: true
51
41
  homepage: http://github.com/plataformatec/show_for
52
42
  licenses: []
@@ -57,27 +47,21 @@ rdoc_options:
57
47
  require_paths:
58
48
  - lib
59
49
  required_ruby_version: !ruby/object:Gem::Requirement
60
- none: false
61
50
  requirements:
62
51
  - - ">="
63
52
  - !ruby/object:Gem::Version
64
- hash: 3
65
- segments:
66
- - 0
67
53
  version: "0"
54
+ version:
68
55
  required_rubygems_version: !ruby/object:Gem::Requirement
69
- none: false
70
56
  requirements:
71
57
  - - ">="
72
58
  - !ruby/object:Gem::Version
73
- hash: 3
74
- segments:
75
- - 0
76
59
  version: "0"
60
+ version:
77
61
  requirements: []
78
62
 
79
63
  rubyforge_project:
80
- rubygems_version: 1.3.7
64
+ rubygems_version: 1.3.5
81
65
  signing_key:
82
66
  specification_version: 3
83
67
  summary: Wrap your objects with a helper to easily show them
@@ -1,19 +0,0 @@
1
- class ShowForInstallGenerator < Rails::Generator::Base
2
-
3
- def manifest
4
- record do |m|
5
- m.directory 'config/initializers'
6
- m.template 'show_for.rb', 'config/initializers/show_for.rb'
7
-
8
- m.directory 'config/locales'
9
- m.template locale_file, 'config/locales/show_for.en.yml'
10
- end
11
- end
12
-
13
- private
14
-
15
- def locale_file
16
- @locale_file ||= '../../../lib/show_for/locale/en.yml'
17
- end
18
-
19
- end