tophat 1.6.1 → 1.7.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/lib/tophat.rb +20 -11
- data/lib/tophat/html.rb +18 -2
- data/lib/tophat/meta.rb +17 -5
- data/lib/tophat/opengraph.rb +0 -2
- data/lib/tophat/railtie.rb +20 -0
- data/lib/tophat/reset.rb +14 -0
- data/lib/tophat/robots.rb +0 -2
- data/lib/tophat/stylesheet.rb +0 -2
- data/lib/tophat/title.rb +0 -2
- data/lib/tophat/twitter_card.rb +0 -2
- data/lib/tophat/version.rb +1 -1
- data/spec/spec_helper.rb +4 -0
- data/spec/tophat/html_helper_spec.rb +35 -7
- data/spec/tophat/meta_helper_spec.rb +23 -0
- metadata +20 -18
data/lib/tophat.rb
CHANGED
@@ -1,24 +1,33 @@
|
|
1
1
|
require 'action_view'
|
2
|
+
require 'tophat/html'
|
3
|
+
require 'tophat/title'
|
4
|
+
require 'tophat/meta'
|
5
|
+
require 'tophat/stylesheet'
|
6
|
+
require 'tophat/robots'
|
7
|
+
require 'tophat/opengraph'
|
8
|
+
require 'tophat/twitter_card'
|
2
9
|
|
3
10
|
module TopHat
|
4
11
|
extend self
|
5
12
|
|
6
|
-
|
7
|
-
return Thread.current[:tophat] if Thread.current[:tophat]
|
13
|
+
require "tophat/railtie" if defined?(::Rails)
|
8
14
|
|
9
|
-
|
15
|
+
def current
|
16
|
+
Thread.current[:tophat] ||= {}
|
10
17
|
end
|
11
18
|
|
12
19
|
def reset
|
13
20
|
Thread.current[:tophat] = {}
|
14
21
|
end
|
15
22
|
|
16
|
-
|
23
|
+
def setup
|
24
|
+
ActionView::Base.send :include, TopHat::HtmlHelper
|
25
|
+
ActionView::Base.send :include, TopHat::TitleHelper
|
26
|
+
ActionView::Base.send :include, TopHat::MetaHelper
|
27
|
+
ActionView::Base.send :include, TopHat::StylesheetHelper
|
28
|
+
ActionView::Base.send :include, TopHat::RobotsHelper
|
29
|
+
ActionView::Base.send :include, TopHat::OpenGraphHelper
|
30
|
+
ActionView::Base.send :include, TopHat::TwitterCardHelper
|
31
|
+
end
|
17
32
|
|
18
|
-
|
19
|
-
require 'tophat/title'
|
20
|
-
require 'tophat/meta'
|
21
|
-
require 'tophat/stylesheet'
|
22
|
-
require 'tophat/robots'
|
23
|
-
require 'tophat/opengraph'
|
24
|
-
require 'tophat/twitter_card'
|
33
|
+
end
|
data/lib/tophat/html.rb
CHANGED
@@ -12,10 +12,26 @@ module TopHat
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
+
if options[:prefix]
|
16
|
+
if options[:prefix].kind_of?(Hash)
|
17
|
+
prefix_options = options.delete(:prefix)
|
18
|
+
options['prefix'] = "#{prefix_options[:prefix]}: #{prefix_options[:url]}"
|
19
|
+
elsif options[:prefix].kind_of?(Array)
|
20
|
+
prefixes = []
|
21
|
+
options.delete(:prefix).each do |prefix|
|
22
|
+
if prefix.kind_of?(Hash)
|
23
|
+
prefixes << "#{prefix[:prefix]}: #{prefix[:url]}"
|
24
|
+
else
|
25
|
+
prefixes << prefix
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
options['prefix'] = prefixes.join(' ')
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
15
33
|
tag(:html, options, true)
|
16
34
|
end
|
17
35
|
|
18
36
|
end
|
19
37
|
end
|
20
|
-
|
21
|
-
ActionView::Base.send :include, TopHat::HtmlHelper
|
data/lib/tophat/meta.rb
CHANGED
@@ -1,6 +1,19 @@
|
|
1
1
|
module TopHat
|
2
2
|
module MetaHelper
|
3
3
|
|
4
|
+
# Meta Tag helper
|
5
|
+
def meta_tag(options, open=false, escape=true)
|
6
|
+
tag(:meta, options, open, escape)
|
7
|
+
end
|
8
|
+
|
9
|
+
def charset(charset, options={})
|
10
|
+
meta_tag(options.merge(:charset => charset), true)
|
11
|
+
end
|
12
|
+
|
13
|
+
def viewport(viewport, options={})
|
14
|
+
meta_tag(options.merge(:name => 'viewport', :content => viewport), true)
|
15
|
+
end
|
16
|
+
|
4
17
|
# page descriptions
|
5
18
|
# <meta name="description" content="Description goes here." />
|
6
19
|
def description(options={})
|
@@ -9,10 +22,11 @@ module TopHat
|
|
9
22
|
TopHat.current['description'] = options
|
10
23
|
|
11
24
|
else
|
25
|
+
default_description = options.delete(:default)
|
12
26
|
options[:name] = 'description'
|
13
|
-
options[:content] = TopHat.current['description'] ||
|
27
|
+
options[:content] = TopHat.current['description'] || default_description
|
14
28
|
|
15
|
-
|
29
|
+
meta_tag(options) if options[:content]
|
16
30
|
end
|
17
31
|
end
|
18
32
|
|
@@ -39,10 +53,8 @@ module TopHat
|
|
39
53
|
display_keywords += default_keywords if options.delete(:merge_default) == true
|
40
54
|
|
41
55
|
options.merge!(:content => display_keywords.uniq.join(', ').squeeze(' '))
|
42
|
-
|
56
|
+
meta_tag(options) if display_keywords.any?
|
43
57
|
end
|
44
58
|
end
|
45
59
|
end
|
46
60
|
end
|
47
|
-
|
48
|
-
ActionView::Base.send :include, TopHat::MetaHelper
|
data/lib/tophat/opengraph.rb
CHANGED
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'tophat'
|
2
|
+
require 'tophat/reset'
|
3
|
+
require 'rails'
|
4
|
+
|
5
|
+
module TopHat
|
6
|
+
class Railtie < Rails::Railtie
|
7
|
+
|
8
|
+
initializer "tophat.view_helpers" do |app|
|
9
|
+
TopHat.setup
|
10
|
+
end
|
11
|
+
|
12
|
+
# Clear the identity map after each request
|
13
|
+
initializer "tophat.reset" do |app|
|
14
|
+
ActiveSupport.on_load(:action_controller) do
|
15
|
+
include(TopHat::Reset)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
data/lib/tophat/reset.rb
ADDED
data/lib/tophat/robots.rb
CHANGED
data/lib/tophat/stylesheet.rb
CHANGED
data/lib/tophat/title.rb
CHANGED
data/lib/tophat/twitter_card.rb
CHANGED
data/lib/tophat/version.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -15,15 +15,43 @@ describe TopHat::HtmlHelper do
|
|
15
15
|
output.should eq('<html version="123">')
|
16
16
|
end
|
17
17
|
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
context 'xmlns' do
|
19
|
+
it 'accepts xmlns passed as strings' do
|
20
|
+
output = @template.html_tag(:xmlns => 'http://someurl.com')
|
21
|
+
output.should eq('<html xmlns="http://someurl.com">')
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'accepts xmlns passed as an array of hashes' do
|
25
|
+
xmlns = { :prefix => 'fb', :url => 'http://developers.facebook.com/schema/' }
|
26
|
+
output = @template.html_tag(:xmlns => [xmlns])
|
27
|
+
output.should eq('<html xmlns:fb="http://developers.facebook.com/schema/">')
|
28
|
+
end
|
21
29
|
end
|
22
30
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
31
|
+
context 'prefixes' do
|
32
|
+
it 'accepts prefixes passed as strings' do
|
33
|
+
output = @template.html_tag(:prefix => 'ohai')
|
34
|
+
output.should eq('<html prefix="ohai">')
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'accepts prefixes passed as a hash' do
|
38
|
+
output = @template.html_tag(:prefix => { :prefix => 'og', :url => 'http://ogp.me/ns#' })
|
39
|
+
output.should eq('<html prefix="og: http://ogp.me/ns#">')
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'accepts prefixes passed as an array of hashes' do
|
43
|
+
prefixes = [
|
44
|
+
{ :prefix => 'og', :url => 'http://ogp.me/ns#' },
|
45
|
+
{ :prefix => 'fb', :url => 'http://ogp.me/ns/fb#' }
|
46
|
+
]
|
47
|
+
output = @template.html_tag(:prefix => prefixes)
|
48
|
+
output.should eq('<html prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb#">')
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'accepts prefixes passes and an array of strings' do
|
52
|
+
output = @template.html_tag(:prefix => ['og: http://ogp.me/ns#', 'fb: http://ogp.me/ns/fb#'])
|
53
|
+
output.should eq('<html prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb#">')
|
54
|
+
end
|
27
55
|
end
|
28
56
|
|
29
57
|
end
|
@@ -6,6 +6,24 @@ describe TopHat::MetaHelper do
|
|
6
6
|
@template = ActionView::Base.new
|
7
7
|
end
|
8
8
|
|
9
|
+
describe "charset" do
|
10
|
+
it 'renders a meta tag with a charset' do
|
11
|
+
@template.charset('utf-8').should eq('<meta charset="utf-8">')
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe "viewport" do
|
16
|
+
it 'renders a meta tag with a viewport' do
|
17
|
+
@template.viewport('width=device-width').should eq('<meta content="width=device-width" name="viewport">')
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe "meta_tag" do
|
22
|
+
it 'renders meta_tags' do
|
23
|
+
@template.meta_tag(:charset => 'utf-8').should eq('<meta charset="utf-8" />')
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
9
27
|
describe "keywords" do
|
10
28
|
context "defined as an array" do
|
11
29
|
before do
|
@@ -67,6 +85,11 @@ describe TopHat::MetaHelper do
|
|
67
85
|
it "returns nil when no default is configured and no description is defined" do
|
68
86
|
@template.description.should be_nil
|
69
87
|
end
|
88
|
+
|
89
|
+
it 'overrides the default' do
|
90
|
+
@template.description('This is a custom description')
|
91
|
+
@template.description(:default => 'This is a default description.').should eq('<meta content="This is a custom description" name="description" />')
|
92
|
+
end
|
70
93
|
end
|
71
94
|
|
72
95
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tophat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.7.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-07-24 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: actionpack
|
16
|
-
requirement: &
|
16
|
+
requirement: &70142323594740 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 3.0.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70142323594740
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &70142323593260 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70142323593260
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec
|
38
|
-
requirement: &
|
38
|
+
requirement: &70142323591560 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70142323591560
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: yard
|
49
|
-
requirement: &
|
49
|
+
requirement: &70142323590340 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70142323590340
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rdiscount
|
60
|
-
requirement: &
|
60
|
+
requirement: &70142323588840 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70142323588840
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: simplecov
|
71
|
-
requirement: &
|
71
|
+
requirement: &70142323587760 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70142323587760
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rails
|
82
|
-
requirement: &
|
82
|
+
requirement: &70142323586680 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: 3.0.0
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70142323586680
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: guard-rspec
|
93
|
-
requirement: &
|
93
|
+
requirement: &70142323585960 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,7 +98,7 @@ dependencies:
|
|
98
98
|
version: '0'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *70142323585960
|
102
102
|
description: Simple view helpers for your layouts
|
103
103
|
email:
|
104
104
|
- steve.agalloco@gmail.com
|
@@ -119,6 +119,8 @@ files:
|
|
119
119
|
- lib/tophat/html.rb
|
120
120
|
- lib/tophat/meta.rb
|
121
121
|
- lib/tophat/opengraph.rb
|
122
|
+
- lib/tophat/railtie.rb
|
123
|
+
- lib/tophat/reset.rb
|
122
124
|
- lib/tophat/robots.rb
|
123
125
|
- lib/tophat/stylesheet.rb
|
124
126
|
- lib/tophat/title.rb
|