headshop 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/.document ADDED
@@ -0,0 +1,5 @@
1
+ lib/**/*.rb
2
+ bin/*
3
+ -
4
+ features/**/*.feature
5
+ LICENSE.txt
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm ree@headshop
data/Gemfile ADDED
@@ -0,0 +1,11 @@
1
+ source 'http://rubygems.org'
2
+
3
+ group :development do
4
+ gem 'bundler', '~> 1.0.0'
5
+ gem 'jeweler', '~> 1.5.2'
6
+ gem 'mocha'
7
+ gem 'providence'
8
+ gem 'rails'
9
+ gem 'rspec-rails'
10
+ gem 'rcov'
11
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,105 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ abstract (1.0.0)
5
+ actionmailer (3.0.7)
6
+ actionpack (= 3.0.7)
7
+ mail (~> 2.2.15)
8
+ actionpack (3.0.7)
9
+ activemodel (= 3.0.7)
10
+ activesupport (= 3.0.7)
11
+ builder (~> 2.1.2)
12
+ erubis (~> 2.6.6)
13
+ i18n (~> 0.5.0)
14
+ rack (~> 1.2.1)
15
+ rack-mount (~> 0.6.14)
16
+ rack-test (~> 0.5.7)
17
+ tzinfo (~> 0.3.23)
18
+ activemodel (3.0.7)
19
+ activesupport (= 3.0.7)
20
+ builder (~> 2.1.2)
21
+ i18n (~> 0.5.0)
22
+ activerecord (3.0.7)
23
+ activemodel (= 3.0.7)
24
+ activesupport (= 3.0.7)
25
+ arel (~> 2.0.2)
26
+ tzinfo (~> 0.3.23)
27
+ activeresource (3.0.7)
28
+ activemodel (= 3.0.7)
29
+ activesupport (= 3.0.7)
30
+ activesupport (3.0.7)
31
+ arel (2.0.9)
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
+ growl (1.0.3)
38
+ i18n (0.5.0)
39
+ jeweler (1.5.2)
40
+ bundler (~> 1.0.0)
41
+ git (>= 1.2.5)
42
+ rake
43
+ mail (2.2.19)
44
+ activesupport (>= 2.3.6)
45
+ i18n (>= 0.4.0)
46
+ mime-types (~> 1.16)
47
+ treetop (~> 1.4.8)
48
+ mime-types (1.16)
49
+ mocha (0.9.12)
50
+ polyglot (0.3.1)
51
+ providence (0.1.2)
52
+ growl
53
+ rb-fsevent
54
+ watchr
55
+ rack (1.2.2)
56
+ rack-mount (0.6.14)
57
+ rack (>= 1.0.0)
58
+ rack-test (0.5.7)
59
+ rack (>= 1.0)
60
+ rails (3.0.7)
61
+ actionmailer (= 3.0.7)
62
+ actionpack (= 3.0.7)
63
+ activerecord (= 3.0.7)
64
+ activeresource (= 3.0.7)
65
+ activesupport (= 3.0.7)
66
+ bundler (~> 1.0)
67
+ railties (= 3.0.7)
68
+ railties (3.0.7)
69
+ actionpack (= 3.0.7)
70
+ activesupport (= 3.0.7)
71
+ rake (>= 0.8.7)
72
+ thor (~> 0.14.4)
73
+ rake (0.8.7)
74
+ rb-fsevent (0.4.0)
75
+ rcov (0.9.9)
76
+ rspec (2.5.0)
77
+ rspec-core (~> 2.5.0)
78
+ rspec-expectations (~> 2.5.0)
79
+ rspec-mocks (~> 2.5.0)
80
+ rspec-core (2.5.2)
81
+ rspec-expectations (2.5.0)
82
+ diff-lcs (~> 1.1.2)
83
+ rspec-mocks (2.5.0)
84
+ rspec-rails (2.5.0)
85
+ actionpack (~> 3.0)
86
+ activesupport (~> 3.0)
87
+ railties (~> 3.0)
88
+ rspec (~> 2.5.0)
89
+ thor (0.14.6)
90
+ treetop (1.4.9)
91
+ polyglot (>= 0.3.1)
92
+ tzinfo (0.3.27)
93
+ watchr (0.7)
94
+
95
+ PLATFORMS
96
+ ruby
97
+
98
+ DEPENDENCIES
99
+ bundler (~> 1.0.0)
100
+ jeweler (~> 1.5.2)
101
+ mocha
102
+ providence
103
+ rails
104
+ rcov
105
+ rspec-rails
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2010 Chuck Collins
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.markdown ADDED
@@ -0,0 +1,40 @@
1
+ Headshop
2
+ ==========
3
+
4
+ Meta tag management to DRY up your views and SEO the crap out of your site.
5
+
6
+ Contributing to providence
7
+ --------------------------
8
+
9
+ * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
10
+ * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
11
+ * Fork the project
12
+ * Start a feature/bugfix branch
13
+ * Commit and push until you are happy with your contribution
14
+ * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
15
+ * Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
16
+
17
+ Copyright
18
+ ---------
19
+
20
+ Copyright (c) 2011 Chuck Collins
21
+
22
+ Permission is hereby granted, free of charge, to any person obtaining
23
+ a copy of this software and associated documentation files (the
24
+ "Software"), to deal in the Software without restriction, including
25
+ without limitation the rights to use, copy, modify, merge, publish,
26
+ distribute, sublicense, and/or sell copies of the Software, and to
27
+ permit persons to whom the Software is furnished to do so, subject to
28
+ the following conditions:
29
+
30
+ The above copyright notice and this permission notice shall be
31
+ included in all copies or substantial portions of the Software.
32
+
33
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
34
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
35
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
36
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
37
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
38
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
39
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
40
+
data/Rakefile ADDED
@@ -0,0 +1,49 @@
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 = "headshop"
16
+ gem.homepage = "http://github.com/ccollins/headshop"
17
+ gem.license = "MIT"
18
+ gem.summary = "Meta tag management to DRY up your views and SEO the crap out of your site."
19
+ gem.description = "Manage meta tags through an external yml file. Easy configuration. Takes ugly boilerplate away from your app."
20
+ gem.email = "chuck.collins@gmail.com"
21
+ gem.authors = ["Chuck Collins"]
22
+ end
23
+ Jeweler::RubygemsDotOrgTasks.new
24
+
25
+ require 'rake/testtask'
26
+ Rake::TestTask.new(:test) do |test|
27
+ test.libs << 'lib' << 'test'
28
+ test.pattern = 'test/**/test_*.rb'
29
+ test.verbose = true
30
+ end
31
+
32
+ require 'rcov/rcovtask'
33
+ Rcov::RcovTask.new do |test|
34
+ test.libs << 'test'
35
+ test.pattern = 'test/**/test_*.rb'
36
+ test.verbose = true
37
+ end
38
+
39
+ task :default => :test
40
+
41
+ require 'rake/rdoctask'
42
+ Rake::RDocTask.new do |rdoc|
43
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
44
+
45
+ rdoc.rdoc_dir = 'rdoc'
46
+ rdoc.title = "headshop #{version}"
47
+ rdoc.rdoc_files.include('README*')
48
+ rdoc.rdoc_files.include('lib/**/*.rb')
49
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.2.1
@@ -0,0 +1,27 @@
1
+ module Headshop::MetaTagHelper
2
+ def meta_tag
3
+ write_meta_data(get_meta_data_for(controller_name, action_name))
4
+ end
5
+
6
+ def get_meta_data_for(controller, action)
7
+ if Headshop.has_meta_data_for?(controller, action)
8
+ Headshop.meta_data[controller][action]
9
+ elsif Headshop.meta_data.has_key?('default_meta')
10
+ Headshop.meta_data['default_meta']
11
+ end
12
+ end
13
+
14
+ def apply_base_tag(key, meta_data)
15
+ if Headshop.meta_data.has_key?('base_meta') && Headshop.meta_data['base_meta'].has_key?(key)
16
+ "#{Headshop.meta_data['base_meta'][key]} #{meta_data}"
17
+ else
18
+ meta_data
19
+ end
20
+ end
21
+
22
+ def write_meta_data meta_data
23
+ result = meta_data.reduce('') { |memo, obj| memo += "<meta name='#{obj[0]}' content='#{apply_base_tag(obj[0], obj[1])}' />\n" }
24
+ result += "<title>#{apply_base_tag('title', meta_data['title'])}</title>\n" if meta_data.has_key?('title')
25
+ result.respond_to?(:html_safe) ? result.html_safe : result
26
+ end
27
+ end
data/lib/headshop.rb ADDED
@@ -0,0 +1,27 @@
1
+ require 'action_view'
2
+ require 'yaml'
3
+
4
+ module Headshop
5
+ mattr_accessor :config_file, :meta_data
6
+
7
+ def self.config_file= config_file
8
+ @@config_file = config_file
9
+ read_config_file @@config_file
10
+ end
11
+
12
+ def self.read_config_file config_file
13
+ self.meta_data = YAML.load_file(config_file)
14
+ end
15
+
16
+ def self.setup
17
+ yield self
18
+ end
19
+
20
+ def self.has_meta_data_for?(controller, action)
21
+ self.meta_data.has_key?(controller) && self.meta_data[controller].has_key?(action)
22
+ end
23
+ end
24
+
25
+ require 'headshop/meta_tag_helper'
26
+
27
+ ActionView::Base.send :include, Headshop::MetaTagHelper
data/spec/headshop.yml ADDED
@@ -0,0 +1,21 @@
1
+ base_meta:
2
+ description: base |
3
+ keywords: base,
4
+ title: base |
5
+
6
+ default_meta:
7
+ description: 'default_description'
8
+ keywords: 'default_keywords'
9
+ title: 'default_title'
10
+
11
+ controller:
12
+ action:
13
+ description: 'action_description'
14
+ keywords: 'action_keywords'
15
+ title: 'action_title'
16
+
17
+ tester:
18
+ default_meta:
19
+ description: 'tester_description'
20
+ keywords: 'tester_keywords'
21
+ title: 'tester_title'
@@ -0,0 +1,11 @@
1
+ controller:
2
+ action:
3
+ description: 'action_description'
4
+ keywords: 'action_keywords'
5
+ title: 'action_title'
6
+
7
+ tester:
8
+ default_meta:
9
+ description: 'tester_description'
10
+ keywords: 'tester_keywords'
11
+ title: 'tester_title'
@@ -0,0 +1,86 @@
1
+ require 'spec_helper'
2
+
3
+ describe Headshop::MetaTagHelper do
4
+ before(:each) do
5
+ Headshop.setup do |config|
6
+ config.config_file = File.join(File.dirname(__FILE__), '..', '..', 'headshop.yml')
7
+ end
8
+
9
+ Class.send(:include, Headshop::MetaTagHelper)
10
+ end
11
+
12
+ it { Class.should respond_to(:meta_tag) }
13
+
14
+ context "#apply_base_tag" do
15
+ it "should prepend the base tag" do
16
+ Headshop.meta_data['base_meta'] = {'test' => 'base |'}
17
+ Class.apply_base_tag('test', "default_test").should == "base | default_test"
18
+ end
19
+
20
+ it "should return the tag if no base match found" do
21
+ Class.apply_base_tag('test', "default_test").should == "default_test"
22
+ end
23
+ end
24
+
25
+ context "#meta_tag" do
26
+ before(:each) do
27
+ Class.stub!(:controller_name).and_return('controller')
28
+ Class.stub!(:action_name).and_return('action')
29
+ end
30
+
31
+ it "should call for and write the meta data" do
32
+ Class.should_receive(:get_meta_data_for).with('controller', 'action').and_return('yippe')
33
+ Class.should_receive(:write_meta_data).with('yippe')
34
+ Class.meta_tag
35
+ end
36
+
37
+ it "should write the meta data for controller/action with no base/default" do
38
+ Headshop.setup do |config|
39
+ config.config_file = File.join(File.dirname(__FILE__), '..', '..', 'headshop_no_default_no_base.yml')
40
+ end
41
+
42
+ meta_data = Class.meta_tag
43
+ /<title>action_title<\/title>\n/.should =~ meta_data
44
+ /<meta name='title' content='action_title' \/>\n/.should =~ meta_data
45
+ /<meta name='description' content='action_description' \/>\n/.should =~ meta_data
46
+ /<meta name='keywords' content='action_keywords' \/>\n/.should =~ meta_data
47
+ end
48
+
49
+ it "should write the meta data for controller/action" do
50
+ meta_data = Class.meta_tag
51
+ /<title>base | action_title<\/title>\n/.should =~ meta_data
52
+ /<meta name='title' content='base | action_title' \/>\n/.should =~ meta_data
53
+ /<meta name='description' content='base | action_description' \/>\n/.should =~ meta_data
54
+ /<meta name='keywords' content='base, action_keywords' \/>\n/.should =~ meta_data
55
+ end
56
+ end
57
+
58
+ context "#get_meta_data_for" do
59
+ it "should return default data when a controller and action arent found" do
60
+ Class.get_meta_data_for('no_controller', 'no_action').should == {"title"=>"default_title", "description"=>"default_description", "keywords"=>"default_keywords"}
61
+ end
62
+
63
+ it "should return default data when a controller isnt found" do
64
+ Class.get_meta_data_for('no_controller', 'action').should == {"title"=>"default_title", "description"=>"default_description", "keywords"=>"default_keywords"}
65
+ end
66
+
67
+ it "should return meta data for a controller and action" do
68
+ Class.get_meta_data_for('controller', 'action').should == {"title"=>"action_title", "description"=>"action_description", "keywords"=>"action_keywords"}
69
+ end
70
+
71
+ it "should return nil when a controller and action arent found and no default set" do
72
+ Headshop.setup do |config|
73
+ config.config_file = File.join(File.dirname(__FILE__), '..', '..', 'headshop_no_default_no_base.yml')
74
+ end
75
+
76
+ Class.get_meta_data_for('no_controller', 'no_action').should be_nil
77
+ end
78
+ end
79
+
80
+ context "#write_meta_data" do
81
+ it "should write meta data for anything" do
82
+ meta_data = Class.write_meta_data({:yousocrazy => :tester})
83
+ /<meta name='yousocrazy' content='tester' \/>\n/.should =~ meta_data
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,47 @@
1
+ require 'spec_helper'
2
+
3
+ describe Headshop do
4
+ let(:config_file) { 'headshop.yml' }
5
+
6
+ it { should respond_to(:setup) }
7
+ it { should respond_to(:config_file=) }
8
+ it { should respond_to(:config_file) }
9
+ it { should respond_to(:meta_data) }
10
+
11
+ context "#config_file=" do
12
+ before(:each) do
13
+ Headshop.should_receive(:read_config_file).and_return('')
14
+ end
15
+
16
+ it "should set the file path and read it in" do
17
+ Headshop.setup do |config|
18
+ config.config_file = 'shamalamadingdong'
19
+ end
20
+ Headshop.config_file.should == 'shamalamadingdong'
21
+ end
22
+ end
23
+
24
+ context "#read_config_file" do
25
+ it "should read and parse the yaml file" do
26
+ YAML.should_receive(:load_file).with(config_file).and_return({:test => 'test'})
27
+ Headshop.read_config_file(config_file)
28
+ Headshop.meta_data.should == {:test => 'test'}
29
+ end
30
+ end
31
+
32
+ context "#has_meta_data_for?" do
33
+ before(:all) do
34
+ Headshop.setup do |config|
35
+ config.config_file = File.join(File.dirname(__FILE__), '..', 'headshop.yml')
36
+ end
37
+ end
38
+
39
+ it "should return false if no meta data" do
40
+ Headshop.has_meta_data_for?('noway', 'noway').should be_false
41
+ end
42
+
43
+ it "should return true if the controller/action key are found" do
44
+ Headshop.has_meta_data_for?('controller', 'action').should be_true
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,12 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ Bundler.setup
4
+
5
+ require 'rspec'
6
+ require "action_controller/railtie"
7
+
8
+ RSpec.configure do |config|
9
+ config.mock_with :rspec
10
+ end
11
+
12
+ require File.join(File.dirname(__FILE__), "..", "lib", "headshop")
metadata ADDED
@@ -0,0 +1,185 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: headshop
3
+ version: !ruby/object:Gem::Version
4
+ hash: 21
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 2
9
+ - 1
10
+ version: 0.2.1
11
+ platform: ruby
12
+ authors:
13
+ - Chuck Collins
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-05-10 00:00:00 -05:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ prerelease: false
23
+ type: :development
24
+ name: bundler
25
+ version_requirements: &id001 !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ~>
29
+ - !ruby/object:Gem::Version
30
+ hash: 23
31
+ segments:
32
+ - 1
33
+ - 0
34
+ - 0
35
+ version: 1.0.0
36
+ requirement: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ prerelease: false
39
+ type: :development
40
+ name: jeweler
41
+ version_requirements: &id002 !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ hash: 7
47
+ segments:
48
+ - 1
49
+ - 5
50
+ - 2
51
+ version: 1.5.2
52
+ requirement: *id002
53
+ - !ruby/object:Gem::Dependency
54
+ prerelease: false
55
+ type: :development
56
+ name: mocha
57
+ version_requirements: &id003 !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ hash: 3
63
+ segments:
64
+ - 0
65
+ version: "0"
66
+ requirement: *id003
67
+ - !ruby/object:Gem::Dependency
68
+ prerelease: false
69
+ type: :development
70
+ name: providence
71
+ version_requirements: &id004 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ hash: 3
77
+ segments:
78
+ - 0
79
+ version: "0"
80
+ requirement: *id004
81
+ - !ruby/object:Gem::Dependency
82
+ prerelease: false
83
+ type: :development
84
+ name: rails
85
+ version_requirements: &id005 !ruby/object:Gem::Requirement
86
+ none: false
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ hash: 3
91
+ segments:
92
+ - 0
93
+ version: "0"
94
+ requirement: *id005
95
+ - !ruby/object:Gem::Dependency
96
+ prerelease: false
97
+ type: :development
98
+ name: rspec-rails
99
+ version_requirements: &id006 !ruby/object:Gem::Requirement
100
+ none: false
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ hash: 3
105
+ segments:
106
+ - 0
107
+ version: "0"
108
+ requirement: *id006
109
+ - !ruby/object:Gem::Dependency
110
+ prerelease: false
111
+ type: :development
112
+ name: rcov
113
+ version_requirements: &id007 !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ hash: 3
119
+ segments:
120
+ - 0
121
+ version: "0"
122
+ requirement: *id007
123
+ description: Manage meta tags through an external yml file. Easy configuration. Takes ugly boilerplate away from your app.
124
+ email: chuck.collins@gmail.com
125
+ executables: []
126
+
127
+ extensions: []
128
+
129
+ extra_rdoc_files:
130
+ - LICENSE.txt
131
+ - README.markdown
132
+ files:
133
+ - .document
134
+ - .rvmrc
135
+ - Gemfile
136
+ - Gemfile.lock
137
+ - LICENSE.txt
138
+ - README.markdown
139
+ - Rakefile
140
+ - VERSION
141
+ - lib/headshop.rb
142
+ - lib/headshop/meta_tag_helper.rb
143
+ - spec/headshop.yml
144
+ - spec/headshop_no_default_no_base.yml
145
+ - spec/lib/headshop/meta_tag_helper_spec.rb
146
+ - spec/lib/headshop_spec.rb
147
+ - spec/spec_helper.rb
148
+ has_rdoc: true
149
+ homepage: http://github.com/ccollins/headshop
150
+ licenses:
151
+ - MIT
152
+ post_install_message:
153
+ rdoc_options: []
154
+
155
+ require_paths:
156
+ - lib
157
+ required_ruby_version: !ruby/object:Gem::Requirement
158
+ none: false
159
+ requirements:
160
+ - - ">="
161
+ - !ruby/object:Gem::Version
162
+ hash: 3
163
+ segments:
164
+ - 0
165
+ version: "0"
166
+ required_rubygems_version: !ruby/object:Gem::Requirement
167
+ none: false
168
+ requirements:
169
+ - - ">="
170
+ - !ruby/object:Gem::Version
171
+ hash: 3
172
+ segments:
173
+ - 0
174
+ version: "0"
175
+ requirements: []
176
+
177
+ rubyforge_project:
178
+ rubygems_version: 1.3.7
179
+ signing_key:
180
+ specification_version: 3
181
+ summary: Meta tag management to DRY up your views and SEO the crap out of your site.
182
+ test_files:
183
+ - spec/lib/headshop/meta_tag_helper_spec.rb
184
+ - spec/lib/headshop_spec.rb
185
+ - spec/spec_helper.rb