module SocialShares
Constants
- SUPPORTED_NETWORKS
- VERSION
Public Class Methods
all(url)
click to toggle source
# File lib/social_shares.rb, line 76 def all(url) selected(url, SUPPORTED_NETWORKS) end
all!(url)
click to toggle source
# File lib/social_shares.rb, line 80 def all!(url) selected!(url, SUPPORTED_NETWORKS) end
config=(val)
click to toggle source
# File lib/social_shares.rb, line 24 def config=(val) SocialShares::Base.config = val end
has_any?(url, selected_networks = SUPPORTED_NETWORKS)
click to toggle source
# File lib/social_shares.rb, line 88 def has_any?(url, selected_networks = SUPPORTED_NETWORKS) lambdas = filtered_networks(selected_networks).map do |network_name| -> {self.send("#{network_name}!", url)} end pool = thread_pool(lambdas) found = false while !pool.empty? && !found sleep 0.05 if thread = pool.find(&:stop?) if thread.value > 0 pool.each(&:kill) found = true else pool.delete(thread) end end end found end
omit(url, excluded_networks = [])
click to toggle source
# File lib/social_shares.rb, line 60 def omit(url, excluded_networks = []) selected_base(url, supported_networks.map(&:to_s) - excluded_networks.map(&:to_s), false) end
omit!(url, excluded_networks = [])
click to toggle source
# File lib/social_shares.rb, line 64 def omit!(url, excluded_networks = []) selected_base(url, supported_networks.map(&:to_s) - excluded_networks.map(&:to_s), true) end
selected(url, selected_networks)
click to toggle source
# File lib/social_shares.rb, line 68 def selected(url, selected_networks) selected_base(url, selected_networks, false) end
selected!(url, selected_networks)
click to toggle source
# File lib/social_shares.rb, line 72 def selected!(url, selected_networks) selected_base(url, selected_networks, true) end
supported_networks()
click to toggle source
# File lib/social_shares.rb, line 44 def supported_networks SUPPORTED_NETWORKS end
total(url, selected_networks = SUPPORTED_NETWORKS)
click to toggle source
# File lib/social_shares.rb, line 84 def total(url, selected_networks = SUPPORTED_NETWORKS) selected!(url, selected_networks).values.reduce(:+) end
Private Class Methods
filtered_networks(selected_networks)
click to toggle source
# File lib/social_shares.rb, line 110 def filtered_networks(selected_networks) selected_networks.map(&:to_s) & SUPPORTED_NETWORKS.map(&:to_s) end
selected_base(url, selected_networks, with_exception)
click to toggle source
# File lib/social_shares.rb, line 118 def selected_base(url, selected_networks, with_exception) lambdas = filtered_networks(selected_networks).map do |network_name| method_name = with_exception ? "#{network_name}!" : network_name -> {{network_name => self.send(method_name, url)}} end thread_pool(lambdas).reduce({}) do |result, thread| thread.join result.merge(thread.value) end end
thread_pool(lambdas)
click to toggle source
# File lib/social_shares.rb, line 114 def thread_pool(lambdas) lambdas.map { |l| Thread.new { l.call } } end