sharing_tags 0.0.9 → 0.0.10

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.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +94 -0
  3. data/.travis.yml +1 -0
  4. data/Gemfile +2 -1
  5. data/Guardfile +21 -11
  6. data/README.md +8 -1
  7. data/Rakefile +16 -0
  8. data/Todo.md +4 -1
  9. data/app/assets/images/sharing_tags/icons/line.svg +9 -9
  10. data/app/assets/javascripts/sharing_tags.js +10 -0
  11. data/app/assets/javascripts/sharing_tags/init.js.coffee.erb +5 -4
  12. data/app/assets/javascripts/sharing_tags/links.js.coffee +9 -7
  13. data/app/assets/javascripts/sharing_tags/share.js.coffee +82 -62
  14. data/app/assets/javascripts/sharing_tags/share/callback.js.coffee +14 -0
  15. data/app/assets/javascripts/sharing_tags/share/facebook.js.coffee +82 -0
  16. data/app/assets/stylesheets/sharing_tags/wave_animation.css.sass +33 -0
  17. data/app/views/sharing_tags/meta/_open_graphs.html.slim +1 -1
  18. data/app/views/sharing_tags/meta/_twitter_card.html.slim +12 -9
  19. data/circle.yml +9 -0
  20. data/lib/generators/sharing_tags/install/install_generator.rb +12 -14
  21. data/lib/generators/sharing_tags/install/templates/initializer.rb +3 -0
  22. data/lib/sharing_tags.rb +0 -5
  23. data/lib/sharing_tags/action_controller/filters.rb +13 -10
  24. data/lib/sharing_tags/action_controller/helpers.rb +11 -9
  25. data/lib/sharing_tags/action_view/asset_helper.rb +39 -35
  26. data/lib/sharing_tags/action_view/button_helper.rb +62 -53
  27. data/lib/sharing_tags/action_view/meta_helper.rb +11 -8
  28. data/lib/sharing_tags/config.rb +3 -4
  29. data/lib/sharing_tags/configuration.rb +17 -18
  30. data/lib/sharing_tags/context.rb +11 -14
  31. data/lib/sharing_tags/engine.rb +11 -0
  32. data/lib/sharing_tags/network.rb +64 -30
  33. data/lib/sharing_tags/network/facebook.rb +11 -8
  34. data/lib/sharing_tags/railtie.rb +6 -9
  35. data/lib/sharing_tags/version.rb +1 -1
  36. data/sharing_tags.gemspec +1 -0
  37. data/spec/controllers/main_controller_spec.rb +2 -2
  38. data/spec/dummy/app/helpers/application_helper.rb +1 -0
  39. data/spec/generators/install_generator_spec.rb +8 -6
  40. data/spec/helpers/asset_helper_spec.rb +3 -2
  41. data/spec/helpers/button_helper_spec.rb +70 -76
  42. data/spec/helpers/meta_tags_helper_spec.rb +1 -2
  43. data/spec/javascripts/fixtures/facebook.json +3 -1
  44. data/spec/javascripts/sharing_tags/share/{facebook_share_spec.coffee → facebook_spec.coffee} +73 -12
  45. data/spec/javascripts/sharing_tags/share/vkontakte_spec.coffee +29 -0
  46. data/spec/javascripts/sharing_tags/share_spec.coffee +193 -0
  47. data/spec/javascripts/sharing_tags/sharing_tags_spec.coffee +9 -14
  48. data/spec/models/configuration_spec.rb +12 -14
  49. data/spec/models/network_spec.rb +1 -4
  50. data/spec/models/running_in_context_spec.rb +19 -6
  51. data/spec/spec_helper.rb +1 -2
  52. data/spec/support/generator_support.rb +1 -3
  53. data/spec/teaspoon_env.rb +39 -39
  54. data/spec/views/meta_tags/facebook_meta_tags_erb_spec.rb +16 -17
  55. data/spec/views/meta_tags/meta_tags_erb_spec.rb +5 -7
  56. metadata +29 -13
  57. data/app/assets/javascripts/sharing_tags.js.coffee +0 -9
  58. data/app/assets/javascripts/sharing_tags/share/base.js.coffee +0 -38
  59. data/app/assets/javascripts/sharing_tags/share/facebook.coffee +0 -57
  60. data/app/assets/javascripts/sharing_tags/share/vkontakte.js.coffee +0 -13
  61. data/bin/rspec +0 -16
  62. data/spec/javascripts/sharing_tags/share/vkontakte_share_spec.coffee +0 -31
@@ -0,0 +1,14 @@
1
+ class @SharingTags.Share.Callback
2
+ constructor: (@share)->
3
+
4
+ before_sharing: (provider)=>
5
+ @trigger("start_share", url: @share.url, provider: provider)
6
+
7
+ after_sharing: ->
8
+ @trigger("shared")
9
+
10
+ before_open_popup: (open_url, popup_window)=>
11
+ @trigger("open_popup", url: open_url, popup_window: popup_window)
12
+
13
+ trigger: (trigger_name, params...)->
14
+ jQuery?(window).trigger("sharing_tags.#{trigger_name}", params)
@@ -0,0 +1,82 @@
1
+ class @SharingTags.FacebookShare extends @SharingTags.Share
2
+
3
+ # available providers: sharer, fb_ui, dialog
4
+ @default_provider: "fb_ui"
5
+
6
+ app_id: null
7
+ return_url: null
8
+ provider: null
9
+
10
+ constructor: ({@app_id, @return_url, @provider})->
11
+ @provider = @detect_provider() if !@provider || @provider == "auto"
12
+
13
+ # todo: throw error for invalid provider
14
+ @constructor.init() if @provider is 'fb_ui' and not FB?
15
+
16
+ super
17
+
18
+ @init: (locale="en_US")->
19
+ if not FB?
20
+ jQuery.ajax(
21
+ url: "//connect.facebook.net/#{locale}/all.js"
22
+ dataType: "script"
23
+ cache: true
24
+ )
25
+
26
+ share: (provider = @provider)->
27
+ @callback.before_sharing(provider)
28
+ @["_#{provider}"]()
29
+ @
30
+
31
+ _sharer: ->
32
+ @_assert_vars "url"
33
+ @open_popup("http://www.facebook.com/sharer.php", u: @url)
34
+
35
+ _fb_ui: =>
36
+ @_assert_vars "url", "app_id"
37
+ return @constructor.init().done(@_fb_ui) if not FB?
38
+
39
+ FB?.ui(method: 'share', href: @url, app_id: @app_id, (response)=>
40
+ @callback.after_sharing(response)
41
+ # if response && !response.error_code
42
+ # @_after_callback(response)
43
+ # else
44
+ # # another callback
45
+ )
46
+
47
+ _dialog: (display = 'page')->
48
+ @_assert_vars 'url', 'return_url'
49
+ @open_popup("http://www.facebook.com/dialog/share", href: @url, redirect_uri: @return_url, app_id: @app_id, display: display)
50
+
51
+ # @note: mobile chrome and android browsers after sharing redirect to created post on Facebook
52
+ # @note: iphone facebook browser: after sharing redirected to shared post
53
+ _stream_share: ->
54
+ @_assert_vars 'url'
55
+ FB.ui(
56
+ method: 'stream.share',
57
+ u: @url
58
+ (response) ->
59
+ console?.log response
60
+ )
61
+
62
+ # # @note: iphone facebook browser - doesn't show page after sharing
63
+ # _fb_ui_feed = ->
64
+ # FB.ui(
65
+ # method: 'feed',
66
+ # name: "Name"
67
+ # description: "Description"
68
+ # link: @url,
69
+ # caption: "Sample caption",
70
+ # actions: {name: 'sample name', link: 'sharing link'},
71
+ # (response)=>
72
+ # @_after_callback(response)
73
+ # )
74
+
75
+ detect_provider: ->
76
+ if @_user_agent().match('CriOS')
77
+ "sharer"
78
+ else if @app_id
79
+ if @return_url then "dialog"
80
+ else "fb_ui"
81
+ else
82
+ "sharer"
@@ -0,0 +1,33 @@
1
+ @mixin create_keyframes_animation($name, $left_percent, $center_percent, $right_precent)
2
+ +keyframes($name)
3
+ 0%
4
+ transform: scale(1)
5
+ #{$left_percent}%
6
+ transform: scale(1)
7
+ #{$center_percent}%
8
+ transform: scale(1.4)
9
+ #{$right_precent}%
10
+ transform: scale(1)
11
+ 100%
12
+ transform: scale(1)
13
+
14
+ @mixin keyframes($name)
15
+ @keyframes #{$name}
16
+ @content
17
+
18
+ @mixin add_animation_on_sharing_button($index, $speed)
19
+ .sharing_tags-buttons__item
20
+ &:nth-child(#{$index})
21
+ a
22
+ animation: animate_sharing_buttons_#{$index} #{$speed}s infinite
23
+
24
+ @mixin create_wave_animation_on_sharing_buttons($count_of_buttons, $speed:2)
25
+ $step: 100 / $count_of_buttons
26
+ $half_step: $step / 2
27
+ @for $i from 1 through $count_of_buttons
28
+ $right: $i*$step
29
+ $center: $right - $half_step
30
+ $left: $center - $half_step
31
+
32
+ +create_keyframes_animation('animate_sharing_buttons_#{$i}', $left, $center, $right)
33
+ +add_animation_on_sharing_button($i, $speed)
@@ -8,7 +8,7 @@
8
8
  meta property="og:image" content=meta.image
9
9
 
10
10
  - if meta.page_url
11
- meta property="og:url" content=meta.page_url
11
+ meta property="og:url" content=meta.page_url.html_safe
12
12
 
13
13
  /https://developers.facebook.com/docs/sharing/opengraph#types
14
14
  meta property="og:type" content="website"
@@ -1,20 +1,23 @@
1
- meta name="twitter:card" content="summary"
2
1
 
3
2
  - if meta.title
4
3
  meta name="twitter:title" content=meta.title
5
4
 
6
5
  - if meta.description
6
+ / Page description less than 200 characters
7
7
  meta name="twitter:description" content=meta.description
8
8
 
9
- /meta name="twitter:creator" content="@aviasales"
10
- /meta name="twitter:image:src" content=asset_url(sharing[:image])
9
+ - if meta.page_url
10
+ meta name="twitter:url" content=meta.page_url.html_safe
11
+
12
+ - if meta.image
13
+ /<-- Twitter Summary card images must be at least 120x120px -->
14
+ meta name="twitter:image" content=meta.image
15
+ meta name="twitter:card" content="summary_large_image"
16
+ - else
17
+ meta name="twitter:card" content="summary"
18
+
19
+
11
20
  /meta name="twitter:domain" content="www.aviasales.ru"
12
- /<meta name="twitter:card" content="summary">
13
21
  /<meta name="twitter:site" content="@publisher_handle">
14
- /<meta name="twitter:title" content="Page Title">
15
- /<meta name="twitter:description" content="Page description less than 200 characters">
16
22
  /<meta name="twitter:creator" content="@author_handle">
17
- /<-- Twitter Summary card images must be at least 120x120px -->
18
- /<meta name="twitter:image" content="http://www.example.com/image.jpg">
19
- /meta name="twitter:site" content="@aviasales"
20
23
 
@@ -0,0 +1,9 @@
1
+ machine:
2
+ ruby:
3
+ version: 2.2.0
4
+
5
+ test:
6
+ post:
7
+ - bundle exec teaspoon
8
+ - bundle exec rspec
9
+ - bundle exec rubocop
@@ -1,9 +1,9 @@
1
1
  require 'rails/generators'
2
2
 
3
+ # rubocop:disable Metrics/MethodLength
3
4
  module SharingTags
4
5
  module Generators
5
6
  class InstallGenerator < Rails::Generators::Base
6
-
7
7
  source_root File.expand_path('../templates', __FILE__)
8
8
 
9
9
  desc "Installs the SharingTags initializer into your application."
@@ -15,7 +15,7 @@ module SharingTags
15
15
  desc: "Copy links partial"
16
16
 
17
17
  def copy_initializer_file
18
- if File.exists?("config/initializers/sharing_tags.rb")
18
+ if File.exist?("config/initializers/sharing_tags.rb")
19
19
  say_skipped("create initializer sharing_tags.rb")
20
20
  else
21
21
  template 'initializer.rb', 'config/initializers/sharing_tags.rb'
@@ -26,7 +26,7 @@ module SharingTags
26
26
  source_file = "app/assets/javascripts/application.js"
27
27
  match_string = "sharing_tags"
28
28
 
29
- insert_into_file_if source_file, match_string, after: %r{\z} do
29
+ insert_into_file_if source_file, match_string, after: /\z/ do
30
30
  "\n//= require #{match_string}"
31
31
  end
32
32
  end
@@ -39,7 +39,7 @@ module SharingTags
39
39
  "*= require #{match_string}\n "
40
40
  end
41
41
  end
42
-
42
+
43
43
  def add_layout
44
44
  ## slim
45
45
  source_file = "app/views/layouts/application.html.slim"
@@ -64,7 +64,7 @@ module SharingTags
64
64
  "\n <%= #{buttons_tags} %>\n"
65
65
  end
66
66
 
67
- ## todo: haml
67
+ ## TODO: haml
68
68
  end
69
69
 
70
70
  def display_post_install
@@ -79,18 +79,16 @@ module SharingTags
79
79
 
80
80
  def insert_into_file_if(source_file, find_string, **insert_into_file_options, &insert_into_file_block)
81
81
  source_file_path = File.expand_path(source_file, destination_root)
82
+ return unless File.exist?(source_file_path)
82
83
 
83
- if File.exists? source_file_path
84
- source_content = File.binread(source_file_path)
85
- if not source_content.include? find_string
86
- insert_into_file source_file, insert_into_file_options, &insert_into_file_block
87
- else
88
- say_skipped("insert #{find_string} into #{source_file}")
89
- end
84
+ source_content = File.binread(source_file_path)
85
+ if !source_content.include?(find_string)
86
+ insert_into_file source_file, insert_into_file_options, &insert_into_file_block
90
87
  else
91
- # say_skipped("not found #{source_file}")
88
+ say_skipped("insert #{find_string} into #{source_file}")
92
89
  end
93
90
  end
94
91
  end
95
92
  end
96
- end
93
+ end
94
+ # rubocop:enable Metrics/MethodLength
@@ -17,8 +17,11 @@ SharingTags.configure do
17
17
  # app_id "123"
18
18
  # title "Facebook sharing title"
19
19
  # end
20
+ #
20
21
  # twitter do
21
22
  # title "Short title"
23
+ # description "Page description less than 200 characters"
24
+ # image "images must be at least 120x120px"
22
25
  # end
23
26
 
24
27
  # # for switch context call `sharing_tags_context(:user)` in controller action
@@ -2,16 +2,12 @@ require "slim-rails"
2
2
  require "role-rails"
3
3
 
4
4
  module SharingTags
5
-
6
- #extend ActiveSupport::Autoload
7
-
8
5
  autoload :VERSION, 'sharing_tags/version'
9
6
  autoload :Config, 'sharing_tags/config'
10
7
  autoload :Configuration, 'sharing_tags/configuration'
11
8
  autoload :Network, 'sharing_tags/network'
12
9
  autoload :Context, 'sharing_tags/context'
13
10
 
14
-
15
11
  module ActionView
16
12
  autoload :MetaHelper, 'sharing_tags/action_view/meta_helper'
17
13
  autoload :ButtonHelper, 'sharing_tags/action_view/button_helper'
@@ -33,7 +29,6 @@ module SharingTags
33
29
  @config ||= Configuration.new
34
30
  end
35
31
  module_function :config
36
-
37
32
  end
38
33
 
39
34
  require 'sharing_tags/railtie' if defined?(Rails::Railtie)
@@ -1,13 +1,16 @@
1
- module SharingTags::ActionController::Filters
2
- extend ActiveSupport::Concern
1
+ module SharingTags
2
+ module ActionController
3
+ module Filters
4
+ extend ActiveSupport::Concern
3
5
 
4
- included do
5
- append_before_filter :sharing_tags_clear_context
6
- end
6
+ included do
7
+ append_before_filter :sharing_tags_clear_context
8
+ end
7
9
 
8
- def sharing_tags_clear_context
9
- logger.debug "SharingTags: clear context #{SharingTags.config.current_context.name}!" if logger.debug?
10
- SharingTags.config.clear_context!
10
+ def sharing_tags_clear_context
11
+ logger.debug "SharingTags: clear context #{SharingTags.config.current_context.name}!" if logger.debug?
12
+ SharingTags.config.clear_context!
13
+ end
14
+ end
11
15
  end
12
-
13
- end
16
+ end
@@ -1,11 +1,13 @@
1
- module SharingTags::ActionController::Helpers
1
+ module SharingTags
2
+ module ActionController
3
+ module Helpers
4
+ def sharing_tags
5
+ SharingTags.config.within_context_params(view_context)
6
+ end
2
7
 
3
- def sharing_tags
4
- SharingTags.config.within_context_params(view_context)
8
+ def sharing_tags_context(name, *attrs)
9
+ SharingTags.config.switch_context(name, *attrs)
10
+ end
11
+ end
5
12
  end
6
-
7
- def sharing_tags_context(name, *attrs)
8
- SharingTags.config.switch_context(name, *attrs)
9
- end
10
-
11
- end
13
+ end
@@ -1,37 +1,41 @@
1
1
  require "non-stupid-digest-assets"
2
2
 
3
- module SharingTags::ActionView::AssetHelper
4
-
5
- def without_digest_asset_url(path, options = {})
6
- options.merge!(digested: false)
7
-
8
- add_image_to_non_digest_list(path)
9
- url_to_image(path, options)
10
- end
11
-
12
- # redefine method Sprockets::Rails::Helper
13
- # Computes asset path to public directory.
14
- #
15
- # Override this method for non digested assets
16
- #
17
- def compute_asset_path(path, options = {})
18
- digested = options.delete(:digested)
19
- digested = true if digested.nil?
20
-
21
- if digest_path = asset_digest_path(path, options)
22
- path = digest_path if digested && digest_assets
23
- path += "?body=1" if options[:debug]
24
- File.join(assets_prefix || "/", path)
25
- else
26
- super
27
- end
28
- end
29
-
30
- private
31
-
32
- def add_image_to_non_digest_list(asset_name)
33
- return if ::NonStupidDigestAssets.whitelist.include?(asset_name)
34
- ::NonStupidDigestAssets.whitelist += [ asset_name ]
35
- end
36
-
37
- end
3
+ # rubocop:disable Metrics/CyclomaticComplexity
4
+ module SharingTags
5
+ module ActionView
6
+ module AssetHelper
7
+ def without_digest_asset_url(path, options = {})
8
+ options.merge!(digested: false)
9
+
10
+ add_image_to_non_digest_list(path)
11
+ url_to_image(path, options)
12
+ end
13
+
14
+ # redefine method Sprockets::Rails::Helper
15
+ # Computes asset path to public directory.
16
+ #
17
+ # Override this method for non digested assets
18
+ #
19
+ def compute_asset_path(path, options = {})
20
+ digested = options.delete(:digested)
21
+ digested = true if digested.nil?
22
+
23
+ if (digest_path = asset_digest_path(path, options))
24
+ path = digest_path if digested && digest_assets
25
+ path += "?body=1" if options[:debug]
26
+ File.join(assets_prefix || "/", path)
27
+ else
28
+ super
29
+ end
30
+ end
31
+
32
+ private
33
+
34
+ def add_image_to_non_digest_list(asset_name)
35
+ return if ::NonStupidDigestAssets.whitelist.include?(asset_name)
36
+ ::NonStupidDigestAssets.whitelist += [asset_name]
37
+ end
38
+ end
39
+ end
40
+ end
41
+ # rubocop:enable Metrics/CyclomaticComplexity
@@ -1,71 +1,80 @@
1
- module SharingTags::ActionView::ButtonHelper
1
+ module SharingTags
2
+ module ActionView
3
+ module ButtonHelper
4
+ def sharing_tags_buttons(*networks, **options)
5
+ networks = SharingTags::Network.lists if networks.empty?
6
+
7
+ # switching context
8
+ if options[:context].present?
9
+ SharingTags.config.switch_context(*options[:context]) do
10
+ render template: "sharing_tags/buttons.html.slim", locals: {networks: networks, options: options}
11
+ end
12
+ else
13
+ render template: "sharing_tags/buttons.html.slim", locals: {networks: networks, options: options}
14
+ end
15
+ end
2
16
 
3
- def sharing_tags_buttons(*networks, **options)
4
- networks = SharingTags::Network.lists if networks.empty?
17
+ def link_to_facebook_share(name_or_options = nil, &block)
18
+ share_to name_or_options, :facebook, [:app_id, :provider], &block
19
+ end
5
20
 
6
- # switching context
7
- SharingTags.config.switch_context(*options[:context]) if options[:context].present?
21
+ def link_to_vkontakte_share(name_or_options = nil, &block)
22
+ share_to name_or_options, :vkontakte, [:title, :description, :image], &block
23
+ end
8
24
 
9
- render template: "sharing_tags/buttons.html.slim", locals: {networks: networks, options: options}
10
- end
25
+ def link_to_line_share(name_or_options = nil, &block)
26
+ share_to name_or_options, :line, [], &block
27
+ end
11
28
 
12
- def link_to_facebook_share(name_or_options = nil, &block)
13
- share_link_to name_or_options, :facebook, [:app_id], &block
14
- end
29
+ def link_to_google_share(name_or_options = nil, &block)
30
+ share_to name_or_options, :google, [], &block
31
+ end
15
32
 
16
- def link_to_vkontakte_share(name_or_options = nil, &block)
17
- share_link_to name_or_options, :vkontakte, [:title, :description, :image], &block
18
- end
33
+ def link_to_odnoklassniki_share(name_or_options = nil, &block)
34
+ share_to name_or_options, :odnoklassniki, [:title, :description], &block
35
+ end
19
36
 
20
- def link_to_line_share(name_or_options = nil, &block)
21
- share_link_to name_or_options, :line, [], &block
22
- end
37
+ def link_to_twitter_share(name_or_options = nil, &block)
38
+ share_to name_or_options, :twitter, [:title, :description], &block
39
+ end
23
40
 
24
- def link_to_google_share(name_or_options = nil, &block)
25
- share_link_to name_or_options, :google, [], &block
26
- end
41
+ def link_to_linkedin_share(name_or_options = nil, &block)
42
+ share_to name_or_options, :linkedin, [:title, :description], &block
43
+ end
27
44
 
28
- def link_to_odnoklassniki_share(name_or_options = nil, &block)
29
- share_link_to name_or_options, :odnoklassniki, [:title, :description], &block
30
- end
45
+ private
31
46
 
32
- def link_to_twitter_share(name_or_options = nil, &block)
33
- share_link_to name_or_options, :twitter, [:title, :description], &block
34
- end
47
+ # TODO: enable Metrics/*
48
+ # rubocop:disable Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/AbcSize
49
+ def share_to(name_or_options = nil, network = nil, data_params = [], &block)
50
+ params = sharing_tags[network]
51
+ data_attrs = params.get(*(data_params + [:network, :share_url]))
52
+ data_attrs[:context] = SharingTags.config.current_context.name
35
53
 
36
- def link_to_linkedin_share(name_or_options = nil, &block)
37
- share_link_to name_or_options, :linkedin, [:title, :description], &block
38
- end
54
+ if block_given?
55
+ name_or_options = {} if !name_or_options || name_or_options.is_a?(String)
56
+ data_attrs.merge!(name_or_options.delete(:data)) if name_or_options[:data]
39
57
 
40
- private
58
+ if name_or_options[:role]
59
+ name_or_options[:role] += " sharing_tags_share"
60
+ else
61
+ name_or_options[:role] = "sharing_tags_share"
62
+ end
41
63
 
42
- def share_link_to(name_or_options = nil, network = nil, data_params = [], &block)
43
- params = sharing_tags[network]
44
- data_attrs = params.get(*(data_params +[:network, :share_url]))
45
- data_attrs[:context] = SharingTags.config.current_context.name
64
+ name_or_options.merge!(data: data_attrs, target: "_blank")
46
65
 
47
- if block_given?
48
- name_or_options = {} if !name_or_options || name_or_options.is_a?(String)
49
- data_attrs.merge!(name_or_options.delete(:data)) if name_or_options[:data]
66
+ link_to params.page_url, name_or_options, &block
67
+ else
68
+ name_or_options = default_name(network) if name_or_options.nil?
50
69
 
51
- if name_or_options[:role]
52
- name_or_options[:role] += " sharing_tags_share"
53
- else
54
- name_or_options[:role] = "sharing_tags_share"
70
+ link_to name_or_options, params.page_url, data: data_attrs, role: "sharing_tags_share", target: "_blank", &block
71
+ end
55
72
  end
73
+ # rubocop:enable Metrics/CyclomaticComplexity
56
74
 
57
- name_or_options.merge!(data: data_attrs, target: "_blank")
58
-
59
- link_to params.page_url, name_or_options, &block
60
- else
61
- name_or_options = default_name(network) if name_or_options.nil?
62
-
63
- link_to name_or_options, params.page_url, data: data_attrs, role: "sharing_tags_share", target: "_blank", &block
75
+ def default_name(network)
76
+ image_tag "sharing_tags/icons/#{network}.svg"
77
+ end
64
78
  end
65
- end
66
-
67
- def default_name(network)
68
- image_tag "sharing_tags/icons/#{network}.svg"
69
- end
70
-
79
+ end
71
80
  end