seo_sensei 0.0.5 → 0.0.6

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
  SHA256:
3
- metadata.gz: f665c41ec11676e7fd1f59a67d2995e33cc1c4255cfe6702707b92bd3aed33a3
4
- data.tar.gz: 4c50946086ef17a9f17d78f7e5703a21f377e0ae6a6f976014529920915a55e7
3
+ metadata.gz: 039b4d7451379832e9b2dde51b174b8161cea974f920b0dd04052721c84c6431
4
+ data.tar.gz: 40e9ed89593176b74804b78efc7faef877b5939f178d94dd4af8a7759c081f21
5
5
  SHA512:
6
- metadata.gz: 0b8f67b65c201ab05b35a482a475b00edeff8e57139b24cb5ac43c7094c34eb4efcef740fd86e1843a0c0c9b51f6a6874e6fd9dfdcb3ff1c177fec2953914cc4
7
- data.tar.gz: b0a1f0602b49cd35ec24e2ee011fd7ef78bcef11d341bbb4f4f829726308d5ae7e19bdc6fe9e4316ee83b81eeae31d4614697da178fe0e7fbe5c8bd8318d3ab3
6
+ metadata.gz: adeb0f223ca94b05663a02883c9f7b29086de23acfcb817f53adb2e994d3a20ff24cf7bb5a1d22164f32bdef5990354f3a416d5c9ef8b42747cca1f146654f4d
7
+ data.tar.gz: b37e1f5be403af45fa7d72cc364774f56712a40a8aed9357e5009efc098171d7730a9d50717cca482146154d012b864879e0c0aa0c2804dbcdbbeb0ea59cdced
@@ -4,12 +4,12 @@ module SeoSensei
4
4
  module Attributes
5
5
  module Image
6
6
  def self.call(resource)
7
- return {} unless resource.respond_to?(:use_seo_image?) && resource.use_seo_image?
7
+ return {} unless resource.use_image?
8
8
 
9
9
  {
10
10
  image: resource.seo_image_url,
11
- "image:width" => resource.seo_image_dimensions[:width].to_s,
12
- "image:height" => resource.seo_image_dimensions[:height].to_s
11
+ "image:width" => resource.seo_image_width,
12
+ "image:height" => resource.seo_image_height
13
13
  }
14
14
  end
15
15
  end
@@ -3,18 +3,16 @@
3
3
  module SeoSensei
4
4
  module Attributes
5
5
  module Twitter
6
- def self.call(seo_translation, resource, url)
7
- image_attributes = SeoSensei::Attributes::Image.call(resource)
8
-
6
+ def self.call(resource)
9
7
  base_attributes = {
10
- title: seo_translation['title'],
11
- description: seo_translation['description'],
12
- url: url
8
+ title: resource.title,
9
+ description: resource.description,
10
+ url: resource.url
13
11
  }
14
12
 
15
- unless image_attributes[:image].nil?
13
+ if resource.use_image?
16
14
  base_attributes.merge!(
17
- image: image_attributes[:image],
15
+ image: resource.seo_image_url,
18
16
  card: 'summary_large_image'
19
17
  )
20
18
  end
@@ -10,7 +10,11 @@ module SeoSensei
10
10
  before_action(options) do
11
11
  resource_name = options.delete(:for) || controller_name
12
12
  if (translated_seo = ::SeoSensei::Lookup.call(controller_name: resource_name, action_name: action_name))
13
- set_meta_tags(translated_seo)
13
+ attributes_service = ::SeoSensei::SeoAttributes.new(
14
+ translated_seo, nil, url_for(only_path: false)
15
+ )
16
+
17
+ set_meta_tags(attributes_service.call)
14
18
  end
15
19
  end
16
20
  end
@@ -24,15 +28,11 @@ module SeoSensei
24
28
 
25
29
  def seo_tags_with(resource)
26
30
  if (translated_seo = ::SeoSensei::Lookup.call(controller_name: controller_name, action_name: action_name, resource: resource))
27
- og_attributes = ::SeoSensei::Attributes::Og.call(
28
- translated_seo, resource, url_for(:only_path => false)
29
- )
30
-
31
- twitter_attributes = ::SeoSensei::Attributes::Twitter.call(
32
- translated_seo, resource, url_for(:only_path => false)
31
+ attributes_service = ::SeoSensei::SeoAttributes.new(
32
+ translated_seo, resource, url_for(only_path: false)
33
33
  )
34
34
 
35
- set_meta_tags(translated_seo.merge(og_attributes).merge(twitter_attributes))
35
+ set_meta_tags(attributes_service.call)
36
36
  end
37
37
  end
38
38
  end
@@ -0,0 +1,67 @@
1
+ module SeoSensei
2
+ class Resource
3
+ def initialize(translation, obj, url)
4
+ @translation = translation
5
+ @obj = obj
6
+ @url = url
7
+ end
8
+
9
+ def url
10
+ @url
11
+ end
12
+
13
+ def title
14
+ @translation['title']
15
+ end
16
+
17
+ def description
18
+ @translation['description']
19
+ end
20
+
21
+ def keywords
22
+ @translation['keywords']
23
+ end
24
+
25
+ def use_image?
26
+ use_obj_image? || use_translation_image?
27
+ end
28
+
29
+ def seo_image_url
30
+ if use_obj_image?
31
+ @obj.seo_image_url
32
+ elsif use_translation_image?
33
+ @translation['seo_image_url']
34
+ end
35
+ end
36
+
37
+ def seo_image_width
38
+ if use_obj_image?
39
+ @obj.seo_image_dimensions[:width].to_s
40
+ elsif use_translation_image?
41
+ @translation['seo_image_width']
42
+ end
43
+ end
44
+
45
+ def seo_image_height
46
+ if use_obj_image?
47
+ @obj.seo_image_dimensions[:height].to_s
48
+ elsif use_translation_image?
49
+ @translation['seo_image_height']
50
+ end
51
+ end
52
+
53
+ private
54
+
55
+ def use_obj_image?
56
+ !@obj.nil? &&
57
+ @obj.respond_to?(:use_seo_image?) &&
58
+ @obj.use_seo_image?
59
+ end
60
+
61
+ def use_translation_image?
62
+ !@translation['seo_image_url'].nil? &&
63
+ !@translation['seo_image_width'].nil? &&
64
+ !@translation['seo_image_height'].nil?
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,30 @@
1
+ module SeoSensei
2
+ class SeoAttributes
3
+ def initialize(translation, obj, url)
4
+ @translation = translation
5
+ @obj = obj
6
+ @url = url
7
+ end
8
+
9
+ def call
10
+ attributes = {}
11
+
12
+ image_attributes = SeoSensei::Attributes::Image.call(resource)
13
+ twitter_attributes = SeoSensei::Attributes::Twitter.call(resource)
14
+
15
+ {
16
+ og: {
17
+ title: resource.title,
18
+ description: resource.description,
19
+ url: resource.url
20
+ }.merge(image_attributes)
21
+ }.merge(twitter_attributes)
22
+ end
23
+
24
+ private
25
+
26
+ def resource
27
+ @resource ||= SeoSensei::Resource.new(@translation, @obj, @url)
28
+ end
29
+ end
30
+ end
@@ -6,7 +6,7 @@ module SeoSensei
6
6
  #
7
7
  # @return [String]
8
8
  def to_s
9
- "0.0.5"
9
+ "0.0.6"
10
10
  end
11
11
  end
12
12
  end
data/lib/seo_sensei.rb CHANGED
@@ -1,8 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'meta-tags'
4
+ require 'seo_sensei/seo_attributes'
5
+ require 'seo_sensei/resource'
4
6
  require 'seo_sensei/attributes/twitter'
5
- require 'seo_sensei/attributes/og'
6
7
  require 'seo_sensei/attributes/image'
7
8
  require 'seo_sensei/lookup'
8
9
  require 'seo_sensei/controllers/helpers'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seo_sensei
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paweł Dąbrowski
@@ -84,7 +84,6 @@ files:
84
84
  - lib/generators/templates/seo_sensei.rb
85
85
  - lib/seo_sensei.rb
86
86
  - lib/seo_sensei/attributes/image.rb
87
- - lib/seo_sensei/attributes/og.rb
88
87
  - lib/seo_sensei/attributes/twitter.rb
89
88
  - lib/seo_sensei/controllers/helpers.rb
90
89
  - lib/seo_sensei/lookup.rb
@@ -94,6 +93,8 @@ files:
94
93
  - lib/seo_sensei/lookups/translation_attributes.rb
95
94
  - lib/seo_sensei/models/helpers.rb
96
95
  - lib/seo_sensei/models/seo_tag.rb
96
+ - lib/seo_sensei/resource.rb
97
+ - lib/seo_sensei/seo_attributes.rb
97
98
  - lib/seo_sensei/version.rb
98
99
  homepage: http://github.com/rubyhero/seo_sensei
99
100
  licenses:
@@ -1,19 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module SeoSensei
4
- module Attributes
5
- module Og
6
- def self.call(seo_translation, resource, url)
7
- image_attributes = SeoSensei::Attributes::Image.call(resource)
8
-
9
- base_attributes = {
10
- title: seo_translation['title'],
11
- description: seo_translation['description'],
12
- url: url
13
- }
14
-
15
- { og: base_attributes.merge(image_attributes) }
16
- end
17
- end
18
- end
19
- end