Sha256: 2c6119247e309e799fd1162bbb8d574172386dc748c7866c938e333716e4ee3b

Contents?: true

Size: 1.25 KB

Versions: 4

Compression:

Stored size: 1.25 KB

Contents

require 'uri'

require 'murlsh'

module Murlsh

  # Show a via link for the url.
  class UrlDisplayAdd60Via < Plugin

    @hook = 'url_display_add'

    HttpRe = %r{^http://}i
    HackerNewsRe = %r{^news\.ycombinator\.com}i
    RedditRe = %r{^www\.reddit\.com/r/([a-z\d]+?)/}i
    DeliciousRe = %r{^(?:www\.)?delicious\.com/(\w+)}i
    TwitterRe = %r{^twitter\.com/(\w+)}i
    TumblrRe = %r{^([a-z\d][a-z\d-]{0,61}[a-z\d])\.tumblr\.com/}i

    # Show a via link for the url.
    def self.run(markup, url, config)
      if url.via
        if via_uri = Murlsh::failproof { URI(url.via) }
          via_uri_s = via_uri.to_s
          search = via_uri_s.gsub(HttpRe, '')

          display_via = case
            when search.match(HackerNewsRe); 'hacker news'
            when m = search.match(RedditRe); "#{m[1]}.reddit"
            when m = search.match(DeliciousRe); "delicious/#{m[1]}"
            when m = search.match(TwitterRe); "twitter/#{m[1]}"
            when m = search.match(TumblrRe); "#{m[1]}.tumblr"
            else via_uri.extend(Murlsh::URIDomain).domain || via_uri_s
          end

          markup.span(:class => 'via') do
            markup.text! ' via '
            markup.a display_via, :href => via_uri_s
          end
        end
      end
    end

  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
murlsh-1.3.1 plugins/url_display_add_60_via.rb
murlsh-1.3.0 plugins/url_display_add_60_via.rb
murlsh-1.2.1 plugins/url_display_add_60_via.rb
murlsh-1.2.0 plugins/url_display_add_60_via.rb