meta_on_rails 1.1.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/Gemfile ADDED
@@ -0,0 +1,12 @@
1
+ source "http://rubygems.org"
2
+
3
+ gem "rails"
4
+ gem "activesupport"
5
+ gem "actionpack"
6
+
7
+ group :development do
8
+ gem "rspec", "~> 2.3.0"
9
+ gem "bundler", "~> 1.0.0"
10
+ gem "jeweler", "~> 1.5.2"
11
+ gem "rcov", ">= 0"
12
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,92 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ abstract (1.0.0)
5
+ actionmailer (3.0.3)
6
+ actionpack (= 3.0.3)
7
+ mail (~> 2.2.9)
8
+ actionpack (3.0.3)
9
+ activemodel (= 3.0.3)
10
+ activesupport (= 3.0.3)
11
+ builder (~> 2.1.2)
12
+ erubis (~> 2.6.6)
13
+ i18n (~> 0.4)
14
+ rack (~> 1.2.1)
15
+ rack-mount (~> 0.6.13)
16
+ rack-test (~> 0.5.6)
17
+ tzinfo (~> 0.3.23)
18
+ activemodel (3.0.3)
19
+ activesupport (= 3.0.3)
20
+ builder (~> 2.1.2)
21
+ i18n (~> 0.4)
22
+ activerecord (3.0.3)
23
+ activemodel (= 3.0.3)
24
+ activesupport (= 3.0.3)
25
+ arel (~> 2.0.2)
26
+ tzinfo (~> 0.3.23)
27
+ activeresource (3.0.3)
28
+ activemodel (= 3.0.3)
29
+ activesupport (= 3.0.3)
30
+ activesupport (3.0.3)
31
+ arel (2.0.7)
32
+ builder (2.1.2)
33
+ diff-lcs (1.1.2)
34
+ erubis (2.6.6)
35
+ abstract (>= 1.0.0)
36
+ git (1.2.5)
37
+ i18n (0.5.0)
38
+ jeweler (1.5.2)
39
+ bundler (~> 1.0.0)
40
+ git (>= 1.2.5)
41
+ rake
42
+ mail (2.2.15)
43
+ activesupport (>= 2.3.6)
44
+ i18n (>= 0.4.0)
45
+ mime-types (~> 1.16)
46
+ treetop (~> 1.4.8)
47
+ mime-types (1.16)
48
+ polyglot (0.3.1)
49
+ rack (1.2.1)
50
+ rack-mount (0.6.13)
51
+ rack (>= 1.0.0)
52
+ rack-test (0.5.7)
53
+ rack (>= 1.0)
54
+ rails (3.0.3)
55
+ actionmailer (= 3.0.3)
56
+ actionpack (= 3.0.3)
57
+ activerecord (= 3.0.3)
58
+ activeresource (= 3.0.3)
59
+ activesupport (= 3.0.3)
60
+ bundler (~> 1.0)
61
+ railties (= 3.0.3)
62
+ railties (3.0.3)
63
+ actionpack (= 3.0.3)
64
+ activesupport (= 3.0.3)
65
+ rake (>= 0.8.7)
66
+ thor (~> 0.14.4)
67
+ rake (0.8.7)
68
+ rcov (0.9.9)
69
+ rspec (2.3.0)
70
+ rspec-core (~> 2.3.0)
71
+ rspec-expectations (~> 2.3.0)
72
+ rspec-mocks (~> 2.3.0)
73
+ rspec-core (2.3.1)
74
+ rspec-expectations (2.3.0)
75
+ diff-lcs (~> 1.1.2)
76
+ rspec-mocks (2.3.0)
77
+ thor (0.14.6)
78
+ treetop (1.4.9)
79
+ polyglot (>= 0.3.1)
80
+ tzinfo (0.3.24)
81
+
82
+ PLATFORMS
83
+ ruby
84
+
85
+ DEPENDENCIES
86
+ actionpack
87
+ activesupport
88
+ bundler (~> 1.0.0)
89
+ jeweler (~> 1.5.2)
90
+ rails
91
+ rcov
92
+ rspec (~> 2.3.0)
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2008 - 2011 James Chen
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.
data/README.markdown ADDED
@@ -0,0 +1,38 @@
1
+ MetaOnRails
2
+ ===========
3
+ MetaOnRails DRYs up your page meta tags.
4
+ It is a very simple Rails plugin to help you customize your pages' meta tags a little bit easier.
5
+
6
+ Install
7
+ =======
8
+ Add this to your Gemfile:
9
+
10
+ gem "meta_on_rails"
11
+
12
+ Example
13
+ =======
14
+ Add the following code to the layout (e.g. `app/views/layout/application.html.erb`), be sure to put it in the head tag:
15
+
16
+ <head>
17
+ <%= display_meta(:keywords => "default,keywords", :description => "default description") %>
18
+ </head>
19
+
20
+ Default meta values can be set. In the above example, these two meta tags will be generated if they're not overridden on the views:
21
+
22
+ <meta name="description" content="default description" />
23
+ <meta name="keywords" content="default,keywords" />
24
+
25
+ Then add this code to the view to set meta tags on that page:
26
+
27
+ <% set_meta(:keywords => 'my,keyword', :generator => 'a bad <script /> generator') %>
28
+
29
+ The output html will be like this:
30
+
31
+ <meta name="generator" content="a bad generator" />
32
+ <meta name="description" content="default description" />
33
+ <meta name="keywords" content="my,keyword" />
34
+
35
+
36
+ Author
37
+ ======
38
+ Copyright (c) 2008 - 2011 James Chen ([@ashchan](http://twitter.com/ashchan)), released under the MIT license
data/Rakefile ADDED
@@ -0,0 +1,47 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+ require 'rake'
11
+
12
+ require 'jeweler'
13
+ Jeweler::Tasks.new do |gem|
14
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
15
+ gem.name = "meta_on_rails"
16
+ gem.homepage = "https://github.com/ashchan/meta_on_rails"
17
+ gem.license = "MIT"
18
+ gem.summary = %Q{MetaOnRails DRYs up your page meta tags.}
19
+ gem.description = %Q{It is a very simple Rails plugin to help you customize your pages' meta tags a little bit easier.}
20
+ gem.email = "ashchan@gmail.com"
21
+ gem.authors = ["James Chen"]
22
+ gem.add_development_dependency 'rspec', '> 2.0'
23
+ end
24
+ Jeweler::RubygemsDotOrgTasks.new
25
+
26
+ require 'rspec/core'
27
+ require 'rspec/core/rake_task'
28
+ RSpec::Core::RakeTask.new(:spec) do |spec|
29
+ spec.pattern = FileList['spec/**/*_spec.rb']
30
+ end
31
+
32
+ RSpec::Core::RakeTask.new(:rcov) do |spec|
33
+ spec.pattern = 'spec/**/*_spec.rb'
34
+ spec.rcov = true
35
+ end
36
+
37
+ task :default => :spec
38
+
39
+ require 'rake/rdoctask'
40
+ Rake::RDocTask.new do |rdoc|
41
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
42
+
43
+ rdoc.rdoc_dir = 'rdoc'
44
+ rdoc.title = "meta_on_rails #{version}"
45
+ rdoc.rdoc_files.include('README*')
46
+ rdoc.rdoc_files.include('lib/**/*.rb')
47
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 1.1.0
@@ -0,0 +1,2 @@
1
+ require 'rails'
2
+ require 'meta_on_rails/railtie'
@@ -0,0 +1,11 @@
1
+ require 'meta_on_rails/view_helpers'
2
+
3
+ module MetaOnRails
4
+ class Railtie < Rails::Railtie
5
+ initializer "meta_on_rails.action_view" do |app|
6
+ ActiveSupport.on_load :action_view do
7
+ include MetaOnRails::ViewHelpers
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,21 @@
1
+ module MetaOnRails
2
+ module ViewHelpers
3
+ def set_meta(meta = {})
4
+ @meta = meta
5
+ end
6
+
7
+ def display_meta(default = {})
8
+ meta = default.merge(@meta||{}).reject{|k,v|v.blank?}
9
+ output = meta.map do |key,value|
10
+ %Q[<meta name="#{key}" content="#{normalize(value)}"/>]
11
+ end.join("\n")
12
+ Rails.version.to_i > 2 ? ActiveSupport::SafeBuffer.new(output) : output
13
+ end
14
+
15
+ private
16
+
17
+ def normalize(s)
18
+ s.gsub(/<\/?[^>]*>/, '').gsub('"',"'")
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,77 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{meta_on_rails}
8
+ s.version = "1.1.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["James Chen"]
12
+ s.date = %q{2011-02-02}
13
+ s.description = %q{It is a very simple Rails plugin to help you customize your pages' meta tags a little bit easier.}
14
+ s.email = %q{ashchan@gmail.com}
15
+ s.extra_rdoc_files = [
16
+ "README.markdown"
17
+ ]
18
+ s.files = [
19
+ "Gemfile",
20
+ "Gemfile.lock",
21
+ "MIT-LICENSE",
22
+ "README.markdown",
23
+ "Rakefile",
24
+ "VERSION",
25
+ "lib/meta_on_rails.rb",
26
+ "lib/meta_on_rails/railtie.rb",
27
+ "lib/meta_on_rails/view_helpers.rb",
28
+ "meta_on_rails.gemspec",
29
+ "spec/meta_on_rails_spec.rb",
30
+ "spec/spec_helper.rb",
31
+ "test/meta_on_rails_test.rb"
32
+ ]
33
+ s.homepage = %q{https://github.com/ashchan/meta_on_rails}
34
+ s.licenses = ["MIT"]
35
+ s.require_paths = ["lib"]
36
+ s.rubygems_version = %q{1.5.0}
37
+ s.summary = %q{MetaOnRails DRYs up your page meta tags.}
38
+ s.test_files = [
39
+ "spec/meta_on_rails_spec.rb",
40
+ "spec/spec_helper.rb",
41
+ "test/meta_on_rails_test.rb"
42
+ ]
43
+
44
+ if s.respond_to? :specification_version then
45
+ s.specification_version = 3
46
+
47
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
48
+ s.add_runtime_dependency(%q<rails>, [">= 0"])
49
+ s.add_runtime_dependency(%q<activesupport>, [">= 0"])
50
+ s.add_runtime_dependency(%q<actionpack>, [">= 0"])
51
+ s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
52
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
53
+ s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
54
+ s.add_development_dependency(%q<rcov>, [">= 0"])
55
+ s.add_development_dependency(%q<rspec>, ["> 2.0"])
56
+ else
57
+ s.add_dependency(%q<rails>, [">= 0"])
58
+ s.add_dependency(%q<activesupport>, [">= 0"])
59
+ s.add_dependency(%q<actionpack>, [">= 0"])
60
+ s.add_dependency(%q<rspec>, ["~> 2.3.0"])
61
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
62
+ s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
63
+ s.add_dependency(%q<rcov>, [">= 0"])
64
+ s.add_dependency(%q<rspec>, ["> 2.0"])
65
+ end
66
+ else
67
+ s.add_dependency(%q<rails>, [">= 0"])
68
+ s.add_dependency(%q<activesupport>, [">= 0"])
69
+ s.add_dependency(%q<actionpack>, [">= 0"])
70
+ s.add_dependency(%q<rspec>, ["~> 2.3.0"])
71
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
72
+ s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
73
+ s.add_dependency(%q<rcov>, [">= 0"])
74
+ s.add_dependency(%q<rspec>, ["> 2.0"])
75
+ end
76
+ end
77
+
@@ -0,0 +1,44 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "MetaOnRails" do
4
+ include MetaOnRails::ViewHelpers
5
+
6
+ it "should have default values" do
7
+ output = display_meta(:keywords => 'default')
8
+ output.should include('<meta name="keywords" content="default"')
9
+ end
10
+
11
+ describe "strip html" do
12
+ before do
13
+ set_meta(:keywords => '<bong>aword</bong>')
14
+ end
15
+ let(:output) { display_meta }
16
+
17
+ it "should strip tag" do
18
+ output.should_not include("<bong>")
19
+ end
20
+
21
+ it "should contain text" do
22
+ output.should include("aword")
23
+ end
24
+ end
25
+
26
+ it "should override default values" do
27
+ set_meta(:keywords => 'override')
28
+ output = display_meta(:keywords => 'default')
29
+ output.should include('override')
30
+ end
31
+
32
+ it "should not set meta when displaying" do
33
+ display_meta(:keywords => 'default')
34
+ display_meta(:something => 'else').should_not include('default')
35
+ end
36
+
37
+ it "does not display blank values" do
38
+ display_meta(:keywords => ' ').should == ''
39
+ end
40
+
41
+ it "removes double quotes" do
42
+ (display_meta(:keywords => '""') =~ %r[content="''"/>]).should > 0
43
+ end
44
+ end
@@ -0,0 +1,12 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+ require 'rspec'
4
+ require 'meta_on_rails'
5
+
6
+ # Requires supporting files with custom matchers and macros, etc,
7
+ # in ./support/ and its subdirectories.
8
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
9
+
10
+ RSpec.configure do |config|
11
+
12
+ end
@@ -0,0 +1,39 @@
1
+ require 'test/unit'
2
+ require 'rubygems'
3
+ require 'activesupport'
4
+ require File.dirname(__FILE__) + '/../lib/meta_on_rails'
5
+
6
+ class MetaOnRailsTest < Test::Unit::TestCase
7
+ include MetaOnRails
8
+
9
+ def test_should_have_default_values
10
+ output = display_meta(:keywords => 'default')
11
+ assert output.include?('<meta name="keywords" content="default"')
12
+ end
13
+
14
+ def test_should_strip_html
15
+ set_meta(:keywords => '<bong>aword</bong>')
16
+ output = display_meta
17
+ assert !output.include?("<bong>")
18
+ assert output.include?("aword")
19
+ end
20
+
21
+ def test_should_override_default_values
22
+ set_meta(:keywords => 'override')
23
+ output = display_meta(:keywords => 'default')
24
+ assert output.include?('override')
25
+ end
26
+
27
+ def test_should_not_set_meta_when_displaying
28
+ display_meta(:keywords => 'default')
29
+ assert !display_meta(:something => 'else').include?('default')
30
+ end
31
+
32
+ def test_does_not_display_blank_values
33
+ assert_equal display_meta(:keywords => ' '),''
34
+ end
35
+
36
+ def test_removes_double_quotes
37
+ assert display_meta(:keywords => '""') =~ %r[content="''"/>]
38
+ end
39
+ end
metadata ADDED
@@ -0,0 +1,160 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: meta_on_rails
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 1.1.0
6
+ platform: ruby
7
+ authors:
8
+ - James Chen
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-02-02 00:00:00 +09:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: rails
18
+ requirement: &id001 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: *id001
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ requirement: &id002 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: "0"
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: *id002
38
+ - !ruby/object:Gem::Dependency
39
+ name: actionpack
40
+ requirement: &id003 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: "0"
46
+ type: :runtime
47
+ prerelease: false
48
+ version_requirements: *id003
49
+ - !ruby/object:Gem::Dependency
50
+ name: rspec
51
+ requirement: &id004 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ~>
55
+ - !ruby/object:Gem::Version
56
+ version: 2.3.0
57
+ type: :development
58
+ prerelease: false
59
+ version_requirements: *id004
60
+ - !ruby/object:Gem::Dependency
61
+ name: bundler
62
+ requirement: &id005 !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ~>
66
+ - !ruby/object:Gem::Version
67
+ version: 1.0.0
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: *id005
71
+ - !ruby/object:Gem::Dependency
72
+ name: jeweler
73
+ requirement: &id006 !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ~>
77
+ - !ruby/object:Gem::Version
78
+ version: 1.5.2
79
+ type: :development
80
+ prerelease: false
81
+ version_requirements: *id006
82
+ - !ruby/object:Gem::Dependency
83
+ name: rcov
84
+ requirement: &id007 !ruby/object:Gem::Requirement
85
+ none: false
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: "0"
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: *id007
93
+ - !ruby/object:Gem::Dependency
94
+ name: rspec
95
+ requirement: &id008 !ruby/object:Gem::Requirement
96
+ none: false
97
+ requirements:
98
+ - - ">"
99
+ - !ruby/object:Gem::Version
100
+ version: "2.0"
101
+ type: :development
102
+ prerelease: false
103
+ version_requirements: *id008
104
+ description: It is a very simple Rails plugin to help you customize your pages' meta tags a little bit easier.
105
+ email: ashchan@gmail.com
106
+ executables: []
107
+
108
+ extensions: []
109
+
110
+ extra_rdoc_files:
111
+ - README.markdown
112
+ files:
113
+ - Gemfile
114
+ - Gemfile.lock
115
+ - MIT-LICENSE
116
+ - README.markdown
117
+ - Rakefile
118
+ - VERSION
119
+ - lib/meta_on_rails.rb
120
+ - lib/meta_on_rails/railtie.rb
121
+ - lib/meta_on_rails/view_helpers.rb
122
+ - meta_on_rails.gemspec
123
+ - spec/meta_on_rails_spec.rb
124
+ - spec/spec_helper.rb
125
+ - test/meta_on_rails_test.rb
126
+ has_rdoc: true
127
+ homepage: https://github.com/ashchan/meta_on_rails
128
+ licenses:
129
+ - MIT
130
+ post_install_message:
131
+ rdoc_options: []
132
+
133
+ require_paths:
134
+ - lib
135
+ required_ruby_version: !ruby/object:Gem::Requirement
136
+ none: false
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ hash: 1827674826408926193
141
+ segments:
142
+ - 0
143
+ version: "0"
144
+ required_rubygems_version: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ version: "0"
150
+ requirements: []
151
+
152
+ rubyforge_project:
153
+ rubygems_version: 1.5.0
154
+ signing_key:
155
+ specification_version: 3
156
+ summary: MetaOnRails DRYs up your page meta tags.
157
+ test_files:
158
+ - spec/meta_on_rails_spec.rb
159
+ - spec/spec_helper.rb
160
+ - test/meta_on_rails_test.rb