title_helper 0.4.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.
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2008 Jan De Poorter
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,20 @@
1
+ TitleHelper
2
+ ===========
3
+
4
+ TitleHelper allows you to keep your <title> attributes synced with your <h1> attributes, which is more SEO friendly. This is 100% done in the view, which is different from some other plugins, who work with a title-method in the controllers.
5
+
6
+ Example
7
+ =======
8
+
9
+ This method should be used in your layout and your actions.
10
+
11
+ In your action:
12
+ <%= title "Edit user #{@user.name}" %>
13
+ # => <h1>Edit user Jan De Poorter</h1>
14
+
15
+ In your layout:
16
+ <head>
17
+ <title><%= title :site_name => 'Foobar' %></title>
18
+ # => <title>Edit user Jan De Poorter - Foobar</title>
19
+
20
+ Copyright (c) 2008 Jan De Poorter, released under the MIT license
@@ -0,0 +1,13 @@
1
+ begin
2
+ require 'jeweler'
3
+ Jeweler::Tasks.new do |gemspec|
4
+ gemspec.name = "title_helper"
5
+ gemspec.summary = "TitleHelper allows you to keep your <title> attributes synced with your <h1> attributes, which is more SEO friendly."
6
+ gemspec.description = "TitleHelper allows you to keep your <title> attributes synced with your <h1> attributes, which is more SEO friendly. This is 100% done in the view, which is different from some other plugins, who work with a title-method in the controllers."
7
+ gemspec.email = "jan@defv.be"
8
+ gemspec.homepage = "http://github.com/defv/title_helper"
9
+ gemspec.authors = ["Jan De Poorter"]
10
+ end
11
+ rescue LoadError
12
+ puts "Jeweler not available. Install it with: gem install jeweler"
13
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.4.0
data/init.rb ADDED
@@ -0,0 +1 @@
1
+ require 'rails/init.rb'
@@ -0,0 +1,37 @@
1
+ require 'title_helper/railtie' if defined?(::Rails::Railtie)
2
+
3
+ module DefV
4
+ module TitleHelper
5
+ # This method should be used in your layout and your actions.
6
+ #
7
+ # In your action:
8
+ # <%= title "Edit user #{@user.name}" %>
9
+ # => <h1>Edit user Jan De Poorter</h1>
10
+ #
11
+ # In your layout:
12
+ # <head>
13
+ # <title><%= title :site_name => 'Foobar' %></title>
14
+ # ...
15
+ # => <title>Edit user Jan De Poorter - Foobar</title>
16
+ #
17
+ def title arguments, options = {}
18
+ case arguments
19
+ when String
20
+ @title = arguments
21
+ options[:class] = [options[:class], 'error'].compact.join(' ') if options[:error]
22
+
23
+ title = [options[:header], @title, options[:trailer]].compact.join(' ')
24
+ title = title.html_safe if title.respond_to?(:html_safe)
25
+
26
+ return content_tag(:h1, title, options.except(:error, :header, :trailer))
27
+ when Hash
28
+ sitename = arguments[:site_name]
29
+ if @title
30
+ return "#{strip_tags(@title)} - #{sitename}"
31
+ else
32
+ return "#{sitename}"
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,9 @@
1
+ module Defv
2
+ module TitleHelper
3
+ class Railtie < Rails::Railtie
4
+ initializer 'title_helper.action_view' do
5
+ ActionView::Base.send(:include, DefV::TitleHelper)
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,3 @@
1
+ require 'title_helper'
2
+
3
+ ActionView::Base.send(:include, DefV::TitleHelper)
@@ -0,0 +1,45 @@
1
+ require 'test/unit'
2
+ require File.dirname(__FILE__) + '/../../../../config/boot.rb'
3
+ require File.dirname(__FILE__) + '/../../../../config/environment.rb'
4
+
5
+
6
+ class TitleHelperTest < Test::Unit::TestCase
7
+ def setup
8
+ @helper = ActionView::Base.new
9
+ end
10
+
11
+ # Replace this with your real tests.
12
+ def test_title_method_with_no_title_set
13
+ assert_equal "foobar", @helper.title(:site_name => 'foobar')
14
+ end
15
+
16
+ def test_title_method_with_a_title_set
17
+ assert_equal "<h1>HomePage</h1>", @helper.title("HomePage")
18
+ assert_equal "HomePage - foobar", @helper.title(:site_name => 'foobar')
19
+ end
20
+
21
+ def test_strip_tags
22
+ assert_equal "<h1>This is <strong>GREAT</strong></h1>", @helper.title("This is <strong>GREAT</strong>")
23
+ assert_equal "This is GREAT - foobar", @helper.title(:site_name => 'foobar')
24
+ end
25
+
26
+ def test_error_on_h1
27
+ assert_equal "<h1 class=\"error\">This is wrong</h1>", @helper.title("This is wrong", :error => true)
28
+ end
29
+
30
+ def test_class_on_h1
31
+ assert_equal "<h1 class=\"my-class\">Header with class</h1>", @helper.title("Header with class", :class => 'my-class')
32
+ end
33
+
34
+ def test_id_on_h1
35
+ assert_equal "<h1 id=\"my-id\">Header with id</h1>", @helper.title("Header with id", :id => 'my-id')
36
+ end
37
+
38
+ def test_class_and_id_on_h1
39
+ assert_equal "<h1 class=\"my-class\" id=\"my-id\">Header with class and id</h1>", @helper.title("Header with class and id", :class => 'my-class', :id => 'my-id')
40
+ end
41
+
42
+ def test_class_and_error_on_h1
43
+ assert_equal "<h1 class=\"my-class error\">Header with error and class</h1>", @helper.title("Header with error and class", :class => 'my-class', :error => true)
44
+ end
45
+ end
@@ -0,0 +1,49 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{title_helper}
8
+ s.version = "0.4.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Jan De Poorter"]
12
+ s.date = %q{2010-08-20}
13
+ s.description = %q{TitleHelper allows you to keep your <title> attributes synced with your <h1> attributes, which is more SEO friendly. This is 100% done in the view, which is different from some other plugins, who work with a title-method in the controllers.}
14
+ s.email = %q{jan@defv.be}
15
+ s.extra_rdoc_files = [
16
+ "README.rdoc"
17
+ ]
18
+ s.files = [
19
+ "MIT-LICENSE",
20
+ "README.rdoc",
21
+ "Rakefile",
22
+ "VERSION",
23
+ "init.rb",
24
+ "lib/title_helper.rb",
25
+ "lib/title_helper/railtie.rb",
26
+ "rails/init.rb",
27
+ "test/title_helper_test.rb",
28
+ "title_helper.gemspec"
29
+ ]
30
+ s.homepage = %q{http://github.com/defv/title_helper}
31
+ s.rdoc_options = ["--charset=UTF-8"]
32
+ s.require_paths = ["lib"]
33
+ s.rubygems_version = %q{1.3.7}
34
+ s.summary = %q{TitleHelper allows you to keep your <title> attributes synced with your <h1> attributes, which is more SEO friendly.}
35
+ s.test_files = [
36
+ "test/title_helper_test.rb"
37
+ ]
38
+
39
+ if s.respond_to? :specification_version then
40
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
41
+ s.specification_version = 3
42
+
43
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
44
+ else
45
+ end
46
+ else
47
+ end
48
+ end
49
+
metadata ADDED
@@ -0,0 +1,76 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: title_helper
3
+ version: !ruby/object:Gem::Version
4
+ hash: 15
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 4
9
+ - 0
10
+ version: 0.4.0
11
+ platform: ruby
12
+ authors:
13
+ - Jan De Poorter
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-08-20 00:00:00 +02:00
19
+ default_executable:
20
+ dependencies: []
21
+
22
+ description: TitleHelper allows you to keep your <title> attributes synced with your <h1> attributes, which is more SEO friendly. This is 100% done in the view, which is different from some other plugins, who work with a title-method in the controllers.
23
+ email: jan@defv.be
24
+ executables: []
25
+
26
+ extensions: []
27
+
28
+ extra_rdoc_files:
29
+ - README.rdoc
30
+ files:
31
+ - MIT-LICENSE
32
+ - README.rdoc
33
+ - Rakefile
34
+ - VERSION
35
+ - init.rb
36
+ - lib/title_helper.rb
37
+ - lib/title_helper/railtie.rb
38
+ - rails/init.rb
39
+ - test/title_helper_test.rb
40
+ - title_helper.gemspec
41
+ has_rdoc: true
42
+ homepage: http://github.com/defv/title_helper
43
+ licenses: []
44
+
45
+ post_install_message:
46
+ rdoc_options:
47
+ - --charset=UTF-8
48
+ require_paths:
49
+ - lib
50
+ required_ruby_version: !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ hash: 3
56
+ segments:
57
+ - 0
58
+ version: "0"
59
+ required_rubygems_version: !ruby/object:Gem::Requirement
60
+ none: false
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ hash: 3
65
+ segments:
66
+ - 0
67
+ version: "0"
68
+ requirements: []
69
+
70
+ rubyforge_project:
71
+ rubygems_version: 1.3.7
72
+ signing_key:
73
+ specification_version: 3
74
+ summary: TitleHelper allows you to keep your <title> attributes synced with your <h1> attributes, which is more SEO friendly.
75
+ test_files:
76
+ - test/title_helper_test.rb