Sha256: 1125d470905073cffaaedb3d4575c92275eb522ba0cc41aadb1180ff1aad969d

Contents?: true

Size: 1.56 KB

Versions: 1

Compression:

Stored size: 1.56 KB

Contents

# frozen_string_literal: true

require "erb"

require "social_url/errors"
require "social_url/version"

require "social_url/message"
require "social_url/facebook"
require "social_url/google"
require "social_url/pinterest"
require "social_url/twitter"

module SocialUrl
  include ERB::Util

  class << self
    NETWORKS = [:facebook, :google, :pinterest, :twitter]
    KEYS = {
      u: :url,
      url: :u,
      description: :text,
      text: :description
    }

    def networks
      NETWORKS
    end

    def normalize(options)
      opts = {}

      options.each do |key, value|
        next unless value

        if key == :hashtags
          opts[key] = normalize_hashtags(value)
        elsif value.is_a?(String)
          opts[key] = normalize_string(value)
        elsif value.is_a?(Array)
          opts[key] = normalize_array(value)
        end
      end

      normalize_keys(opts)
    end

    def normalize_keys(options)
      opts = options.dup

      options.each do |key, value|
        opts[KEYS[key]] = opts[key] if KEYS[key]
      end

      opts
    end

    def normalize_hashtags(array)
      array.collect do |value|
        value.delete(" ")
      end.join(",")
    end

    def normalize_string(string)
      ERB::Util.url_encode(string)
    end

    def normalize_array(array)
      array.collect do |value|
        ERB::Util.url_encode(value)
      end.join(",")
    end

    def filtered_params(options, params)
      params.collect do |param|
        next unless options[param]
        "#{param}=#{options[param]}"
      end.compact.join("&")
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
social-url-1.1.1 lib/social_url.rb