site_meta 0.2.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/History.txt +5 -0
- data/README.rdoc +71 -0
- data/init.rb +1 -0
- data/lib/site_meta.rb +204 -0
- data/rails/init.rb +3 -0
- metadata +91 -0
data/History.txt
ADDED
data/README.rdoc
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
= site_meta
|
2
|
+
|
3
|
+
* http://bragi.github.com/site_meta
|
4
|
+
|
5
|
+
== DESCRIPTION:
|
6
|
+
|
7
|
+
Provides helpers for easy adding of html meta information to Rails applications.
|
8
|
+
|
9
|
+
== FEATURES:
|
10
|
+
|
11
|
+
* Easily add default description and keywords meta tags.
|
12
|
+
* Customize meta tags on per-view basis
|
13
|
+
* Add head title tag with breadcrubms
|
14
|
+
* Add page title
|
15
|
+
|
16
|
+
== PROBLEMS:
|
17
|
+
|
18
|
+
Use lighthouse to report problems/feature requests:
|
19
|
+
|
20
|
+
* http://bragi.lighthouseapp.com/projects/23211-site_meta
|
21
|
+
|
22
|
+
== SYNOPSIS:
|
23
|
+
|
24
|
+
In your layout (haml assumed):
|
25
|
+
|
26
|
+
%head
|
27
|
+
= meta_description("Default meta description")
|
28
|
+
= meta_keywords("some, default, keywords")
|
29
|
+
= head_title("Site name")
|
30
|
+
%body
|
31
|
+
%h1= page_title("Default page title")
|
32
|
+
|
33
|
+
In your view:
|
34
|
+
|
35
|
+
- set_meta_description(h(@item.description))
|
36
|
+
- set_meta_keywords(h(@item.tags.join(",")))
|
37
|
+
- set_head_title([h(@item.title), "Showing item"])
|
38
|
+
- set_page_title(h(@item.title))
|
39
|
+
|
40
|
+
== INSTALL:
|
41
|
+
|
42
|
+
* sudo gem install bragi-site_meta
|
43
|
+
* Add following line to your config/environment.rb
|
44
|
+
Rails::Initializer.run do |config|
|
45
|
+
config.gem 'bragi-site_meta'
|
46
|
+
end
|
47
|
+
|
48
|
+
== LICENSE:
|
49
|
+
|
50
|
+
(The MIT License)
|
51
|
+
|
52
|
+
Copyright (c) 2009 Lukasz Piestrzeniewicz
|
53
|
+
|
54
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
55
|
+
a copy of this software and associated documentation files (the
|
56
|
+
'Software'), to deal in the Software without restriction, including
|
57
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
58
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
59
|
+
permit persons to whom the Software is furnished to do so, subject to
|
60
|
+
the following conditions:
|
61
|
+
|
62
|
+
The above copyright notice and this permission notice shall be
|
63
|
+
included in all copies or substantial portions of the Software.
|
64
|
+
|
65
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
66
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
67
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
68
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
69
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
70
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
71
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/init.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require File.dirname(__FILE__)+'/rails/init.rb'
|
data/lib/site_meta.rb
ADDED
@@ -0,0 +1,204 @@
|
|
1
|
+
# Provides helpers for easily adding metadata to your views and layouts.
|
2
|
+
#
|
3
|
+
# In your layout use helpers +head_title+, +meta_description+, +meta_keywords+
|
4
|
+
# with optional defaults. In each view you can override the defaults using
|
5
|
+
# helpers +set_head_title+, +set_meta_description+, +set_meta_keywords+.
|
6
|
+
#
|
7
|
+
# == Providing description meta
|
8
|
+
#
|
9
|
+
# In your layout use +meta_description+ in head section of HTML with optional
|
10
|
+
# default description:
|
11
|
+
#
|
12
|
+
# %head
|
13
|
+
# = meta_description("Site_meta is the easiest way to provide metadata in your Rails application")
|
14
|
+
#
|
15
|
+
# In each view you can override default setting using +set_meta_description+.
|
16
|
+
# In view app/views/pages/show.html.haml
|
17
|
+
#
|
18
|
+
# - set_meta_description(h(@page.description))
|
19
|
+
#
|
20
|
+
# == Providing keywords meta
|
21
|
+
#
|
22
|
+
# In your layout use +meta_keywords+ in head section of HTML with optional
|
23
|
+
# list of default keywords:
|
24
|
+
#
|
25
|
+
# %head
|
26
|
+
# = meta_keywords("rails,gem,plugin,ruby,meta,metadata,html")
|
27
|
+
#
|
28
|
+
# In each view you can override or add keywords using +set_meta_keywords+.
|
29
|
+
# In view app/views/pages/show.html.haml
|
30
|
+
#
|
31
|
+
# - set_meta_keywords(h(@page.tags.join(",")))
|
32
|
+
#
|
33
|
+
# which will add keywords to the default set or
|
34
|
+
#
|
35
|
+
# - set_meta_keywords("pricing,information", :replace)
|
36
|
+
#
|
37
|
+
# to replace the whole list.
|
38
|
+
#
|
39
|
+
# == Providing title
|
40
|
+
#
|
41
|
+
# In your layout use +head_title+ in head section and provide last element of
|
42
|
+
# breadcrumb trail (usually site name)
|
43
|
+
#
|
44
|
+
# %head
|
45
|
+
# = head_title("Site_meta")
|
46
|
+
#
|
47
|
+
# In each view you provide title using +set_head_title+, where you can provide
|
48
|
+
# more elements of breadcrumbs. In view app/views/pages/show.html.haml
|
49
|
+
#
|
50
|
+
# - set_head_title(h(@page.title))
|
51
|
+
#
|
52
|
+
# or in app/views/pages/edit.html.haml
|
53
|
+
#
|
54
|
+
# - set_head_title("Editing #{h(@page.title)}", "Pages")
|
55
|
+
#
|
56
|
+
# This will result in title set to:
|
57
|
+
#
|
58
|
+
# "Page title - Site_meta"
|
59
|
+
#
|
60
|
+
# in first case and:
|
61
|
+
#
|
62
|
+
# "Editing Page title - Pages - Site_meta"
|
63
|
+
#
|
64
|
+
# in second case
|
65
|
+
#
|
66
|
+
# == Providing title in HTML
|
67
|
+
#
|
68
|
+
# Title that is presented in the body part of HTML doesn't need the
|
69
|
+
# breadcrumbs and may differ from the title presented in HTML head part.
|
70
|
+
# Use +page_title+ helper in your layout:
|
71
|
+
#
|
72
|
+
# %body
|
73
|
+
# %h1= page_title
|
74
|
+
#
|
75
|
+
# In each view set the page title using +set_page_title+ helper. In view
|
76
|
+
# app/views/pages/show.html.haml:
|
77
|
+
#
|
78
|
+
# - set_page_title(h(@page.title))
|
79
|
+
#
|
80
|
+
# == Providing head and page title at the same time
|
81
|
+
#
|
82
|
+
# In most situations (like in case of show.html.haml mentioned above) you want
|
83
|
+
# to have the same title used as a page title and as a beginning of the
|
84
|
+
# breadcrumb trail. In that case use +set_head_and_page_title+ helper.
|
85
|
+
# In view app/views/pages/show.html.haml
|
86
|
+
#
|
87
|
+
# - set_head_and_page_title(h(@page.title), "Pages")
|
88
|
+
#
|
89
|
+
# This will set page title to first element and set proper trail in head.
|
90
|
+
#
|
91
|
+
# == Providing encoding
|
92
|
+
#
|
93
|
+
# To provide encoding information use +meta_content_type+ in your layout use
|
94
|
+
#
|
95
|
+
# %head
|
96
|
+
# = meta_content_type
|
97
|
+
#
|
98
|
+
# This will provide utf-8 charset by default.
|
99
|
+
module SiteMeta
|
100
|
+
VERSION = '0.2.0'
|
101
|
+
|
102
|
+
# Returns meta tag with appropriate encoding specified. +type+ may be any
|
103
|
+
# string, it's inserted verbatim. Popular encodings include "utf-8",
|
104
|
+
# "iso-8859-1" and others.
|
105
|
+
def meta_content_type(type=:utf)
|
106
|
+
type = "utf-8" if type == :utf
|
107
|
+
meta_tag("Content-Type", "text/html; charset=#{type}", "http-equiv")
|
108
|
+
end
|
109
|
+
|
110
|
+
# Returns string with title tag to use in html head. It uses +default_title+
|
111
|
+
# unless you provide breadcrumb elements using +set_head_title+ or
|
112
|
+
# +set_head_and_page_title+. Elements of title (with +default_title+
|
113
|
+
# being the last one) are joined using +separator+.
|
114
|
+
def head_title(default_title, separator=" - ")
|
115
|
+
title = [@head_title, default_title].flatten.compact.join(separator)
|
116
|
+
title_tag(title)
|
117
|
+
end
|
118
|
+
|
119
|
+
# Returns description meta tag with +default_description+ to use in html
|
120
|
+
# head. You can override it on per-view base using +set_meta_description+.
|
121
|
+
# Returns nil when +default_description+ is nil and you did not provide one
|
122
|
+
# using +set_meta_description+.
|
123
|
+
def meta_description(default_description=nil)
|
124
|
+
description = @meta_description || default_description
|
125
|
+
if description
|
126
|
+
meta_tag(:description, description)
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
# Returns keywords meta tag with +default_keywords+ to use in html head.
|
131
|
+
# You can override keywords on per-view base using +set_meta_keywords+.
|
132
|
+
# Optional +default_keywords+ may be a comma separated string or array of
|
133
|
+
# strings. Returns nil when +default_keywords+ is nil and none additional
|
134
|
+
# keywords were provided through +set_meta_keywords+.
|
135
|
+
def meta_keywords(default_keywords=[])
|
136
|
+
merge_mode = @meta_keywords_merge_mode || :merge
|
137
|
+
meta_keywords = split_keywords(@meta_keywords)
|
138
|
+
keywords = if merge_mode == :merge
|
139
|
+
default_keywords = split_keywords(default_keywords)
|
140
|
+
(meta_keywords + default_keywords).uniq
|
141
|
+
else
|
142
|
+
meta_keywords
|
143
|
+
end
|
144
|
+
|
145
|
+
unless keywords.empty?
|
146
|
+
meta_tag(:keywords, keywords.join(","))
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
# Returns page title set using +set_page_title+
|
151
|
+
def page_title
|
152
|
+
@page_title
|
153
|
+
end
|
154
|
+
|
155
|
+
# Sets head title breadcrumbs trail
|
156
|
+
def set_head_title(*title)
|
157
|
+
@head_title = title.flatten
|
158
|
+
end
|
159
|
+
|
160
|
+
# Sets head title breadcrumbs trail and page title to the leftmost element.
|
161
|
+
def set_head_and_page_title(*title)
|
162
|
+
title = [title].flatten.compact
|
163
|
+
set_head_title title
|
164
|
+
set_page_title title.first
|
165
|
+
end
|
166
|
+
|
167
|
+
# Sets page title to use with +page_title+
|
168
|
+
def set_page_title(title)
|
169
|
+
@page_title = title
|
170
|
+
end
|
171
|
+
|
172
|
+
# Sets meta +description+ to use with +meta_description+.
|
173
|
+
def set_meta_description(description)
|
174
|
+
@meta_description = description
|
175
|
+
end
|
176
|
+
|
177
|
+
# Sets +keywords+ to use with +meta_keywords+. Optional +merge_mode+ may be
|
178
|
+
# set to either :merge (default) or :replace. In the second mode provided
|
179
|
+
# keywords are not merged with defaults when output using +meta_keywords+.
|
180
|
+
def set_meta_keywords(keywords, merge_mode=:merge)
|
181
|
+
raise(ArgumentError, "Allowed merge modes are only :replace, :merge") unless [:replace,:merge].include?(merge_mode)
|
182
|
+
@meta_keywords = keywords
|
183
|
+
@meta_keywords_merge_mode = merge_mode
|
184
|
+
end
|
185
|
+
|
186
|
+
def split_keywords(keywords) #:nodoc:
|
187
|
+
return [] unless keywords
|
188
|
+
keywords = keywords.split(",") if keywords.is_a? String
|
189
|
+
keywords.flatten.map {|k| k.strip}
|
190
|
+
end
|
191
|
+
|
192
|
+
def meta_tag(name, content, key='name') #:nodoc:
|
193
|
+
if defined?(ActionView::Base)
|
194
|
+
tag 'meta', key => name, :content => content
|
195
|
+
else
|
196
|
+
"<meta #{key}=\"#{name}\" content=\"#{content}\" />"
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
def title_tag(content) #:nodoc:
|
201
|
+
"<title>#{content}</title>"
|
202
|
+
end
|
203
|
+
|
204
|
+
end
|
data/rails/init.rb
ADDED
metadata
ADDED
@@ -0,0 +1,91 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: site_meta
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Lukasz Piestrzeniewicz
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-01-08 00:00:00 +01:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: actionpack
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 1.0.0
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: newgem
|
27
|
+
type: :development
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.1.0
|
34
|
+
version:
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: hoe
|
37
|
+
type: :development
|
38
|
+
version_requirement:
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 1.8.0
|
44
|
+
version:
|
45
|
+
description: Provides helpers for easy adding of html meta information to Rails applications.
|
46
|
+
email:
|
47
|
+
- bragi@ragnarson.com
|
48
|
+
executables: []
|
49
|
+
|
50
|
+
extensions: []
|
51
|
+
|
52
|
+
extra_rdoc_files:
|
53
|
+
- History.txt
|
54
|
+
- README.rdoc
|
55
|
+
files:
|
56
|
+
- History.txt
|
57
|
+
- init.rb
|
58
|
+
- lib/site_meta.rb
|
59
|
+
- rails/init.rb
|
60
|
+
- README.rdoc
|
61
|
+
has_rdoc: true
|
62
|
+
homepage: http://github.com/bragi/site_meta
|
63
|
+
licenses: []
|
64
|
+
|
65
|
+
post_install_message:
|
66
|
+
rdoc_options:
|
67
|
+
- --main
|
68
|
+
- README.rdoc
|
69
|
+
require_paths:
|
70
|
+
- lib
|
71
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: "0"
|
76
|
+
version:
|
77
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ">="
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: "0"
|
82
|
+
version:
|
83
|
+
requirements: []
|
84
|
+
|
85
|
+
rubyforge_project: site_meta
|
86
|
+
rubygems_version: 1.3.5
|
87
|
+
signing_key:
|
88
|
+
specification_version: 2
|
89
|
+
summary: Provides helpers for easy adding of html meta information to Rails applications.
|
90
|
+
test_files: []
|
91
|
+
|