module ShareCount
Constants
- NETWORK_LIST
Public Instance Methods
all(url)
click to toggle source
# File lib/share_count.rb, line 52 def all(url) selected(url, NETWORK_LIST) end
all!(url)
click to toggle source
# File lib/share_count.rb, line 55 def all!(url) selected!(url, NETWORK_LIST) end
config=(val)
click to toggle source
# File lib/share_count.rb, line 15 def config=(val) ShareCount::Base.config = val end
has_any?(url, selected_networks = NETWORK_LIST)
click to toggle source
# File lib/share_count.rb, line 61 def has_any?(url, selected_networks = NETWORK_LIST) 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/share_count.rb, line 40 def omit(url, excluded_networks = []) selected_base(url, NETWORK_LIST.map(&:to_s) - excluded_networks.map(&:to_s), false) end
omit!(url, excluded_networks = [])
click to toggle source
# File lib/share_count.rb, line 43 def omit!(url, excluded_networks = []) selected_base(url, NETWORK_LIST.map(&:to_s) - excluded_networks.map(&:to_s), true) end
selected(url, selected_networks)
click to toggle source
# File lib/share_count.rb, line 46 def selected(url, selected_networks) selected_base(url, selected_networks, false) end
selected!(url, selected_networks)
click to toggle source
# File lib/share_count.rb, line 49 def selected!(url, selected_networks) selected_base(url, selected_networks, true) end
supported_networks()
click to toggle source
# File lib/share_count.rb, line 27 def supported_networks NETWORK_LIST end
total(url, selected_networks = NETWORK_LIST)
click to toggle source
# File lib/share_count.rb, line 58 def total(url, selected_networks = NETWORK_LIST) selected!(url, selected_networks).values.reduce(:+) end
Private Instance Methods
filtered_networks(selected_networks)
click to toggle source
# File lib/share_count.rb, line 81 def filtered_networks(selected_networks) selected_networks.map(&:to_s) & NETWORK_LIST.map(&:to_s) end
selected_base(url, selected_networks, with_exception)
click to toggle source
# File lib/share_count.rb, line 87 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/share_count.rb, line 84 def thread_pool(lambdas) lambdas.map { |l| Thread.new { l.call } } end