meta_tags 0.2.0 → 0.3.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.
- checksums.yaml +4 -4
- data/lib/generators/meta_tags/{config/config_generator.rb → install/install_generator.rb} +3 -8
- data/lib/generators/meta_tags/{config → install}/templates/initializer.rb +1 -4
- data/lib/meta_tags.rb +13 -2
- data/lib/meta_tags/controller.rb +9 -108
- data/lib/meta_tags/engine.rb +8 -8
- data/lib/meta_tags/meta_taggable.rb +7 -1
- data/lib/meta_tags/meta_taggable_macro.rb +8 -4
- data/lib/meta_tags/renderer.rb +69 -0
- data/lib/meta_tags/store.rb +48 -0
- data/lib/meta_tags/tags.rb +25 -0
- data/lib/meta_tags/tags/base.rb +7 -19
- data/lib/meta_tags/tags/description.rb +2 -2
- data/lib/meta_tags/tags/image.rb +2 -2
- data/lib/meta_tags/tags/keywords.rb +2 -2
- data/lib/meta_tags/tags/title.rb +2 -2
- data/lib/meta_tags/tags/url.rb +2 -2
- data/lib/meta_tags/vendors.rb +13 -0
- data/lib/meta_tags/vendors/base.rb +21 -0
- data/lib/meta_tags/vendors/open_graph.rb +19 -0
- data/lib/meta_tags/vendors/twitter.rb +19 -0
- data/lib/meta_tags/version.rb +1 -1
- data/lib/meta_tags/view_helpers.rb +7 -0
- metadata +18 -10
- data/lib/meta_tags/container.rb +0 -67
- data/lib/meta_tags/page_data_helper.rb +0 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 09a5a32f00942761acacbede938e26c47a3e1ccf
|
4
|
+
data.tar.gz: 85cd2cc73a51304adaf9cc9b9a5454643a3903db
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a4f64085f847531a73a741a278b7ae4ceb5dcedad58e1bec53f468a51fce5ec9c57dab0fb82b9ed72a4ba7a2940c5c52ea89809e9bed515abbe4e2bc6ce408aa
|
7
|
+
data.tar.gz: 060ac92075fe6d8885c79060d3b8d1acd175be1b4667fbe6ca22564825b26135f07479a7a9febbee1a24e6cd35b0e5d181378a15ce2b85a1b8f169a84f274cbb
|
@@ -1,17 +1,12 @@
|
|
1
1
|
module MetaTags
|
2
|
-
class
|
2
|
+
class InstallGenerator < Rails::Generators::Base
|
3
3
|
# Copied files come from templates folder
|
4
4
|
source_root File.expand_path('../templates', __FILE__)
|
5
5
|
|
6
6
|
# Generator desc
|
7
|
-
desc "Meta-tags
|
8
|
-
|
9
|
-
def welcome
|
10
|
-
say "Configuring Meta-tags dependencies and files !"
|
11
|
-
end
|
7
|
+
desc "Meta-tags install generator"
|
12
8
|
|
13
9
|
def copy_initializer_file
|
14
|
-
say "Installing default initializer template"
|
15
10
|
copy_file "initializer.rb", "config/initializers/meta_tags.rb"
|
16
11
|
end
|
17
12
|
|
@@ -19,4 +14,4 @@ module MetaTags
|
|
19
14
|
rake "meta_tags_railtie:install:migrations"
|
20
15
|
end
|
21
16
|
end
|
22
|
-
end
|
17
|
+
end
|
@@ -1,7 +1,4 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
MetaTags.config do |config|
|
4
|
-
|
5
2
|
# Default title methods to be checked for title
|
6
3
|
#
|
7
4
|
# config.title_methods = %w(title name)
|
@@ -22,4 +19,4 @@ MetaTags.config do |config|
|
|
22
19
|
# Defaults to true
|
23
20
|
#
|
24
21
|
# config.keep_default_title_present = false
|
25
|
-
end
|
22
|
+
end
|
data/lib/meta_tags.rb
CHANGED
@@ -1,6 +1,17 @@
|
|
1
1
|
require "meta_tags/engine"
|
2
2
|
|
3
3
|
module MetaTags
|
4
|
+
extend ActiveSupport::Autoload
|
5
|
+
|
6
|
+
autoload :Controller
|
7
|
+
autoload :MetaTaggable
|
8
|
+
autoload :MetaTaggableMacro
|
9
|
+
autoload :Renderer
|
10
|
+
autoload :Store
|
11
|
+
autoload :Tags
|
12
|
+
autoload :Vendors
|
13
|
+
autoload :ViewHelpers
|
14
|
+
|
4
15
|
mattr_accessor :title_methods
|
5
16
|
@@title_methods = %w(title name)
|
6
17
|
|
@@ -10,8 +21,8 @@ module MetaTags
|
|
10
21
|
mattr_accessor :image_methods
|
11
22
|
@@image_methods = %w(image picture avatar)
|
12
23
|
|
13
|
-
mattr_accessor :
|
14
|
-
@@
|
24
|
+
mattr_accessor :defaults
|
25
|
+
@@defaults = nil
|
15
26
|
|
16
27
|
class << self
|
17
28
|
def config
|
data/lib/meta_tags/controller.rb
CHANGED
@@ -1,130 +1,31 @@
|
|
1
1
|
module MetaTags
|
2
2
|
module Controller
|
3
3
|
extend ActiveSupport::Concern
|
4
|
-
include PageDataHelper
|
5
|
-
|
6
|
-
module ClassMethods
|
7
|
-
attr_accessor :meta_tags, :model_name, :modifier_block
|
8
|
-
|
9
|
-
def meta_tags_defaults(options)
|
10
|
-
@meta_tags = Container.new(options)
|
11
|
-
end
|
12
|
-
|
13
|
-
def meta_tags_from(model_name = nil, &block)
|
14
|
-
@model_name = model_name && model_name.to_s
|
15
|
-
@modifier_block = block_given? ? block : nil
|
16
|
-
end
|
17
|
-
end
|
18
4
|
|
19
5
|
included do
|
20
|
-
helper_method :
|
21
|
-
:meta_tags_data
|
22
|
-
|
23
|
-
after_filter do
|
24
|
-
meta_tags_container.reset_changed_status if meta_tags_container
|
25
|
-
end
|
6
|
+
helper_method :meta_tags_store
|
26
7
|
end
|
27
8
|
|
28
|
-
|
29
|
-
|
30
|
-
def meta_tags_container
|
31
|
-
@_meta_tags_container ||= ::ApplicationController.meta_tags.dup
|
9
|
+
def meta_tags_store
|
10
|
+
@meta_tags_store ||= MetaTags::Store.new(self)
|
32
11
|
end
|
33
12
|
|
34
|
-
|
35
|
-
process_meta_tags
|
36
|
-
meta_tags_container
|
37
|
-
end
|
13
|
+
protected
|
38
14
|
|
39
15
|
def meta_tags_for(identifier)
|
40
16
|
if identifier.kind_of?(ActiveRecord::Base)
|
41
17
|
@instance = identifier
|
42
18
|
elsif (list = MetaTags::List.where(identifier: identifier.to_s).first)
|
43
|
-
|
44
|
-
if (value = list.send(:"meta_#{
|
45
|
-
|
19
|
+
[:title, :description, :keywords].each do |tag_name|
|
20
|
+
if (value = list.send(:"meta_#{ tag_name }").presence)
|
21
|
+
set_meta_tag(tag_name, value)
|
46
22
|
end
|
47
23
|
end
|
48
24
|
end
|
49
25
|
end
|
50
26
|
|
51
|
-
def
|
52
|
-
|
53
|
-
charset = options[:encoding] rescue 'utf-8'
|
54
|
-
|
55
|
-
data = meta_tags_data
|
56
|
-
|
57
|
-
# Required meta tags
|
58
|
-
markup = <<-HTML
|
59
|
-
<meta charset="#{ charset }">
|
60
|
-
<title>#{ data.title }</title>
|
61
|
-
HTML
|
62
|
-
|
63
|
-
if data.keywords.presence
|
64
|
-
markup << "<meta name=\"keywords\" content=\"#{ data.keywords }\">"
|
65
|
-
end
|
66
|
-
|
67
|
-
# Default meta tags
|
68
|
-
markup << markup_from_provider(:default)
|
69
|
-
|
70
|
-
# Meta tags by provider
|
71
|
-
providers.each do |provider|
|
72
|
-
str = markup_from_provider provider
|
73
|
-
|
74
|
-
# Prevents same meta tags added twice
|
75
|
-
markup << str if !markup.include?(str)
|
76
|
-
end
|
77
|
-
|
78
|
-
markup.html_safe
|
79
|
-
end
|
80
|
-
|
81
|
-
def markup_from_provider(provider = :default)
|
82
|
-
tags = case provider.to_sym
|
83
|
-
when :open_graph
|
84
|
-
{
|
85
|
-
title: "property=\"og:title\"",
|
86
|
-
description: "property=\"og:description\"",
|
87
|
-
image: "property=\"og:image\"",
|
88
|
-
type: "property=\"og:type\"",
|
89
|
-
url: "property=\"og:url\"",
|
90
|
-
site_name: "property=\"og:site_name\""
|
91
|
-
}
|
92
|
-
when :twitter
|
93
|
-
{
|
94
|
-
title: "name=\"twitter:title\"",
|
95
|
-
description: "name=\"twitter:description\"",
|
96
|
-
image: "name=\"twitter:image\"",
|
97
|
-
url: "name=\"twitter:url\"",
|
98
|
-
site: "name=\"twitter:site\"",
|
99
|
-
card: "name=\"twitter:card\""
|
100
|
-
}
|
101
|
-
else
|
102
|
-
{
|
103
|
-
description: "name=\"description\"",
|
104
|
-
}
|
105
|
-
end
|
106
|
-
|
107
|
-
tags.each_with_object("") do |(key, property_string), buffer|
|
108
|
-
if (content = meta_tags_container.send(key)).presence
|
109
|
-
buffer << "<meta #{ property_string } content=\"#{ content }\">\n"
|
110
|
-
end
|
111
|
-
end
|
112
|
-
end
|
113
|
-
|
114
|
-
def process_meta_tags
|
115
|
-
Container::TAGS_LIST.each do |label|
|
116
|
-
next if meta_tags_container.send(:"#{ label }_changed?")
|
117
|
-
|
118
|
-
if (data = process_meta_tag(label))
|
119
|
-
set_meta_tag(label, data)
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
def set_meta_tag(key, value, options = {})
|
125
|
-
if value.presence && !options[:force]
|
126
|
-
meta_tags_container.send("#{ key }=", value)
|
127
|
-
end
|
27
|
+
def set_meta_tag(tag_name, value)
|
28
|
+
meta_tags_store.send(:"#{ tag_name }=", value)
|
128
29
|
end
|
129
30
|
end
|
130
31
|
end
|
data/lib/meta_tags/engine.rb
CHANGED
@@ -1,21 +1,21 @@
|
|
1
|
-
require "meta_tags/container"
|
2
|
-
require "meta_tags/page_data_helper"
|
3
|
-
require "meta_tags/controller"
|
4
|
-
require "meta_tags/meta_taggable"
|
5
|
-
require "meta_tags/meta_taggable_macro"
|
6
|
-
|
7
1
|
module MetaTags
|
8
2
|
class Railtie < Rails::Engine
|
9
|
-
initializer "include controller
|
3
|
+
initializer "include controller helpers" do
|
10
4
|
ActiveSupport.on_load(:action_controller) do
|
11
5
|
include Controller
|
12
6
|
end
|
13
7
|
end
|
14
8
|
|
9
|
+
initializer "include view helpers" do
|
10
|
+
ActiveSupport.on_load(:action_view) do
|
11
|
+
include ViewHelpers
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
15
|
initializer "mix meta_taggable macro in Active Record" do
|
16
16
|
ActiveSupport.on_load(:active_record) do
|
17
17
|
include MetaTaggableMacro
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
21
|
-
end
|
21
|
+
end
|
@@ -2,14 +2,18 @@ module MetaTags
|
|
2
2
|
module MetaTaggableMacro
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
|
5
|
+
def meta_tagged?
|
6
|
+
false
|
7
|
+
end
|
8
|
+
|
5
9
|
module ClassMethods
|
6
10
|
def acts_as_meta_taggable
|
7
11
|
include MetaTaggable
|
8
12
|
end
|
9
|
-
end
|
10
13
|
|
11
|
-
|
12
|
-
|
14
|
+
def meta_taggable?
|
15
|
+
false
|
16
|
+
end
|
13
17
|
end
|
14
18
|
end
|
15
|
-
end
|
19
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module MetaTags
|
2
|
+
class Renderer
|
3
|
+
LINE_SEPARATOR = "\n"
|
4
|
+
|
5
|
+
attr_reader :template, :vendors
|
6
|
+
|
7
|
+
delegate :content_tag, :tag, to: :template
|
8
|
+
|
9
|
+
def initialize(template, vendors: nil)
|
10
|
+
@template = template
|
11
|
+
@vendors = vendors
|
12
|
+
end
|
13
|
+
|
14
|
+
def render
|
15
|
+
[
|
16
|
+
charset_tag,
|
17
|
+
title_tag,
|
18
|
+
description_tag,
|
19
|
+
keywords_tag,
|
20
|
+
vendor_tags
|
21
|
+
].compact.join(LINE_SEPARATOR).html_safe
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def title_tag
|
27
|
+
if (title = meta_tags.title).present?
|
28
|
+
content_tag(:title, title)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def charset_tag
|
33
|
+
tag(:meta, charset: meta_tags.charset)
|
34
|
+
end
|
35
|
+
|
36
|
+
def description_tag
|
37
|
+
if (description = meta_tags.description).present?
|
38
|
+
tag(:meta, name: 'description', value: description)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def keywords_tag
|
43
|
+
if (keywords = meta_tags.keywords).present?
|
44
|
+
tag(:meta, name: 'keywords', value: keywords)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def vendor_tags
|
49
|
+
return unless vendors
|
50
|
+
|
51
|
+
vendor_tags = vendors.each_with_object([]) do |vendor_name, tags|
|
52
|
+
vendor_class = MetaTags::Vendors.for(vendor_name)
|
53
|
+
vendor = vendor_class.new(template)
|
54
|
+
|
55
|
+
vendor.tags.each do |tag_name|
|
56
|
+
if (value = meta_tags.send(tag_name)).present?
|
57
|
+
tags << vendor.render(tag_name, value)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
vendor_tags.join(LINE_SEPARATOR)
|
63
|
+
end
|
64
|
+
|
65
|
+
def meta_tags
|
66
|
+
@meta_tags ||= template.controller.meta_tags_store
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module MetaTags
|
2
|
+
class Store
|
3
|
+
attr_reader :controller, :defaults
|
4
|
+
|
5
|
+
TAGS = :title, :description, :image, :url, :site_name, :keywords, :type,
|
6
|
+
:site, :card, :charset
|
7
|
+
|
8
|
+
attr_writer *TAGS
|
9
|
+
|
10
|
+
def initialize(controller)
|
11
|
+
@controller = controller
|
12
|
+
|
13
|
+
@defaults = if MetaTags.defaults
|
14
|
+
controller.instance_exec(&MetaTags.defaults)
|
15
|
+
else
|
16
|
+
{}
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def charset
|
21
|
+
@charset ||= 'utf-8'
|
22
|
+
end
|
23
|
+
|
24
|
+
TAGS.each do |tag_name|
|
25
|
+
define_method(tag_name) do
|
26
|
+
fetch_value_for(tag_name)
|
27
|
+
end unless method_defined?(tag_name)
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def fetch_value_for(tag_name)
|
33
|
+
ivar_name = :"@#{ tag_name }"
|
34
|
+
|
35
|
+
if (value = instance_variable_get(ivar_name)).present?
|
36
|
+
value
|
37
|
+
else
|
38
|
+
value = if (processor = MetaTags::Tags[tag_name])
|
39
|
+
processor.new(controller).value
|
40
|
+
end
|
41
|
+
|
42
|
+
value = defaults[tag_name] unless value.present?
|
43
|
+
|
44
|
+
instance_variable_set(ivar_name, value) if value
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module MetaTags
|
2
|
+
module Tags
|
3
|
+
extend ActiveSupport::Autoload
|
4
|
+
|
5
|
+
autoload :Base
|
6
|
+
autoload :Title
|
7
|
+
autoload :Description
|
8
|
+
autoload :Keywords
|
9
|
+
autoload :Image
|
10
|
+
autoload :Url
|
11
|
+
|
12
|
+
def self.[](tag_name)
|
13
|
+
processors[tag_name]
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def self.processors
|
19
|
+
@processors ||= [:title, :description, :keywords, :image, :url].reduce({}) do |hash, tag|
|
20
|
+
hash[tag] = MetaTags::Tags.const_get(tag.to_s.camelize)
|
21
|
+
hash
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/meta_tags/tags/base.rb
CHANGED
@@ -3,7 +3,7 @@ module MetaTags
|
|
3
3
|
class Base
|
4
4
|
attr_accessor :controller
|
5
5
|
|
6
|
-
def initialize
|
6
|
+
def initialize(controller)
|
7
7
|
@controller = controller
|
8
8
|
end
|
9
9
|
|
@@ -13,12 +13,11 @@ module MetaTags
|
|
13
13
|
controller.params.key?(:id)
|
14
14
|
end
|
15
15
|
|
16
|
-
def action_i18n
|
17
|
-
|
18
|
-
I18n.t(action_key(label), options).presence
|
16
|
+
def action_i18n(label)
|
17
|
+
I18n.t(action_key(label), default: '').presence
|
19
18
|
end
|
20
19
|
|
21
|
-
def action_key
|
20
|
+
def action_key(label)
|
22
21
|
key = %w(meta_tags controller)
|
23
22
|
key << controller.params[:controller]
|
24
23
|
key << controller.params[:action]
|
@@ -26,24 +25,13 @@ module MetaTags
|
|
26
25
|
key.join(".")
|
27
26
|
end
|
28
27
|
|
28
|
+
# TODO : Define if we'll still support instance meta tags and refactor
|
29
|
+
# accordingly
|
29
30
|
def instance
|
30
|
-
return controller.instance if controller.instance
|
31
|
-
|
32
|
-
@instance ||= if model_name
|
33
|
-
controller.instance_variable_get(:"@#{ model_name }")
|
34
|
-
end
|
35
31
|
end
|
36
32
|
|
37
33
|
def model_name
|
38
|
-
controller.class.
|
39
|
-
end
|
40
|
-
|
41
|
-
def modifier_options
|
42
|
-
@modifier_options ||= if controller.class.modifier_block
|
43
|
-
instance_eval(&controller.class.modifier_block)
|
44
|
-
else
|
45
|
-
{}
|
46
|
-
end
|
34
|
+
@model_name ||= controller.class.name.gsub(/Controller$/, '').singularize.underscore
|
47
35
|
end
|
48
36
|
end
|
49
37
|
end
|
data/lib/meta_tags/tags/image.rb
CHANGED
data/lib/meta_tags/tags/title.rb
CHANGED
data/lib/meta_tags/tags/url.rb
CHANGED
@@ -0,0 +1,21 @@
|
|
1
|
+
module MetaTags
|
2
|
+
module Vendors
|
3
|
+
class Base
|
4
|
+
attr_reader :template
|
5
|
+
|
6
|
+
def initialize(template)
|
7
|
+
@template = template
|
8
|
+
end
|
9
|
+
|
10
|
+
def render(key, value)
|
11
|
+
tag(:meta, key_name => attribute_name_for(key), value: value)
|
12
|
+
end
|
13
|
+
|
14
|
+
protected
|
15
|
+
|
16
|
+
def attribute_name_for(key)
|
17
|
+
[namespace, key].join(':')
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/meta_tags/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: meta_tags
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
- Valentin Ballestrino
|
7
|
+
- Valentin Ballestrino
|
8
|
+
- Damien Corticchiato
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2015-
|
12
|
+
date: 2015-06-01 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: sanitize
|
@@ -52,7 +53,8 @@ dependencies:
|
|
52
53
|
- - ">="
|
53
54
|
- !ruby/object:Gem::Version
|
54
55
|
version: '0'
|
55
|
-
description:
|
56
|
+
description: HTML meta tags management for Rails with support for Facebook's OpenGraph
|
57
|
+
tags and Twitter cards
|
56
58
|
email:
|
57
59
|
- vala@glyph.fr
|
58
60
|
executables: []
|
@@ -64,22 +66,28 @@ files:
|
|
64
66
|
- Rakefile
|
65
67
|
- app/models/meta_tags/list.rb
|
66
68
|
- db/migrate/20140114154410_create_meta_tags_list.rb
|
67
|
-
- lib/generators/meta_tags/
|
68
|
-
- lib/generators/meta_tags/
|
69
|
+
- lib/generators/meta_tags/install/install_generator.rb
|
70
|
+
- lib/generators/meta_tags/install/templates/initializer.rb
|
69
71
|
- lib/meta_tags.rb
|
70
|
-
- lib/meta_tags/container.rb
|
71
72
|
- lib/meta_tags/controller.rb
|
72
73
|
- lib/meta_tags/engine.rb
|
73
74
|
- lib/meta_tags/meta_taggable.rb
|
74
75
|
- lib/meta_tags/meta_taggable_macro.rb
|
75
|
-
- lib/meta_tags/
|
76
|
+
- lib/meta_tags/renderer.rb
|
77
|
+
- lib/meta_tags/store.rb
|
78
|
+
- lib/meta_tags/tags.rb
|
76
79
|
- lib/meta_tags/tags/base.rb
|
77
80
|
- lib/meta_tags/tags/description.rb
|
78
81
|
- lib/meta_tags/tags/image.rb
|
79
82
|
- lib/meta_tags/tags/keywords.rb
|
80
83
|
- lib/meta_tags/tags/title.rb
|
81
84
|
- lib/meta_tags/tags/url.rb
|
85
|
+
- lib/meta_tags/vendors.rb
|
86
|
+
- lib/meta_tags/vendors/base.rb
|
87
|
+
- lib/meta_tags/vendors/open_graph.rb
|
88
|
+
- lib/meta_tags/vendors/twitter.rb
|
82
89
|
- lib/meta_tags/version.rb
|
90
|
+
- lib/meta_tags/view_helpers.rb
|
83
91
|
- lib/tasks/meta_tags_tasks.rake
|
84
92
|
- test/dummy/README.rdoc
|
85
93
|
- test/dummy/Rakefile
|
@@ -155,7 +163,7 @@ files:
|
|
155
163
|
- test/dummy/tmp/cache/assets/E10/A50/sprockets%2F3ceec61ba671c1fc8fec279989fb9d1d
|
156
164
|
- test/meta_tags_test.rb
|
157
165
|
- test/test_helper.rb
|
158
|
-
homepage:
|
166
|
+
homepage: https://github.com/glyph-fr/meta_tags
|
159
167
|
licenses: []
|
160
168
|
metadata: {}
|
161
169
|
post_install_message:
|
@@ -177,7 +185,7 @@ rubyforge_project:
|
|
177
185
|
rubygems_version: 2.4.4
|
178
186
|
signing_key:
|
179
187
|
specification_version: 4
|
180
|
-
summary:
|
188
|
+
summary: HTML meta tags management for Rails
|
181
189
|
test_files:
|
182
190
|
- test/dummy/app/assets/images/illustration.jpg
|
183
191
|
- test/dummy/app/assets/javascripts/application.js
|
data/lib/meta_tags/container.rb
DELETED
@@ -1,67 +0,0 @@
|
|
1
|
-
require "sanitize"
|
2
|
-
|
3
|
-
module MetaTags
|
4
|
-
class Container
|
5
|
-
attr_accessor :default_title,
|
6
|
-
:default_description,
|
7
|
-
:default_image,
|
8
|
-
:default_url,
|
9
|
-
:default_site_name,
|
10
|
-
:default_keywords,
|
11
|
-
:default_type,
|
12
|
-
:default_site,
|
13
|
-
:default_card,
|
14
|
-
:title_changed,
|
15
|
-
:description_changed,
|
16
|
-
:image_changed,
|
17
|
-
:url_changed,
|
18
|
-
:site_name_changed,
|
19
|
-
:keywords_changed,
|
20
|
-
:type_changed,
|
21
|
-
:site_changed,
|
22
|
-
:card_changed
|
23
|
-
|
24
|
-
TAGS_LIST = %w(
|
25
|
-
title description image url site_name keywords type site card
|
26
|
-
)
|
27
|
-
|
28
|
-
TAGS_LIST.each do |label|
|
29
|
-
define_method(label) do
|
30
|
-
Sanitize.clean(
|
31
|
-
instance_variable_get(:"@#{ label }") || send(:"default_#{ label }")
|
32
|
-
)
|
33
|
-
end
|
34
|
-
|
35
|
-
define_method(:"#{ label }=") do |value|
|
36
|
-
instance_variable_set(:"@#{ label }_changed", true)
|
37
|
-
instance_variable_set(:"@#{ label }", value)
|
38
|
-
end
|
39
|
-
|
40
|
-
define_method(:"#{ label }_changed?") do
|
41
|
-
!!instance_variable_get(:"@#{ label }_changed")
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
def initialize options
|
46
|
-
options.each do |label, value|
|
47
|
-
self.send(:"default_#{ label }=", value)
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
def title=(value)
|
52
|
-
@title_changed = true
|
53
|
-
if default_title == value || !MetaTags.keep_default_title_present
|
54
|
-
@title = value
|
55
|
-
elsif MetaTags.keep_default_title_present
|
56
|
-
@title = "#{ value } - #{ default_title }"
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
|
61
|
-
def reset_changed_status
|
62
|
-
TAGS_LIST.each do |label|
|
63
|
-
self.send(:"#{ label }_changed=", false)
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
require "meta_tags/tags/base"
|
2
|
-
require "meta_tags/tags/title"
|
3
|
-
require "meta_tags/tags/description"
|
4
|
-
require "meta_tags/tags/keywords"
|
5
|
-
require "meta_tags/tags/image"
|
6
|
-
require "meta_tags/tags/url"
|
7
|
-
|
8
|
-
module MetaTags
|
9
|
-
module PageDataHelper
|
10
|
-
def process_meta_tag tag
|
11
|
-
if (processor = processors[tag])
|
12
|
-
processor.new(self).process!
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def processors
|
17
|
-
@processors ||= %w(title description image keywords url).reduce({}) do |hash, tag|
|
18
|
-
hash[tag] = MetaTags::Tags.const_get(tag.camelize)
|
19
|
-
hash
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|