static_addthis 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ source :rubygems
2
+
3
+ group :dev do
4
+ gem 'jeweler'
5
+ gem 'rake'
6
+ gem 'rspec', '~>2'
7
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,26 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ diff-lcs (1.1.2)
5
+ git (1.2.5)
6
+ jeweler (1.6.0)
7
+ bundler (~> 1.0.0)
8
+ git (>= 1.2.5)
9
+ rake
10
+ rake (0.8.7)
11
+ rspec (2.6.0)
12
+ rspec-core (~> 2.6.0)
13
+ rspec-expectations (~> 2.6.0)
14
+ rspec-mocks (~> 2.6.0)
15
+ rspec-core (2.6.0)
16
+ rspec-expectations (2.6.0)
17
+ diff-lcs (~> 1.1.2)
18
+ rspec-mocks (2.6.0)
19
+
20
+ PLATFORMS
21
+ ruby
22
+
23
+ DEPENDENCIES
24
+ jeweler
25
+ rake
26
+ rspec (~> 2)
data/Rakefile ADDED
@@ -0,0 +1,52 @@
1
+ task :default do
2
+ exec "rspec spec/"
3
+ end
4
+
5
+ task :refresh_icons do
6
+ icon_set = '.at15t'
7
+ css = "http://s7.addthis.com/static/r07/widget59.css"
8
+ css = `curl #{css}`
9
+
10
+ css_rules = css.split('}').map(&:strip)
11
+ puts "found #{css_rules.size} rules"
12
+
13
+ # find all simple class rules
14
+ css_rules = css_rules.map do |rule|
15
+ next unless match = rule.match(/^(\.[_a-z\d]+)\s*\{/)
16
+ [match[1], rule.sub(match[0],'')]
17
+ end.compact
18
+ css_rules = Hash[css_rules]
19
+
20
+ puts "extracted #{css_rules.size} simple rules"
21
+
22
+ # find png location
23
+ png = 'http:' + css_rules[icon_set][%r{//.*?\.png}]
24
+ puts "using image #{png}"
25
+ `curl #{png} > assets/addthis_sprite.png`
26
+
27
+ # extract background offset info
28
+ icons = css_rules.map do |klass, css|
29
+ puts klass+css
30
+ next unless klass+css =~ /^#{icon_set}_([_a-z]+)background-position:0 -(\d+)px/
31
+ [$1, $2.to_i]
32
+ end.compact.sort
33
+ icons = Hash[icons]
34
+
35
+ puts icons.inspect
36
+ puts "now paste this into lib/static_addthis.rb"
37
+ end
38
+
39
+ begin
40
+ require 'jeweler'
41
+ Jeweler::Tasks.new do |gem|
42
+ gem.name = 'static_addthis'
43
+ gem.summary = "Fast Addthis: no external js/css/images + no backlinks to addthis"
44
+ gem.email = "michael@grosser.it"
45
+ gem.homepage = "http://github.com/grosser/#{gem.name}"
46
+ gem.authors = ["Michael Grosser"]
47
+ end
48
+
49
+ Jeweler::GemcutterTasks.new
50
+ rescue LoadError
51
+ puts "Jeweler, or one of its dependencies, is not available. Install it with: gem install jeweler"
52
+ end
data/Readme.md ADDED
@@ -0,0 +1,53 @@
1
+ Advantages:
2
+
3
+ - Pagespeed: no additional js/css files + no js execution time
4
+ - Security: no flash tracking pixel from addthis
5
+ - Offline access: everything working without an internet connection
6
+ - SEO: no backlinks to addthis
7
+
8
+ Install
9
+ =======
10
+ rails plugin install git://github.com/grosser/static_addthis.git
11
+
12
+ - copy css from assets/static_addthis.css (0.2kb) to public and include it
13
+ - copy assets/addthis_sprite.png into public/images
14
+
15
+ Usage
16
+ =====
17
+
18
+ # app/helpers/application_helper.rb
19
+ def add_this(options)
20
+ # add google analytics tracking
21
+ url = request.request_uri
22
+ url += url.include?('?') ? '&' : '?'
23
+ url += 'utm_source=add_this&utm_medium=%{provider}'
24
+
25
+ StaticAddthis.icons(options.reverse_merge(
26
+ :title => @page_title,
27
+ :url => request.request_uri,
28
+ :username => 'myaddthisusername',
29
+ :uid => '12345'
30
+ ))
31
+ end
32
+
33
+ # in view
34
+ <%= add_this :providers => ['Facebook', 'Twitter', '|', 'more'] %>
35
+
36
+ # adding a custom provider
37
+ <%= add_this(:providers => ['Twitter', 'MyStuff', 'more']).sub('MyStuff', link_to('MyStuff', '/my_stuff')) %>
38
+
39
+ # without icons
40
+ <%= add_this :providers => ['more'], :only_text => true %>
41
+
42
+ # custom translations
43
+ <%= add_this :providers => ['Facebook', 'Twitter', 'more'], :text => "Share on %{provider}", :show_text => true, :more_text => 'All...' %>
44
+
45
+ # just need some icons ?
46
+ <%= StaticAddthis.social_icon('Facebook') %>
47
+
48
+
49
+ Author
50
+ ======
51
+ [Michael Grosser](http://grosser.it)<br/>
52
+ michael@grosser.it<br/>
53
+ Hereby placed under public domain, do what you want, just do not hold me accountable...<br/>
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.0
Binary file
@@ -0,0 +1,15 @@
1
+ .addthis_icon{
2
+ background: url(/images/addthis_sprite.png) no-repeat;
3
+ width: 16px;
4
+ height: 15px;
5
+ display: inline-block;
6
+ text-decoration: none;
7
+ }
8
+
9
+ .addthis_separator{
10
+ margin-left: 3px;
11
+ }
12
+
13
+ .addthis_toolbox .addthis_icon {
14
+ margin-left: 3px;
15
+ }
@@ -0,0 +1,91 @@
1
+ require 'cgi'
2
+
3
+ module StaticAddthis
4
+ VERSION = File.read( File.join(File.dirname(__FILE__),'..','VERSION') ).strip
5
+
6
+ ICON_OFFSETS = {"addio"=>112, "addressbar"=>128, "adfty"=>160, "adifni"=>176, "aerosocial"=>192, "aim"=>208, "allmyfaves"=>224, "amazonwishlist"=>240, "amenme"=>256, "aolmail"=>272, "armenix"=>288, "arto"=>304, "aviary"=>320, "baang"=>336, "baidu"=>352, "bebo"=>368, "bentio"=>384, "biggerpockets"=>400, "bitly"=>416, "bizsugar"=>432, "bleetbox"=>448, "blinklist"=>464, "blip"=>480, "blogger"=>496, "bloggy"=>512, "blogmarks"=>528, "blogtrottr"=>544, "blurpalicious"=>560, "boardlite"=>576, "bobrdobr"=>592, "bonzobox"=>608, "bookmarkedbyus"=>624, "bookmarkycz"=>640, "bookmerkende"=>656, "bordom"=>672, "box"=>688, "brainify"=>704, "bryderi"=>720, "buddymarks"=>736, "buzzzy"=>752, "camyoo"=>768, "cardthis"=>784, "chiq"=>816, "cirip"=>832, "citeulike"=>848, "classicalplace"=>864, "clickazoo"=>880, "clply"=>896, "cndig"=>912, "colivia"=>928, "compact"=>3440, "connotea"=>944, "cootopia"=>960, "cosmiq"=>976, "curateus"=>992, "dashboard"=>1008, "delicious"=>1024, "designbump"=>1040, "designmoo"=>1056, "digaculturanet"=>1072, "digg"=>1088, "diggita"=>1104, "diggtiger"=>1120, "diglog"=>1136, "digo"=>1152, "digthiswebhost"=>1168, "digzign"=>1184, "diigo"=>1200, "dipdive"=>1216, "domaintoolswhois"=>1232, "domelhor"=>1248, "dosti"=>1264, "dotnetkicks"=>1280, "dotnetshoutout"=>1296, "douban"=>1312, "draugiem"=>1328, "drimio"=>1344, "dropjack"=>1360, "dwellicious"=>1376, "dzone"=>1392, "edelight"=>1408, "efactor"=>1424, "ekudos"=>1440, "elefantapl"=>1456, "email"=>1472, "embarkons"=>1488, "eucliquei"=>1504, "evernote"=>1520, "expanded"=>3440, "extraplay"=>1536, "ezyspot"=>1552, "facebook"=>1584, "facebook_like"=>1600, "fark"=>1616, "farkinda"=>1632, "fashiolista"=>1648, "fashionburner"=>1664, "favable"=>1680, "faves"=>1696, "favicon"=>1712, "favlogde"=>1728, "favoritende"=>1744, "favorites"=>1760, "favoritus"=>1776, "flaker"=>1792, "flickr"=>1808, "flosspro"=>1824, "folkd"=>1840, "followtags"=>1856, "forceindya"=>1872, "formspring"=>1888, "fresqui"=>1904, "friendfeed"=>1920, "friendster"=>1936, "funp"=>1952, "fwisp"=>1968, "gabbr"=>1984, "gacetilla"=>2000, "gamekicker"=>2016, "givealink"=>2032, "globalgrind"=>2048, "gluvsnap"=>2064, "gmail"=>2080, "goodnoows"=>2096, "google"=>2112, "googlebuzz"=>2128, "googlereader"=>2144, "googletranslate"=>2160, "gravee"=>2176, "greaterdebater"=>2192, "grono"=>2208, "grumper"=>2224, "habergentr"=>2240, "hackernews"=>2256, "hadashhot"=>2272, "hatena"=>2288, "hazarkor"=>2304, "hedgehogs"=>2320, "hellotxt"=>2336, "hipstr"=>2368, "historious"=>2384, "hitmarks"=>2400, "hotbookmark"=>2416, "hotklix"=>2432, "hotmail"=>2448, "hyves"=>2464, "idearef"=>2480, "identica"=>2496, "igoogle"=>2512, "ihavegot"=>2528, "indexor"=>2560, "informazione"=>2576, "instapaper"=>2592, "investorlinks"=>2608, "iorbix"=>2624, "isociety"=>2640, "iwiw"=>2656, "jamespot"=>2672, "jappy"=>2688, "jisko"=>2704, "joliprint"=>2720, "jumptags"=>2736, "kaboodle"=>2752, "kaevur"=>2768, "kaixin"=>2784, "kipup"=>2800, "kirtsy"=>2816, "kledy"=>2832, "kommenting"=>2848, "laaikit"=>2864, "ladenzeile"=>2880, "latafaneracat"=>2896, "librerio"=>2912, "linkagogo"=>2928, "linkedin"=>2944, "linkninja"=>2960, "linksgutter"=>2976, "linkshares"=>2992, "linksnapr"=>3008, "linkstore"=>3024, "linkuj"=>3040, "live"=>3056, "livefavoris"=>3072, "livejournal"=>3088, "lockerblogger"=>3104, "lynki"=>3136, "mailto"=>3152, "markme"=>3168, "mashbord"=>3184, "mawindo"=>3200, "meccho"=>3216, "meinvz"=>3232, "mekusharim"=>3248, "memonic"=>3264, "memori"=>3280, "meneame"=>3296, "menu"=>3312, "mindbodygreen"=>3328, "misterwong"=>3344, "misterwong_de"=>3360, "misterwong_ru"=>3376, "mixx"=>3392, "moemesto"=>3408, "moikrug"=>3424, "more"=>3440, "mototagz"=>3456, "mrcnetworkit"=>3472, "mssocialbookmarks"=>3488, "multiply"=>3504, "myaol"=>3520, "myhayastan"=>3536, "mylinkvault"=>3552, "mymailru"=>3568, "mynasa"=>3584, "myspace"=>3600, "myyearbook"=>3616, "naszaklasa"=>3648, "netlog"=>3664, "netvibes"=>3680, "netvouz"=>3696, "newsmeback"=>3712, "newstrust"=>3728, "newsvine"=>3744, "nujij"=>3760, "odnoklassniki_ru"=>3776, "oknotizie"=>3792, "olddogg"=>3808, "oneview"=>3824, "ongobee"=>3840, "orkut"=>3856, "osmosus"=>3872, "oyyla"=>3888, "packg"=>3904, "pafnetde"=>3920, "pdfmyurl"=>3936, "pdfonline"=>3952, "phonefavs"=>3968, "pimpthisblog"=>3984, "pingfm"=>4000, "planypus"=>4016, "plaxo"=>4032, "plurk"=>4048, "pochvalcz"=>4064, "popedition"=>4080, "posteezy"=>4096, "posterous"=>4112, "pratiba"=>4128, "print"=>4144, "printfriendly"=>4160, "pusha"=>4176, "qrfin"=>4192, "quantcast"=>4208, "qzone"=>4224, "readitlater"=>4240, "reddit"=>4256, "rediff"=>4272, "redkum"=>4288, "ridefix"=>4304, "rss"=>4320, "scoopat"=>4336, "segnalo"=>4352, "sekoman"=>4368, "shaveh"=>4400, "shetoldme"=>4416, "shirintar"=>4432, "simpy"=>4448, "sinaweibo"=>4464, "slashdot"=>4480, "smiru"=>4496, "socialbookmarkingnet"=>4512, "sodahead"=>4528, "sonico"=>4544, "speedtile"=>4560, "sphinn"=>4576, "spinsnap"=>4592, "spokentoyou"=>4608, "sportpost"=>4624, "springpad"=>4640, "spruzer"=>4656, "squidoo"=>4672, "startaid"=>4688, "startlap"=>4704, "storyfollower"=>4720, "studivz"=>4736, "stuffpit"=>4752, "stumbleupon"=>4768, "stumpedia"=>4784, "stylehive"=>4800, "surfpeoplenet"=>4816, "svejo"=>4832, "symbaloo"=>4848, "taaza"=>4864, "tagmarksde"=>4880, "tagvn"=>4896, "tagza"=>4912, "tailrank"=>4928, "tarpipe"=>4944, "technerd"=>4960, "teknikim"=>4976, "tellmypolitician"=>4992, "thefreedictionary"=>5008, "thewebblend"=>5024, "thinkfinity"=>5040, "thisnext"=>5056, "throwpile"=>5072, "tipd"=>5088, "topsitelernet"=>5104, "transferr"=>5120, "tuenti"=>5136, "tulinq"=>5152, "tumblr"=>5168, "tusul"=>5184, "tvinx"=>5200, "tweetmeme"=>5216, "twitter"=>5232, "twitthis"=>5248, "typepad"=>5264, "upnews"=>5280, "urlaubswerkde"=>5296, "viadeo"=>5312, "virb"=>5328, "visitezmonsite"=>5344, "vk"=>5360, "vkrugudruzei"=>5376, "voxopolis"=>5392, "vybralisme"=>5408, "vyoom"=>5424, "webnews"=>5456, "webs"=>5472, "windows"=>5488, "windycitizen"=>5504, "wirefan"=>5520, "wordpress"=>5536, "worio"=>5552, "woscc"=>5568, "wykop"=>5584, "xanga"=>5600, "xing"=>5616, "yahoobkm"=>5632, "yahoomail"=>5648, "yammer"=>5664, "yardbarker"=>5680, "yemle"=>5696, "yigg"=>5712, "yiid"=>5728, "yoolink"=>5744, "yorumcuyum"=>5760, "youblr"=>5776, "youbookmarks"=>5792, "youmob"=>5808, "youtube"=>5824, "yuuby"=>5840, "zakladoknet"=>5856, "zanatic"=>5872, "ziczac"=>5888, "zingme"=>5904, "zooloo"=>5920, "zootool"=>5936}
7
+
8
+ def self.icons(options)
9
+ providers = options[:providers].map{|p| link_to_provider(p, options) }
10
+
11
+ if options[:inline]
12
+ content_tag :span, providers.to_s, :class => "addthis_toolbox"
13
+ else
14
+ <<-HTML
15
+ <div class="addthis_toolbox">
16
+ #{providers}
17
+ <div style="clear:both"></div>
18
+ </div>
19
+ HTML
20
+ end
21
+ end
22
+
23
+ def self.social_icon(provider, options={})
24
+ return '' unless offset = icon_offset(provider)
25
+ options = {:class => 'addthis_icon', :style => "background-position: 0 #{-1*offset}px"}.merge(options)
26
+ options[:title] ||= provider.to_s.capitalize
27
+ content_tag :span, '&nbsp;', options
28
+ end
29
+
30
+ def self.link_to_provider(provider, options)
31
+ provider = provider.to_s
32
+
33
+ url = options[:url] || raise('addthis needs :url')
34
+ url = CGI.escape(url.gsub('%{provider}', provider))
35
+
36
+ title = CGI.escape(options[:title] || raise('addthis needs :title'))
37
+ username = options[:username] || raise('addthis needs :username')
38
+ uid = options[:uid] || raise('addthis needs :uid')
39
+
40
+ case provider
41
+ when '|' then
42
+ %{<span class="addthis_separator">|</span>}
43
+ when 'more'
44
+ href = "http://www.addthis.com/bookmark.php?v=250&amp;username=#{username}"
45
+ text = (options[:more_text] || options[:text] || '+')
46
+ build_link provider, text, href, options
47
+ else
48
+ if known_provider?(provider)
49
+ href = "//www.addthis.com/bookmark.php?pub=#{username}&amp;v=250&amp;source=tbx-250&amp;tt=0&amp;s=#{provider}&amp;url=#{url}&amp;title=#{title}&amp;content=&amp;uid=#{uid}"
50
+ text = (options[:text] || provider.capitalize)
51
+ build_link provider, text, href, options
52
+ else
53
+ provider
54
+ end
55
+ end
56
+ end
57
+
58
+ private
59
+
60
+ def self.build_link(provider, text, href, options)
61
+ text = text.gsub('%{provider}', provider)
62
+ icon = social_icon(provider, :title => text)
63
+
64
+ text = if options[:only_text]
65
+ text
66
+ elsif options[:show_text] or (options[:show_more_text] and provider == 'more')
67
+ "#{icon}#{text}"
68
+ else
69
+ icon
70
+ end
71
+
72
+ link_to text, href, :target => :blank, :rel => :nofollow, :id => "add_this_#{provider}"
73
+ end
74
+
75
+ def self.icon_offset(provider)
76
+ ICON_OFFSETS[provider.to_s.downcase]
77
+ end
78
+
79
+ def self.known_provider?(provider)
80
+ !!icon_offset(provider)
81
+ end
82
+
83
+ def self.link_to(name, href, options={})
84
+ content_tag :a, name, options.merge(:href => href)
85
+ end
86
+
87
+ def self.content_tag(name, content, options={})
88
+ options = options.map{|k,v| %{#{k}="#{v.to_s.gsub('"','`')}"}} * ' '
89
+ "<#{name} #{options}>#{content}</#{name}>"
90
+ end
91
+ end
@@ -0,0 +1,53 @@
1
+ require 'rubygems'
2
+ require 'lib/static_addthis'
3
+
4
+ describe StaticAddthis do
5
+ let(:defaults){ {:url => 'asdadas', :title => 'xxczx', :uid => '1121', :username => 'asdads'} }
6
+
7
+ describe :icons do
8
+ it "produces seperator" do
9
+ StaticAddthis.icons(defaults.merge(:providers => ['|'])).should include("<span class=\"addthis_separator\">|</span>")
10
+ end
11
+
12
+ it "produces more" do
13
+ StaticAddthis.icons(defaults.merge(:providers => ['more'])).should include(%{class="addthis_icon"})
14
+ end
15
+
16
+ it "produces a provider" do
17
+ StaticAddthis.icons(defaults.merge(:providers => ['Twitter'], :show_text => true)).should include(">Twitter<")
18
+ end
19
+
20
+ it "overwrites %{provider} in url" do
21
+ StaticAddthis.icons(defaults.merge(:providers => ['Twitter'], :url => 'xxx%{provider}yyy')).should include("xxxTwitteryyy")
22
+ end
23
+
24
+ it "ignores unknown providers so I can gsub them" do
25
+ result = StaticAddthis.icons(defaults.merge(:providers => ['Foo']))
26
+ result.should_not include(">Foo<")
27
+ result.should include("Foo\n")
28
+ end
29
+
30
+ it "does not show icons with only_text option" do
31
+ result = StaticAddthis.icons(defaults.merge(:providers => ['Twitter','more'], :only_text => true))
32
+ result.should_not include(%{class="addthis_icon"})
33
+ end
34
+
35
+ it "supports custom translations" do
36
+ result = StaticAddthis.icons(defaults.merge(:providers => ['Twitter'], :text => "Share on %{provider}"))
37
+ result.should include('Share on Twitter')
38
+ end
39
+
40
+ it "supports :inline" do
41
+ result = StaticAddthis.icons(defaults.merge(:providers => ['Twitter'], :inline => true))
42
+ result.should_not include('clear')
43
+ result.should_not include('<div')
44
+ result.should include('addthis_toolbox')
45
+ end
46
+ end
47
+
48
+ describe :social_icon do
49
+ it "finds correct offset" do
50
+ StaticAddthis.social_icon('Twitter').should include('background-position: 0 -5232px')
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,40 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{static_addthis}
8
+ s.version = "0.1.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Michael Grosser"]
12
+ s.date = %q{2011-06-06}
13
+ s.email = %q{michael@grosser.it}
14
+ s.files = [
15
+ "Gemfile",
16
+ "Gemfile.lock",
17
+ "Rakefile",
18
+ "Readme.md",
19
+ "VERSION",
20
+ "assets/addthis_sprite.png",
21
+ "assets/static_addthis.css",
22
+ "lib/static_addthis.rb",
23
+ "spec/static_addthis_spec.rb",
24
+ "static_addthis.gemspec"
25
+ ]
26
+ s.homepage = %q{http://github.com/grosser/static_addthis}
27
+ s.require_paths = ["lib"]
28
+ s.rubygems_version = %q{1.6.2}
29
+ s.summary = %q{Fast Addthis: no external js/css/images + no backlinks to addthis}
30
+
31
+ if s.respond_to? :specification_version then
32
+ s.specification_version = 3
33
+
34
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
35
+ else
36
+ end
37
+ else
38
+ end
39
+ end
40
+
metadata ADDED
@@ -0,0 +1,76 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: static_addthis
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - Michael Grosser
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-06-06 00:00:00 +02:00
19
+ default_executable:
20
+ dependencies: []
21
+
22
+ description:
23
+ email: michael@grosser.it
24
+ executables: []
25
+
26
+ extensions: []
27
+
28
+ extra_rdoc_files: []
29
+
30
+ files:
31
+ - Gemfile
32
+ - Gemfile.lock
33
+ - Rakefile
34
+ - Readme.md
35
+ - VERSION
36
+ - assets/addthis_sprite.png
37
+ - assets/static_addthis.css
38
+ - lib/static_addthis.rb
39
+ - spec/static_addthis_spec.rb
40
+ - static_addthis.gemspec
41
+ has_rdoc: true
42
+ homepage: http://github.com/grosser/static_addthis
43
+ licenses: []
44
+
45
+ post_install_message:
46
+ rdoc_options: []
47
+
48
+ require_paths:
49
+ - lib
50
+ required_ruby_version: !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ hash: 3
56
+ segments:
57
+ - 0
58
+ version: "0"
59
+ required_rubygems_version: !ruby/object:Gem::Requirement
60
+ none: false
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ hash: 3
65
+ segments:
66
+ - 0
67
+ version: "0"
68
+ requirements: []
69
+
70
+ rubyforge_project:
71
+ rubygems_version: 1.6.2
72
+ signing_key:
73
+ specification_version: 3
74
+ summary: "Fast Addthis: no external js/css/images + no backlinks to addthis"
75
+ test_files: []
76
+