Sha256: 8e384e3717a903f3b339faee0fa3482b2d863f60b9a01c3e2206ec63c53dd324

Contents?: true

Size: 682 Bytes

Versions: 8

Compression:

Stored size: 682 Bytes

Contents

module SocialUrl
  class Message
    def initialize(options)
      @options = SocialUrl.normalize(options)

      init_networks
    end

    def method_missing(method)
      network = /(.+)_url/.match(method)
      return unless network

      networks = SocialUrl.networks.join(',')
      raise UnsupportedNetworkError,
           "Unsupported network '#{network[1]}'. Choose from: #{networks}."
    end

    private

    def init_networks
      SocialUrl.networks.each do |network|
        self.class.send(:define_method, "#{network}_url") do
          klass = network.to_s.capitalize
          SocialUrl.const_get(klass).new(@options).url
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
social-url-1.1.0 lib/social_url/message.rb
social-url-1.0.3 lib/social_url/message.rb
social-url-1.0.2 lib/social_url/message.rb
social-url-1.0.1 lib/social_url/message.rb
social-url-1.0.0 lib/social_url/message.rb
social-url-0.3.0 lib/social_url/message.rb
social-url-0.2.0 lib/social_url/message.rb
social-url-0.1.1 lib/social_url/message.rb