metamagic 3.0.1 → 3.0.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fba62bacfa3f4e346ae0524f52b8514f6d9b20b5
4
- data.tar.gz: 58f310e55106f357ae972bdf1d5386b1ab5261d5
3
+ metadata.gz: 441f987b272f8c0e3ba824f605200ff7bbcfe99c
4
+ data.tar.gz: 542b12e92fb1dde3e7fda07af2ba2f42c23ad6ef
5
5
  SHA512:
6
- metadata.gz: 2e9bad37c4556b757d3b774cbb0d80ea5fb83658d60e01a3baa3fd2dac4c2af7d3701322cb905529738c72da8cfa313544e80f3d218cc753fb119c950d4d5dee
7
- data.tar.gz: 0b6de62e85b5dddf63a10179169cd1e675f5630f3d14d1dafce7c2cee1534aec478214bb9767ee8482ecdda732d214524e6130a89822c7eb95eec05d1a6b569e
6
+ metadata.gz: c56cad2e5724979f9c80b674631173a0a4b8212a43f5ed603d08be7f0f929c1fc6198513a3b06805dc570415ffe1294051c60f103117adcaa1bca4c728e4632e
7
+ data.tar.gz: 3e1bc82654ba692999f50103be16c5a222ac356bd87e70675d7af3c69699e550ffff56decd576da059f826c654db2644e78019340e42b9698dd098d836d11fab
data/README.md CHANGED
@@ -16,7 +16,7 @@ Installation
16
16
  In your *Gemfile*:
17
17
 
18
18
  ```ruby
19
- gem 'metamagic', '3.0.0.beta2'
19
+ gem 'metamagic'
20
20
  ```
21
21
 
22
22
  Then run `bundle install`.
@@ -26,16 +26,7 @@ Examples
26
26
 
27
27
  ### Basic usage
28
28
 
29
- In your *app/views/layouts/application.html.erb*:
30
-
31
- ```erb
32
- <head>
33
- <%= metamagic %>
34
- ...
35
- </head>
36
- ```
37
-
38
- Then, at the top of your view, e.g. *app/views/posts/show.html.erb*:
29
+ At the top of your view, e.g. *app/views/posts/show.html.erb*:
39
30
 
40
31
  ```erb
41
32
  <%
@@ -45,6 +36,15 @@ meta title: "My Title",
45
36
  %>
46
37
  ```
47
38
 
39
+ And in *app/views/layouts/application.html.erb*:
40
+
41
+ ```erb
42
+ <head>
43
+ <%= metamagic %>
44
+ ...
45
+ </head>
46
+ ```
47
+
48
48
  This will generate the following:
49
49
 
50
50
  ```html
@@ -114,6 +114,67 @@ This will generate the following:
114
114
  </head>
115
115
  ```
116
116
 
117
+ ### Adding relation links
118
+
119
+ You can add `<link rel="xx" href="xx">` tags like this:
120
+
121
+ ```erb
122
+ <%
123
+ meta rel: {
124
+ author: "http://test.com/author.html",
125
+ publisher: "http://test.com/publisher.html"
126
+ }
127
+ %>
128
+ ```
129
+
130
+ Or using the `rel` shortcut helper:
131
+
132
+ ```erb
133
+ <%
134
+ rel author: "http://test.com/author.html",
135
+ publisher: "http://test.com/publisher.html"
136
+ %>
137
+ ```
138
+
139
+ This will generate the following:
140
+
141
+ ```html
142
+ <head>
143
+ ...
144
+ <link href="http://test.com/author.html" rel="author" />
145
+ <link href="http://test.com/publisher.html" rel="publisher" />
146
+ ...
147
+ </head>
148
+ ```
149
+
150
+ ### Canonical links
151
+
152
+ For easy setting canonical links, you can use the following:
153
+
154
+ ```erb
155
+ <%
156
+ meta canonical: "http://test.com/page.html"
157
+ %>
158
+ ```
159
+
160
+ Or using the shortcut helper:
161
+
162
+ ```erb
163
+ <%
164
+ canonical "http://test.com/page.html"
165
+ %>
166
+ ```
167
+
168
+ This will generate the following:
169
+
170
+ ```html
171
+ <head>
172
+ ...
173
+ <link href="http://test.com/page.html" rel="canonical" />
174
+ ...
175
+ </head>
176
+ ```
177
+
117
178
  ### Custom properties
118
179
 
119
180
  #### OpenGraph (Facebook)
@@ -5,8 +5,10 @@ module Metamagic
5
5
  description: MetaTag,
6
6
  keywords: MetaTag,
7
7
  property: PropertyTag,
8
- og: PropertyTag,
9
- twitter: PropertyTag
8
+ rel: LinkTag,
9
+ canonical: LinkTag,
10
+ og: OpenGraphTag,
11
+ twitter: TwitterTag
10
12
  }
11
13
 
12
14
  class << self
data/lib/metamagic/tag.rb CHANGED
@@ -4,6 +4,7 @@ module Metamagic
4
4
 
5
5
  def initialize(context, key, value)
6
6
  @context, @key, @value = context, key, value
7
+ @key = @key.gsub /^[^:]+:/, "" if remove_prefix?
7
8
  end
8
9
 
9
10
  def to_html
@@ -14,6 +15,10 @@ module Metamagic
14
15
  1000
15
16
  end
16
17
 
18
+ def remove_prefix?
19
+ true
20
+ end
21
+
17
22
  def ==(other)
18
23
  self.class == other.class && self.key == other.key
19
24
  end
@@ -7,6 +7,10 @@ module Metamagic
7
7
  @render_proc = render_proc
8
8
  end
9
9
 
10
+ def remove_prefix?
11
+ false
12
+ end
13
+
10
14
  def to_html
11
15
  instance_exec key, value, &render_proc
12
16
  end
@@ -0,0 +1,7 @@
1
+ module Metamagic
2
+ class LinkTag < Tag
3
+ def to_html
4
+ tag(:link, rel: key, href: value)
5
+ end
6
+ end
7
+ end
@@ -8,5 +8,9 @@ module Metamagic
8
8
  def sort_order
9
9
  2
10
10
  end
11
+
12
+ def remove_prefix?
13
+ false
14
+ end
11
15
  end
12
16
  end
@@ -0,0 +1,7 @@
1
+ module Metamagic
2
+ class OpenGraphTag < PropertyTag
3
+ def remove_prefix?
4
+ false
5
+ end
6
+ end
7
+ end
@@ -1,10 +1,5 @@
1
1
  module Metamagic
2
2
  class PropertyTag < Tag
3
- def initialize(context, key, value)
4
- super
5
- @key = @key.gsub /^property:/, "" # If added via property helper
6
- end
7
-
8
3
  def to_html
9
4
  Array(value).compact.map { |value| tag(:meta, property: key, content: value) }.join("\n").html_safe.presence
10
5
  end
@@ -0,0 +1,7 @@
1
+ module Metamagic
2
+ class TwitterTag < PropertyTag
3
+ def remove_prefix?
4
+ false
5
+ end
6
+ end
7
+ end
@@ -1,3 +1,3 @@
1
1
  module Metamagic
2
- VERSION = "3.0.1"
2
+ VERSION = "3.0.2"
3
3
  end
data/lib/metamagic.rb CHANGED
@@ -4,7 +4,10 @@
4
4
  tags/meta_tag
5
5
  tags/title_tag
6
6
  tags/property_tag
7
+ tags/link_tag
7
8
  tags/custom_tag
9
+ tags/open_graph_tag
10
+ tags/twitter_tag
8
11
  renderer
9
12
  view_helper
10
13
  }.each { |f| require "metamagic/#{f}" }
@@ -0,0 +1,18 @@
1
+ require "test_helper"
2
+
3
+ class CustomTagTest < ActionView::TestCase
4
+ include Metamagic::ViewHelper
5
+
6
+ test "custom tags" do
7
+ Metamagic::Renderer.register_tag_type :custom, ->(key, value) { tag(:custom_tag, one: key, two: value) }
8
+
9
+ meta title: "Test Title",
10
+ custom: {
11
+ first: "This is the first",
12
+ second: "This is the second"
13
+ }
14
+
15
+ assert_equal %{<title>Test Title</title>\n<custom_tag one="custom:first" two="This is the first" />\n<custom_tag one="custom:second" two="This is the second" />},
16
+ metamagic
17
+ end
18
+ end
@@ -0,0 +1,22 @@
1
+ require 'test_helper'
2
+
3
+ class LinkTagTest < ActionView::TestCase
4
+ include Metamagic::ViewHelper
5
+
6
+ test "link rel" do
7
+ meta rel: {
8
+ author: "http://test.com/author.html",
9
+ }
10
+ rel publisher: "http://test.com/publisher.html"
11
+
12
+ assert_equal %{<link href="http://test.com/author.html" rel="author" />\n<link href="http://test.com/publisher.html" rel="publisher" />},
13
+ metamagic
14
+ end
15
+
16
+ test "canonical shortcut helper" do
17
+ canonical "http://test.com/page.html"
18
+
19
+ assert_equal %{<link href="http://test.com/page.html" rel="canonical" />},
20
+ metamagic
21
+ end
22
+ end
@@ -3,6 +3,22 @@ require 'test_helper'
3
3
  class MetaTagTest < ActionView::TestCase
4
4
  include Metamagic::ViewHelper
5
5
 
6
+ test "meta tags" do
7
+ meta keywords: %w{one two three},
8
+ description: "My description"
9
+
10
+ assert_equal %{<meta content="one, two, three" name="keywords" />\n<meta content="My description" name="description" />},
11
+ metamagic
12
+ end
13
+
14
+ test "shortcut helpers" do
15
+ keywords %w{one two three}
16
+ description "My description"
17
+
18
+ assert_equal %{<meta content="one, two, three" name="keywords" />\n<meta content="My description" name="description" />},
19
+ metamagic
20
+ end
21
+
6
22
  test "nil meta value" do
7
23
  title "Test Title"
8
24
  description nil
@@ -31,16 +31,14 @@ class MetamagicTest < ActionView::TestCase
31
31
  metamagic
32
32
  end
33
33
 
34
- test "custom tags" do
35
- Metamagic::Renderer.register_tag_type :custom, ->(key, value) { tag(:custom_tag, one: key, two: value) }
36
-
34
+ test "not adding existing meta tags by shortcut helpers" do
37
35
  meta title: "Test Title",
38
- custom: {
39
- first: "This is the first",
40
- second: "This is the second"
41
- }
36
+ description: "Test description."
42
37
 
43
- assert_equal %{<title>Test Title</title>\n<custom_tag one="custom:first" two="This is the first" />\n<custom_tag one="custom:second" two="This is the second" />},
38
+ title "Second Title"
39
+ description "Second description."
40
+
41
+ assert_equal %{<title>Test Title</title>\n<meta content="Test description." name="description" />},
44
42
  metamagic
45
43
  end
46
44
 
@@ -48,20 +46,8 @@ class MetamagicTest < ActionView::TestCase
48
46
  title "My Title"
49
47
  description "My description"
50
48
  keywords %w{one two three}
51
- og image: "http://test.com/img.jpg"
52
- twitter card: :summary, site: "@flickr"
53
- meta bla: "Test"
54
-
55
- assert_equal %{<title>My Title</title>\n<meta content="My description" name="description" />\n<meta content="one, two, three" name="keywords" />\n<meta content="Test" name="bla" />\n<meta content="summary" property="twitter:card" />\n<meta content="@flickr" property="twitter:site" />\n<meta content="http://test.com/img.jpg" property="og:image" />},
56
- metamagic
57
- end
58
-
59
- test "property helper" do
60
- meta property: { one: "Property One", two: "Property Two", "og:image" => "http://test.com/image.png", nested: { a: "Nested A" } }
61
- property two: "Property Two second", three: "Property Three", nested: { a: "Nested A second", b: "Nested B" }
62
- og title: "My Title", image: "http://test.com/image2.png"
63
49
 
64
- assert_equal %{<meta content="Property One" property="one" />\n<meta content="Property Two" property="two" />\n<meta content="http://test.com/image.png" property="og:image" />\n<meta content="Nested A" property="nested:a" />\n<meta content="Property Three" property="three" />\n<meta content="Nested B" property="nested:b" />\n<meta content="My Title" property="og:title" />},
50
+ assert_equal %{<title>My Title</title>\n<meta content="My description" name="description" />\n<meta content="one, two, three" name="keywords" />},
65
51
  metamagic
66
52
  end
67
53
 
@@ -7,10 +7,10 @@ class OpenGraphTest < ActionView::TestCase
7
7
  meta title: "Test Title",
8
8
  og: {
9
9
  image: {
10
- url: "http://test.com/image.jpg",
11
- type: "image/png"
10
+ url: "http://test.com/image.jpg"
12
11
  }
13
12
  }
13
+ og image: { type: "image/png" }
14
14
 
15
15
  assert_equal %{<title>Test Title</title>\n<meta content="http://test.com/image.jpg" property="og:image:url" />\n<meta content="image/png" property="og:image:type" />},
16
16
  metamagic
@@ -3,6 +3,14 @@ require 'test_helper'
3
3
  class PropertyTagTest < ActionView::TestCase
4
4
  include Metamagic::ViewHelper
5
5
 
6
+ test "property tags" do
7
+ meta property: { one: "Property One", two: "Property Two", "og:image" => "http://test.com/image.png", nested: { a: "Nested A" } }
8
+ property two: "Property Two second", three: "Property Three", nested: { a: "Nested A second", b: "Nested B" }
9
+
10
+ assert_equal %{<meta content="Property One" property="one" />\n<meta content="Property Two" property="two" />\n<meta content="http://test.com/image.png" property="og:image" />\n<meta content="Nested A" property="nested:a" />\n<meta content="Property Three" property="three" />\n<meta content="Nested B" property="nested:b" />},
11
+ metamagic
12
+ end
13
+
6
14
  test "property array" do
7
15
  og image: ["one.jpg", "two.jpg"]
8
16
 
@@ -3,6 +3,20 @@ require 'test_helper'
3
3
  class TitleTagTest < ActionView::TestCase
4
4
  include Metamagic::ViewHelper
5
5
 
6
+ test "title tag" do
7
+ meta title: "My Title"
8
+
9
+ assert_equal %{<title>My Title</title>},
10
+ metamagic
11
+ end
12
+
13
+ test "shortcut helper" do
14
+ title "My Title"
15
+
16
+ assert_equal %{<title>My Title</title>},
17
+ metamagic
18
+ end
19
+
6
20
  test "nil title" do
7
21
  title nil
8
22
  description "Test description"
@@ -3,12 +3,13 @@ require 'test_helper'
3
3
  class TwitterTest < ActionView::TestCase
4
4
  include Metamagic::ViewHelper
5
5
 
6
- test "twitter cards" do
6
+ test "twitter tag" do
7
7
  meta title: "Test Title",
8
8
  twitter: {
9
9
  card: :summary,
10
- site: "@flickr"
11
10
  }
11
+ twitter site: "@flickr"
12
+
12
13
 
13
14
  assert_equal %{<title>Test Title</title>\n<meta content="summary" property="twitter:card" />\n<meta content="@flickr" property="twitter:site" />},
14
15
  metamagic
metadata CHANGED
@@ -1,41 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metamagic
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.1
4
+ version: 3.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lasse Bunk
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-25 00:00:00.000000000 Z
11
+ date: 2014-06-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 3.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 3.0.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: sqlite3
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  description: Metamagic is a simple Ruby on Rails plugin for creating meta tags.
@@ -45,8 +45,8 @@ executables: []
45
45
  extensions: []
46
46
  extra_rdoc_files: []
47
47
  files:
48
- - .gitignore
49
- - .travis.yml
48
+ - ".gitignore"
49
+ - ".travis.yml"
50
50
  - CHANGELOG.md
51
51
  - Gemfile
52
52
  - LICENSE.txt
@@ -56,12 +56,16 @@ files:
56
56
  - lib/metamagic/renderer.rb
57
57
  - lib/metamagic/tag.rb
58
58
  - lib/metamagic/tags/custom_tag.rb
59
+ - lib/metamagic/tags/link_tag.rb
59
60
  - lib/metamagic/tags/meta_tag.rb
61
+ - lib/metamagic/tags/open_graph_tag.rb
60
62
  - lib/metamagic/tags/property_tag.rb
61
63
  - lib/metamagic/tags/title_tag.rb
64
+ - lib/metamagic/tags/twitter_tag.rb
62
65
  - lib/metamagic/version.rb
63
66
  - lib/metamagic/view_helper.rb
64
67
  - metamagic.gemspec
68
+ - test/custom_tag_test.rb
65
69
  - test/dummy/README.rdoc
66
70
  - test/dummy/Rakefile
67
71
  - test/dummy/app/assets/images/.keep
@@ -102,13 +106,14 @@ files:
102
106
  - test/dummy/public/500.html
103
107
  - test/dummy/public/favicon.ico
104
108
  - test/legacy_test.rb
109
+ - test/link_tag_test.rb
105
110
  - test/meta_tag_test.rb
106
111
  - test/metamagic_test.rb
107
112
  - test/open_graph_test.rb
108
113
  - test/property_tag_test.rb
109
114
  - test/test_helper.rb
110
115
  - test/title_tag_test.rb
111
- - test/twitter_test.rb
116
+ - test/twitter_tag_test.rb
112
117
  homepage: http://github.com/lassebunk/metamagic
113
118
  licenses:
114
119
  - MIT
@@ -119,21 +124,22 @@ require_paths:
119
124
  - lib
120
125
  required_ruby_version: !ruby/object:Gem::Requirement
121
126
  requirements:
122
- - - '>='
127
+ - - ">="
123
128
  - !ruby/object:Gem::Version
124
129
  version: '0'
125
130
  required_rubygems_version: !ruby/object:Gem::Requirement
126
131
  requirements:
127
- - - '>='
132
+ - - ">="
128
133
  - !ruby/object:Gem::Version
129
134
  version: '0'
130
135
  requirements: []
131
136
  rubyforge_project:
132
- rubygems_version: 2.1.10
137
+ rubygems_version: 2.2.1
133
138
  signing_key:
134
139
  specification_version: 4
135
140
  summary: Simple Ruby on Rails plugin for creating meta tags.
136
141
  test_files:
142
+ - test/custom_tag_test.rb
137
143
  - test/dummy/README.rdoc
138
144
  - test/dummy/Rakefile
139
145
  - test/dummy/app/assets/images/.keep
@@ -174,10 +180,11 @@ test_files:
174
180
  - test/dummy/public/500.html
175
181
  - test/dummy/public/favicon.ico
176
182
  - test/legacy_test.rb
183
+ - test/link_tag_test.rb
177
184
  - test/meta_tag_test.rb
178
185
  - test/metamagic_test.rb
179
186
  - test/open_graph_test.rb
180
187
  - test/property_tag_test.rb
181
188
  - test/test_helper.rb
182
189
  - test/title_tag_test.rb
183
- - test/twitter_test.rb
190
+ - test/twitter_tag_test.rb