weppos-helperful 0.2.2 → 0.3.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/CHANGELOG.rdoc CHANGED
@@ -1,6 +1,15 @@
1
1
  = Changelog
2
2
 
3
3
 
4
+ == Release 0.3.0
5
+
6
+ * ADDED: Added #javascript_content_for helper. #javascript_content_for combines the features of #content_for and #javascript_tag (closes #149).
7
+
8
+ * FIXED: has_content? raises an error when has_content isn't initialized (closes #179).
9
+
10
+ * CHANGED: Changed status to alpha and removed development warning (closes #151).
11
+
12
+
4
13
  == Release 0.2.2
5
14
 
6
15
  * FIXED: The "Unhandled special" error message for real!
data/README.rdoc CHANGED
@@ -2,8 +2,30 @@
2
2
 
3
3
  Helperful aims to be a collection of useful and reusable Rails helpers.
4
4
 
5
- *WARNING*: This library has not been released yet. This package seems stable, but should be considered a development release. You should not use it in production.
6
- Changes to specifications may occur at any time and without notice. For the full list of changes look at the CHANGELOG file.
5
+
6
+ == Rails Installation
7
+
8
+ === As a Gem
9
+
10
+ This is the preferred way to install Helperful and the best way if you want install a stable version.
11
+
12
+ $ gem install weppos-helperful --source http://gems.github.com
13
+
14
+ You can specify the GEM dependency in your application environment.rb file:
15
+
16
+ Rails::Initializer.run do |config|
17
+
18
+ # other configurations
19
+
20
+ config.gem "weppos-helperful", :lib => "helperful", :source => "http://gems.github.com"
21
+ end
22
+
23
+
24
+ === As a Plugin
25
+
26
+ This is the preferred way if you want to live on the edge and install a development version.
27
+
28
+ $ script/plugin install git://github.com/weppos/helperful.git
7
29
 
8
30
 
9
31
  == Getting Started
@@ -126,6 +148,24 @@ The <tt>has_content?</tt> helper is a natural fulfillment for the original <tt>c
126
148
  <% has_content? :foo # => true %>
127
149
  <% has_content? "foo" # => true %>
128
150
 
151
+
152
+ === Javascript Helper
153
+
154
+ Provides a set of helpers for working with JavaScript in your views.
155
+
156
+ The <tt>javascript_content_for</tt> helper combines the features of <tt>content_for</tt> and <tt>javascript_tag</tt> into a single helper.
157
+
158
+ <% javascript_content_for :head do %>
159
+ $("#id").hide();
160
+ <% end %>
161
+
162
+ The code above looks like much more readable than the following one. Isn't it?
163
+
164
+ <% javascript_content_for :head do; javascript_tag do %>
165
+ $("#id").hide();
166
+ <% end; end %>
167
+
168
+
129
169
  === Title Helper
130
170
 
131
171
  Provides an helper for managing page title in Rails views and layouts.
data/helperful.gemspec CHANGED
@@ -2,22 +2,22 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{helperful}
5
- s.version = "0.2.2"
5
+ s.version = "0.3.0"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Simone Carletti"]
9
- s.date = %q{2009-02-25}
9
+ s.date = %q{2009-03-11}
10
10
  s.description = %q{Helperful aims to be a collection of useful and reusable Rails helpers.}
11
11
  s.email = %q{weppos@weppos.net}
12
- s.extra_rdoc_files = ["CHANGELOG.rdoc", "lib/helperful/affiliations_helper.rb", "lib/helperful/content_helper.rb", "lib/helperful/deprecations.rb", "lib/helperful/title_helper.rb", "lib/helperful/version.rb", "lib/helperful.rb", "LICENSE.rdoc", "README.rdoc"]
13
- s.files = ["CHANGELOG.rdoc", "helperful.gemspec", "init.rb", "install.rb", "lib/helperful/affiliations_helper.rb", "lib/helperful/content_helper.rb", "lib/helperful/deprecations.rb", "lib/helperful/title_helper.rb", "lib/helperful/version.rb", "lib/helperful.rb", "LICENSE.rdoc", "rails/init.rb", "Rakefile", "README.rdoc", "tasks/helperful_tasks.rake", "test/affiliations_helper_test.rb", "test/content_helper_test.rb", "test/fixtures/content/has_content.html.erb", "test/fixtures/content/sidebar.html.erb", "test/fixtures/content/sidebar_concatenate.html.erb", "test/fixtures/layouts/has_content.html.erb", "test/fixtures/layouts/sidebar.html.erb", "test/helperful_test.rb", "test/test_helper.rb", "test/title_helper_test.rb", "uninstall.rb", "Manifest"]
12
+ s.extra_rdoc_files = ["CHANGELOG.rdoc", "lib/helperful/affiliations_helper.rb", "lib/helperful/content_helper.rb", "lib/helperful/deprecations.rb", "lib/helperful/javascript_helper.rb", "lib/helperful/title_helper.rb", "lib/helperful/version.rb", "lib/helperful.rb", "LICENSE.rdoc", "README.rdoc"]
13
+ s.files = ["CHANGELOG.rdoc", "helperful.gemspec", "init.rb", "install.rb", "lib/helperful/affiliations_helper.rb", "lib/helperful/content_helper.rb", "lib/helperful/deprecations.rb", "lib/helperful/javascript_helper.rb", "lib/helperful/title_helper.rb", "lib/helperful/version.rb", "lib/helperful.rb", "LICENSE.rdoc", "Manifest", "rails/init.rb", "Rakefile", "README.rdoc", "tasks/helperful_tasks.rake", "test/affiliations_helper_test.rb", "test/content_helper_test.rb", "test/fixtures/content/has_content.html.erb", "test/fixtures/content/has_content_is_called_alone.html.erb", "test/fixtures/content/sidebar.html.erb", "test/fixtures/content/sidebar_concatenate.html.erb", "test/fixtures/layouts/has_content.html.erb", "test/fixtures/layouts/sidebar.html.erb", "test/helperful_test.rb", "test/javascript_helper_test.rb", "test/test_helper.rb", "test/title_helper_test.rb", "uninstall.rb"]
14
14
  s.has_rdoc = true
15
15
  s.homepage = %q{http://code.simonecarletti.com/helperful}
16
16
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Helperful", "--main", "README.rdoc"]
17
17
  s.require_paths = ["lib"]
18
18
  s.rubygems_version = %q{1.3.1}
19
19
  s.summary = %q{A collection of useful Rails helpers.}
20
- s.test_files = ["test/affiliations_helper_test.rb", "test/content_helper_test.rb", "test/helperful_test.rb", "test/test_helper.rb", "test/title_helper_test.rb"]
20
+ s.test_files = ["test/affiliations_helper_test.rb", "test/content_helper_test.rb", "test/helperful_test.rb", "test/javascript_helper_test.rb", "test/test_helper.rb", "test/title_helper_test.rb"]
21
21
 
22
22
  if s.respond_to? :specification_version then
23
23
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
@@ -91,6 +91,7 @@ module Helperful
91
91
  # end
92
92
  #
93
93
  def has_content?(name)
94
+ @has_content ||= {}
94
95
  @has_content.key?(name.to_s)
95
96
  end
96
97
 
@@ -0,0 +1,84 @@
1
+ #
2
+ # = Helperful
3
+ #
4
+ # A collection of useful Rails helpers.
5
+ #
6
+ #
7
+ # Category:: Rails
8
+ # Package:: Helperful
9
+ # Author:: Simone Carletti <weppos@weppos.net>
10
+ # Copyright:: 2008-2009 The Authors
11
+ # License:: MIT License
12
+ #
13
+ #--
14
+ #
15
+ #++
16
+
17
+
18
+ module Helperful
19
+
20
+ #
21
+ # = Javascript Helper
22
+ #
23
+ # Provides a set of helpers for working with JavaScript in your views.
24
+ #
25
+ # ==== Requires
26
+ #
27
+ # The following requirements are mandatory for this module.
28
+ # Including this helper will automatically include them unless already included.
29
+ #
30
+ # * ActionView::Helpers::CaptureHelper
31
+ # * ActionView::Helpers::JavaScriptHelper
32
+ #
33
+ module JavascriptHelper
34
+
35
+ def self.included(base)
36
+ base.class_eval do
37
+ # base.included_modules.include?(ActionView::Helpers::CaptureHelper) || include(ActionView::Helpers::CaptureHelper)
38
+ # base.included_modules.include?(ActionView::Helpers::JavaScriptHelper) || include(ActionView::Helpers::JavaScriptHelper)
39
+ end
40
+ end
41
+
42
+ #
43
+ # Mixes the features of <tt>content_for</tt> and <tt>javascript_tag</tt> into a single helper.
44
+ #
45
+ # Supports all original method options and features, including the ability to use write the content
46
+ # in a block and javascript tag options.
47
+ #
48
+ # ==== Examples
49
+ #
50
+ # <% javascript_content_for :head do %>
51
+ # $("#id").hide();
52
+ # <% end %>
53
+ #
54
+ # The block is passed as it is to <tt>javascript_tag</tt>,
55
+ # then the result is stored as <tt>content_for</tt> :head.
56
+ # Now you can call <tt>yield</tt> and output your javascript content.
57
+ #
58
+ # <%= yield :head %>
59
+ #
60
+ # <script>$("#id").hide();</script>
61
+ #
62
+ # This example is equal to the following statements.
63
+ #
64
+ # <% javascript_content_for :head do; javascript_tag do %>
65
+ # $("#id").hide();
66
+ # <% end; end %>
67
+ #
68
+ # <% javascript_content_for :head do %>
69
+ # <script>$("#id").hide();</script>
70
+ # <% end %>
71
+ #
72
+ # You can make subsequent calls to <tt>javascript_content_for</tt> and <tt>content_for</tt>,
73
+ # the result for each call will be appended to the value currently stored for <tt>name</tt>.
74
+ #
75
+ def javascript_content_for(name, content_or_options_with_block = nil, html_options = {}, &block)
76
+ if block_given?
77
+ content_for(name, javascript_tag(content_or_options_with_block, &block))
78
+ else
79
+ content_for(name, javascript_tag(content_or_options_with_block, html_options))
80
+ end
81
+ end
82
+
83
+ end
84
+ end
@@ -19,8 +19,8 @@ module Helperful
19
19
 
20
20
  module Version
21
21
  MAJOR = 0
22
- MINOR = 2
23
- TINY = 2
22
+ MINOR = 3
23
+ TINY = 0
24
24
 
25
25
  STRING = [MAJOR, MINOR, TINY].join('.')
26
26
  end
@@ -17,7 +17,11 @@ class ContentController < ActionController::Base
17
17
  def has_content
18
18
  render :layout => "has_content"
19
19
  end
20
-
20
+
21
+ def has_content_is_called_alone
22
+ render :layout => false
23
+ end
24
+
21
25
  def rescue_action(e) raise end
22
26
  end
23
27
 
@@ -54,6 +58,12 @@ class ContentTest < ActiveSupport::TestCase
54
58
  `five' has content: this is 'five' for :five\n}, @response.body
55
59
  end
56
60
 
61
+ def test_has_content_is_called_alone
62
+ get :has_content_is_called_alone
63
+ assert_response :success
64
+ assert_equal('bar', @response.body)
65
+ end
66
+
57
67
  protected
58
68
 
59
69
  def expected_sidebar_content_for_output
@@ -0,0 +1 @@
1
+ <% if has_content? :foo %>foo<% end %><% if !has_content? :bar %>bar<% end %>
@@ -0,0 +1,53 @@
1
+ require 'test_helper'
2
+
3
+ class JavascriptHelperTest < ActionView::TestCase
4
+ tests Helperful::JavascriptHelper
5
+
6
+ attr_accessor :output_buffer
7
+
8
+ def setup
9
+ @content_for_name = nil
10
+ end
11
+
12
+ def test_javascript_content_for
13
+ javascript_content_for(:name, "alert('hello')")
14
+
15
+ assert_dom_equal "<script type=\"text/javascript\">\n//<![CDATA[\nalert('hello')\n//]]>\n</script>",
16
+ @content_for_name
17
+ end
18
+
19
+ def test_javascript_content_for_with_options
20
+ javascript_content_for(:name, "alert('hello')", :id => "the_js_tag")
21
+
22
+ assert_dom_equal "<script id=\"the_js_tag\" type=\"text/javascript\">\n//<![CDATA[\nalert('hello')\n//]]>\n</script>",
23
+ @content_for_name
24
+ end
25
+
26
+ def test_javascript_content_for_with_block_in_erb
27
+ __in_erb_template = ''
28
+ javascript_content_for(:name) { concat "alert('hello')" }
29
+
30
+ assert_dom_equal "<script type=\"text/javascript\">\n//<![CDATA[\nalert('hello')\n//]]>\n</script>",
31
+ @content_for_name
32
+ end
33
+
34
+ def test_javascript_content_for_with_block_in_erb_and_options
35
+ __in_erb_template = ''
36
+ javascript_content_for(:name, :id => "the_js_tag") { concat "alert('hello')" }
37
+
38
+ assert_dom_equal "<script id=\"the_js_tag\" type=\"text/javascript\">\n//<![CDATA[\nalert('hello')\n//]]>\n</script>",
39
+ @content_for_name
40
+ end
41
+
42
+ def test_javascript_content_for_with_subsequent_calls
43
+ javascript_content_for(:name, "alert('hello')")
44
+ javascript_content_for(:name, "alert('world')")
45
+
46
+ expected = "<script type=\"text/javascript\">\n//<![CDATA[\nalert('hello')\n//]]>\n</script>"
47
+ expected += "<script type=\"text/javascript\">\n//<![CDATA[\nalert('world')\n//]]>\n</script>"
48
+
49
+ assert_dom_equal expected,
50
+ @content_for_name
51
+ end
52
+
53
+ end
data/test/test_helper.rb CHANGED
@@ -15,9 +15,11 @@
15
15
  #++
16
16
 
17
17
 
18
- require 'test/unit'
19
18
  require 'rubygems'
19
+ gem 'rails', '2.2.2'
20
+
20
21
  require 'mocha'
22
+ require 'test/unit'
21
23
  require 'active_support'
22
24
  require 'action_controller'
23
25
  require 'action_controller/cgi_ext'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: weppos-helperful
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Simone Carletti
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-02-25 00:00:00 -08:00
12
+ date: 2009-03-11 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -53,6 +53,7 @@ extra_rdoc_files:
53
53
  - lib/helperful/affiliations_helper.rb
54
54
  - lib/helperful/content_helper.rb
55
55
  - lib/helperful/deprecations.rb
56
+ - lib/helperful/javascript_helper.rb
56
57
  - lib/helperful/title_helper.rb
57
58
  - lib/helperful/version.rb
58
59
  - lib/helperful.rb
@@ -66,10 +67,12 @@ files:
66
67
  - lib/helperful/affiliations_helper.rb
67
68
  - lib/helperful/content_helper.rb
68
69
  - lib/helperful/deprecations.rb
70
+ - lib/helperful/javascript_helper.rb
69
71
  - lib/helperful/title_helper.rb
70
72
  - lib/helperful/version.rb
71
73
  - lib/helperful.rb
72
74
  - LICENSE.rdoc
75
+ - Manifest
73
76
  - rails/init.rb
74
77
  - Rakefile
75
78
  - README.rdoc
@@ -77,15 +80,16 @@ files:
77
80
  - test/affiliations_helper_test.rb
78
81
  - test/content_helper_test.rb
79
82
  - test/fixtures/content/has_content.html.erb
83
+ - test/fixtures/content/has_content_is_called_alone.html.erb
80
84
  - test/fixtures/content/sidebar.html.erb
81
85
  - test/fixtures/content/sidebar_concatenate.html.erb
82
86
  - test/fixtures/layouts/has_content.html.erb
83
87
  - test/fixtures/layouts/sidebar.html.erb
84
88
  - test/helperful_test.rb
89
+ - test/javascript_helper_test.rb
85
90
  - test/test_helper.rb
86
91
  - test/title_helper_test.rb
87
92
  - uninstall.rb
88
- - Manifest
89
93
  has_rdoc: true
90
94
  homepage: http://code.simonecarletti.com/helperful
91
95
  post_install_message:
@@ -121,5 +125,6 @@ test_files:
121
125
  - test/affiliations_helper_test.rb
122
126
  - test/content_helper_test.rb
123
127
  - test/helperful_test.rb
128
+ - test/javascript_helper_test.rb
124
129
  - test/test_helper.rb
125
130
  - test/title_helper_test.rb