disqus 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.textile CHANGED
@@ -2,7 +2,7 @@ h1. Disqus Ruby Gem
2
2
 
3
3
  The Disqus Gem helps you easily integrate the "Disqus":http://disqus.com
4
4
  commenting system into your website. It works for any site programmed in Ruby,
5
- not just Rails.
5
+ and has view helpers for Rails and Merb.
6
6
 
7
7
  h2. Get it
8
8
 
@@ -33,16 +33,20 @@ h3. Show the comment threads on a post page:
33
33
  <pre>
34
34
  <code>
35
35
  # Loads the commenting system
36
- Disqus::Widget::thread
37
- # Or if you're using Rails:
38
36
  disqus_thread
39
37
 
40
- # Appends the comment count to a end of link text for a url that ends with
41
- # #disqus_thread. For example:
38
+ # Or if you're not using Rails/Merb:
39
+ Disqus::Widget::thread
40
+
41
+ # Sets the inner html to the comment count for any links on the page that
42
+ # have the anchor "disqus_thread". For example, "View Comments" below would
43
+ # be replaced by "1 comment" or "23 comments" etc.
42
44
  # <a href="http://my.website/article-permalink#disqus_thread">View Comments</a>
43
- Disqus::Widget::comment_counts
44
- # Or if you're using Rails:
45
+ # <a href="http://my.website/different-permalink#disqus_thread">View Comments</a>
45
46
  disqus_comment_counts
47
+
48
+ # Or if you're not using Rails/Merb:
49
+ Disqus::Widget::comment_counts
46
50
  </code>
47
51
  </pre>
48
52
 
@@ -50,9 +54,10 @@ h3. Show the combo widget on a post page:
50
54
 
51
55
  <pre>
52
56
  <code>
53
- Disqus::Widget::combo(:color => "blue", :hide_mods => false, :num_items => 25)
54
- # Or if you're using Rails:
55
57
  disqus_combo(:color => "blue", :hide_mods => false, :num_items => 25)
58
+
59
+ # Or for non-Rails/Merb:
60
+ Disqus::Widget::combo(:color => "blue", :hide_mods => false, :num_items => 25)
56
61
  </code>
57
62
  </pre>
58
63
 
@@ -62,9 +67,10 @@ h3. Show the comment count on a permalink:
62
67
  <code>
63
68
  link_to("Permalink", post_path(@post, :anchor => "disqus_thread"))
64
69
  ...
65
- Disqus::Widget::comment_counts
66
- # Or for Rails:
67
70
  disqus_comment_counts
71
+
72
+ # Or for non-Rails/Merb:
73
+ Disqus::Widget::comment_counts
68
74
  </code>
69
75
  </pre>
70
76
 
@@ -80,5 +86,9 @@ h2. Learn more about Disqus:
80
86
 
81
87
  "http://disqus.com":http://disqus.com
82
88
 
89
+ h2. Thanks to the following contributors:
90
+
91
+ * "Quin Hoxie":http://github.com/qhoxie - Merb support
92
+
83
93
  Copyright (c) 2008 "Norman Clarke":norman@randomba.org, released under
84
94
  the MIT license
data/Rakefile CHANGED
@@ -38,5 +38,5 @@ Rake::RDocTask.new(:rdoc) do |rdoc|
38
38
  rdoc.title = 'Disqus'
39
39
  rdoc.options << '--line-numbers' << '--inline-source' << '-c UTF-8'
40
40
  rdoc.rdoc_files.include('lib/**/*.rb')
41
- rdoc.rdoc_files.include('README.txt')
42
- end
41
+ rdoc.rdoc_files.include('README.textile')
42
+ end
data/lib/disqus.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  require 'disqus/widget'
2
2
 
3
-
4
3
  # Disqus is a javascript embed that enhances your blog's comments and
5
4
  # integrates it with a fully moderated community forum. The Disqus gem helps
6
5
  # you quickly and easily integrate Disqus's widgets into your Ruby-based
@@ -19,18 +18,40 @@ module Disqus
19
18
  :orientation => "horizontal"
20
19
  }
21
20
 
21
+ # Disqus defaults:
22
+ # :account => "",
23
+ # :avatar_size => 48,
24
+ # :color => "grey",
25
+ # :default_tab => "popular",
26
+ # :hide_avatars => false,
27
+ # :hide_mods => true,
28
+ # :num_items => 15,
29
+ # :show_powered_by => true,
30
+ # :orientation => "horizontal"
22
31
  def self.defaults
23
32
  @defaults
24
33
  end
25
34
 
35
+ # Load the view helpers if the gem is included in a Rails app.
26
36
  def self.enable_rails
27
37
  return if ActionView::Base.instance_methods.include? 'disqus_thread'
28
- require 'disqus/rails_view_helpers'
29
- ActionView::Base.class_eval { include Disqus::RailsViewHelpers }
38
+ require 'disqus/view_helpers'
39
+ ActionView::Base.class_eval { include Disqus::ViewHelpers }
40
+ end
41
+
42
+ # Load the view helpers if the gem is included in a Merb app.
43
+ def self.enable_merb
44
+ return if Merb::Controller.instance_methods.include? 'disqus_thread'
45
+ require 'disqus/view_helpers'
46
+ Merb::Controller.class_eval { include Disqus::ViewHelpers }
30
47
  end
31
48
 
32
49
  end
33
50
 
34
51
  if defined?(Rails) and defined?(ActionView)
35
52
  Disqus::enable_rails
53
+ end
54
+
55
+ if defined?(Merb)
56
+ Disqus::enable_merb
36
57
  end
@@ -0,0 +1,45 @@
1
+ module Disqus
2
+
3
+ # Shortcuts to access the widgets as simple functions as opposed to using
4
+ # their full qualified names. These helpers are loaded automatically in
5
+ # Rails and Merb apps.
6
+ #
7
+ # For Sinatra, Camping, Nitro or other frameworks, you can include the
8
+ # helper if you wish, or use the fully-qualified names. Really this is just
9
+ # here for aesthetic purposes and to make it less likely to step on anyone's
10
+ # namespace.
11
+ module ViewHelpers
12
+
13
+ # See Disqus::Widget.thread
14
+ def disqus_thread(options = {})
15
+ Disqus::Widget::thread(options)
16
+ end
17
+
18
+ # See Disqus::Widget.comment_counts
19
+ def disqus_comment_counts(options = {})
20
+ Disqus::Widget::comment_counts(options)
21
+ end
22
+
23
+ # See Disqus::Widget.top_commenters
24
+ def disqus_top_commenters(options = {})
25
+ Disqus::Widget::top_commenters(options)
26
+ end
27
+
28
+ # See Disqus::Widget.popular_threads
29
+ def disqus_popular_threads(options = {})
30
+ Disqus::Widget::popular_threads(options)
31
+ end
32
+
33
+ # See Disqus::Widget.recent_comments
34
+ def disqus_recent_comments(options = {})
35
+ Disqus::Widget::recent_comments(options)
36
+ end
37
+
38
+ # See Disqus::Widget.combo
39
+ def disqus_combo(options = {})
40
+ Disqus::Widget::combo(options)
41
+ end
42
+
43
+ end
44
+
45
+ end
data/lib/disqus/widget.rb CHANGED
@@ -1,9 +1,14 @@
1
1
  module Disqus
2
2
 
3
+ # Disqus Widget generator.
4
+ #
5
+ # All of the methods accept various options, and "account" is required for
6
+ # all of them. You can avoid having to pass in the account each time by
7
+ # setting it in the defaults like this:
8
+ #
9
+ # Disqus::defaults[:account] = "my_account"
3
10
  class Widget
4
11
 
5
- class Error < StandardError ; end
6
-
7
12
  VALID_COLORS = ['blue', 'grey', 'green', 'red', 'orange']
8
13
  VALID_NUM_ITEMS = 5..20
9
14
  VALID_DEFAULT_TABS = ['people', 'recent', 'popular']
@@ -18,7 +23,8 @@ module Disqus
18
23
  TOP = ROOT_PATH + 'top_commenters_widget.js?num_items=%d&avatar_size=%d&orientation=%s'
19
24
  class << self
20
25
 
21
- # Show the main Disqus thread widget. Options:
26
+ # Show the main Disqus thread widget.
27
+ # Options:
22
28
  # * <tt>account:</tt> Your Discus account (required).
23
29
  def thread(opts = {})
24
30
  opts = Disqus::defaults.merge(opts)
@@ -36,7 +42,15 @@ module Disqus
36
42
  s % [opts[:account], opts[:account]]
37
43
  end
38
44
 
39
- # Loads Javascript to show the number of comments for the page. Options:
45
+ # Loads Javascript to show the number of comments for the page.
46
+ #
47
+ # The Javascript sets the inner html to the comment count for any links
48
+ # on the page that have the anchor "disqus_thread". For example, "View
49
+ # Comments" below would be replaced by "1 comment" or "23 comments" etc.
50
+ #
51
+ # <a href="http://my.website/article-permalink#disqus_thread">View Comments</a>
52
+ # <a href="http://my.website/different-permalink#disqus_thread">View Comments</a>
53
+ # Options:
40
54
  # * <tt>account:</tt> Your Discus account (required).
41
55
  def comment_counts(opts = {})
42
56
  opts = Disqus::defaults.merge(opts)
@@ -60,7 +74,8 @@ module Disqus
60
74
  s % opts[:account]
61
75
  end
62
76
 
63
- # Show the main Disqus thread widget. Options:
77
+ # Show the top commenters Disqus thread widget.
78
+ # Options:
64
79
  # * <tt>account:</tt> Your Discus account (required).
65
80
  # * <tt>header:</tt> HTML snipper with header (default h2) tag and text.
66
81
  # * <tt>show_powered_by:</tt> Show or hide the powered by Disqus text.
@@ -86,7 +101,8 @@ module Disqus
86
101
  s % [opts[:account], opts[:num_items], opts[:avatar_size], opts[:orientation]]
87
102
  end
88
103
 
89
- # Show the main Disqus thread widget. Options:
104
+ # Show the popular threads Disqus widget.
105
+ # Options:
90
106
  # * <tt>account:</tt> Your Discus account (required).
91
107
  # * <tt>header:</tt> HTML snipper with header (default h2) tag and text.
92
108
  # * <tt>num_items:</tt>: How many items to show.
@@ -106,7 +122,8 @@ module Disqus
106
122
  s % [opts[:account], opts[:num_items]]
107
123
  end
108
124
 
109
- # Show the main Disqus thread widget. Options:
125
+ # Show the recent comments Disqus widget.
126
+ # Options:
110
127
  # * <tt>account:</tt> Your Discus account (required).
111
128
  # * <tt>header:</tt> HTML snipper with header (default h2) tag and text.
112
129
  # * <tt>num_items:</tt>: How many items to show.
@@ -129,10 +146,13 @@ module Disqus
129
146
  s % [opts[:account], opts[:num_items], opts[:avatar_size]]
130
147
  end
131
148
 
132
- # Show the main Disqus thread widget. Options:
133
- # * <tt>account:</tt> Your Discus account (required).
134
- # * <tt>num_items:</tt>: How many items to show.
135
- # * <tt>hide_mods:</tt> Don't show moderators.
149
+ # Show the Disqus combo widget. This is a three-tabbed box with links
150
+ # popular threads, top posters, and recent threads.
151
+ # Options:
152
+ # * <tt>:account:</tt> Your Discus account (required).
153
+ # * <tt>:num_items:</tt> How many items to show.
154
+ # * <tt>:hide_mods:</tt> Don't show moderators.
155
+ # * <tt>:default_tab:</tt> Should be 'people', 'recent', or 'popular'.
136
156
  def combo(opts = {})
137
157
  opts = Disqus::defaults.merge(opts)
138
158
  validate_opts!(opts)
@@ -146,12 +166,12 @@ module Disqus
146
166
  private
147
167
 
148
168
  def validate_opts!(opts)
149
- raise Error.new("You must specify an :account") if !opts[:account]
150
- raise Error.new("Invalid color") if opts[:color] && !VALID_COLORS.include?(opts[:color])
151
- raise Error.new("Invalid num_items") if opts[:num_items] && !VALID_NUM_ITEMS.include?(opts[:num_items])
152
- raise Error.new("Invalid default_tab") if opts[:default_tab] && !VALID_DEFAULT_TABS.include?(opts[:default_tab])
153
- raise Error.new("Invalid avatar size") if opts[:avatar_size] && !VALID_AVATAR_SIZES.include?(opts[:avatar_size])
154
- raise Error.new("Invalid orientation") if opts[:orientation] && !VALID_ORIENTATIONS.include?(opts[:orientation])
169
+ raise ArgumentError.new("You must specify an :account") if !opts[:account]
170
+ raise ArgumentError.new("Invalid color") if opts[:color] && !VALID_COLORS.include?(opts[:color])
171
+ raise ArgumentError.new("Invalid num_items") if opts[:num_items] && !VALID_NUM_ITEMS.include?(opts[:num_items])
172
+ raise ArgumentError.new("Invalid default_tab") if opts[:default_tab] && !VALID_DEFAULT_TABS.include?(opts[:default_tab])
173
+ raise ArgumentError.new("Invalid avatar size") if opts[:avatar_size] && !VALID_AVATAR_SIZES.include?(opts[:avatar_size])
174
+ raise ArgumentError.new("Invalid orientation") if opts[:orientation] && !VALID_ORIENTATIONS.include?(opts[:orientation])
155
175
  end
156
176
 
157
177
  end
@@ -1,10 +1,10 @@
1
1
  require 'test/unit'
2
2
  require 'disqus'
3
- require 'disqus/rails_view_helpers'
3
+ require 'disqus/view_helpers'
4
4
 
5
- class DisqusWidgetTest < Test::Unit::TestCase
5
+ class ViewHelpersTest < Test::Unit::TestCase
6
6
 
7
- include Disqus::RailsViewHelpers
7
+ include Disqus::ViewHelpers
8
8
 
9
9
  def setup
10
10
  Disqus::defaults[:account] = "tests"
data/test/widget_test.rb CHANGED
@@ -32,25 +32,25 @@ class DisqusWidgetTest < Test::Unit::TestCase
32
32
  end
33
33
 
34
34
  def test_invalid_default_tab
35
- assert_raises Disqus::Widget::Error do
35
+ assert_raises ArgumentError do
36
36
  Disqus::Widget::combo(:default_tab => "test")
37
37
  end
38
38
  end
39
39
 
40
40
  def test_invalid_color
41
- assert_raises Disqus::Widget::Error do
41
+ assert_raises ArgumentError do
42
42
  Disqus::Widget::combo(:color => "test")
43
43
  end
44
44
  end
45
45
 
46
46
  def test_invalid_num_items
47
- assert_raises Disqus::Widget::Error do
47
+ assert_raises ArgumentError do
48
48
  Disqus::Widget::combo(:num_items => 100)
49
49
  end
50
50
  end
51
51
 
52
52
  def test_invalid_avatar_size
53
- assert_raises Disqus::Widget::Error do
53
+ assert_raises ArgumentError do
54
54
  Disqus::Widget::top_commenters(:avatar_size => 100)
55
55
  end
56
56
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: disqus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Norman Clarke
@@ -9,33 +9,32 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-08-27 00:00:00 -03:00
12
+ date: 2008-09-03 00:00:00 -03:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
16
- description: Integrates Disqus into your Ruby-powered site. Works with any Ruby website, not just Rails.
16
+ description: Integrates Disqus into your Ruby-powered site. Works with any Ruby website, and has view helpers for Rails and Merb.
17
17
  email: norman@randomba.org
18
18
  executables: []
19
19
 
20
20
  extensions: []
21
21
 
22
22
  extra_rdoc_files:
23
- - README.txt
23
+ - README.textile
24
24
  files:
25
25
  - MIT-LICENSE
26
26
  - README.textile
27
- - README.txt
28
27
  - init.rb
29
28
  - lib/disqus.rb
30
29
  - lib/disqus/widget.rb
31
- - lib/disqus/rails_view_helpers.rb
30
+ - lib/disqus/view_helpers.rb
32
31
  - Rakefile
33
32
  has_rdoc: true
34
33
  homepage: http://randomba.org
35
34
  post_install_message:
36
35
  rdoc_options:
37
36
  - --main
38
- - README.txt
37
+ - README.textile
39
38
  - --inline-source
40
39
  - --line-numbers
41
40
  require_paths:
@@ -61,4 +60,4 @@ specification_version: 2
61
60
  summary: Integrates Disqus commenting system into your Ruby-powered site.
62
61
  test_files:
63
62
  - test/widget_test.rb
64
- - test/rails_view_helpers_test.rb
63
+ - test/view_helpers_test.rb
data/README.txt DELETED
@@ -1,65 +0,0 @@
1
- Disqus Ruby Gem
2
-
3
- The Disqus Gem helps you easily integrate the Disqus commenting system into your website. It works for any site programmed in Ruby, not just Rails.
4
-
5
- Get it
6
-
7
- Stable release:
8
-
9
- gem install disqus
10
-
11
- Bleeding edge:
12
-
13
- gem install norman-disqus --source http://gems.github.com
14
-
15
- Use it:
16
-
17
- Configure it:
18
-
19
-
20
- Disqus::defaults[:account] = "my_account"
21
-
22
- Show the comment threads on a post page:
23
-
24
-
25
- # Loads the commenting system
26
- Disqus::Widget::thread
27
- # Or if you're using Rails:
28
- disqus_thread
29
-
30
- # Appends the comment count to a end of link text for a url that ends with
31
- # #disqus_thread. For example:
32
- # <a href="http://my.website/article-permalink#disqus_thread">View Comments</a>
33
- Disqus::Widget::comment_counts
34
- # Or if you're using Rails:
35
- disqus_comment_counts
36
-
37
- Show the combo widget on a post page:
38
-
39
-
40
- Disqus::Widget::combo(:color => "blue", :hide_mods => false, :num_items => 25)
41
- # Or if you're using Rails:
42
- disqus_combo(:color => "blue", :hide_mods => false, :num_items => 25)
43
-
44
- Show the comment count on a permalink:
45
-
46
-
47
- link_to("Permalink", post_path(@post, :anchor => "disqus_thread"))
48
- ...
49
- Disqus::Widget::comment_counts
50
- # Or for Rails:
51
- disqus_comment_counts
52
-
53
- Hack it:
54
-
55
- Github repository: http://github.com/norman/disqus
56
-
57
- Complain about it:
58
-
59
- norman@randomba.org
60
-
61
- Learn more about Disqus:
62
-
63
- http://disqus.com
64
-
65
- Copyright© 2008 Norman Clarke, released under the MIT license
@@ -1,31 +0,0 @@
1
- module Disqus
2
-
3
- module RailsViewHelpers
4
-
5
- def disqus_thread(options = {})
6
- Disqus::Widget::thread(options)
7
- end
8
-
9
- def disqus_comment_counts(options = {})
10
- Disqus::Widget::comment_counts(options)
11
- end
12
-
13
- def disqus_top_commenters(options = {})
14
- Disqus::Widget::top_commenters(options)
15
- end
16
-
17
- def disqus_popular_threads(options = {})
18
- Disqus::Widget::popular_threads(options)
19
- end
20
-
21
- def disqus_recent_comments(options = {})
22
- Disqus::Widget::recent_comments(options)
23
- end
24
-
25
- def disqus_combo(options = {})
26
- Disqus::Widget::combo(options)
27
- end
28
-
29
- end
30
-
31
- end