mongo_likeable 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc ADDED
@@ -0,0 +1,45 @@
1
+ = mongo_likeable
2
+
3
+ Works for both Mongoid and Mongo_Mapper!
4
+
5
+ == Installation
6
+
7
+ In console:
8
+ gem install mongo_likeable
9
+ or in Gemfile:
10
+ gem 'mongo_likeable'
11
+
12
+ == Usage
13
+
14
+ To make model likeable you need to include Mongo::Likeable into your document:
15
+
16
+ class User
17
+ include Mongoid::Document #for Mongo_Mapper users, this line of code should be include MongoMapper::Document
18
+ include Mongo::Likeable
19
+ end
20
+
21
+ After this,
22
+
23
+ u = User.new
24
+ u.like?(some_stuff)
25
+
26
+ u.like(some_stuff)
27
+ u.like(*some_array_of_stuffs) # like an array of stuffs
28
+
29
+ u.dislike(some_other_stuff)
30
+
31
+ u.clear_likes() # if no parameter is given, all likes will be cleared.
32
+ u.clear_likes(s, s1, s2...)
33
+
34
+ u.like_counts # display total counts
35
+ u.dislike_counts
36
+
37
+ * Any bug or issue, please send me an email: ustc.flyingfox@gmail.com
38
+
39
+ == TODO
40
+
41
+ * like/dislike history.
42
+
43
+ == Copyright
44
+
45
+ Copyright (c) Jie Fan. See LICENSE.txt for further details.
@@ -6,30 +6,54 @@ module Mongo
6
6
  if defined?(Mongoid)
7
7
  base.field :likes, :type => Array, :default => []
8
8
  base.field :dislikes, :type => Array, :default => []
9
+
10
+ # base.field :like_history, :type => Array, :default => []
11
+ # base.field :dislike_history, :type => Array, :default => []
9
12
  elsif defined?(MongoMapper)
10
13
  base.key :likes, :type => Array, :default => []
11
14
  base.key :dislikes, :type => Array, :default => []
12
- end
13
- end
14
15
 
15
- module ClassMethods
16
- #...
16
+ # base.key :like_history, :type => Array, :default => []
17
+ # base.key :dislike_history, :type => Array, :default => []
18
+ end
17
19
  end
18
20
 
19
21
  def like(*models)
20
22
  self.likes |= simplify_instance(*models)
23
+ # self.like_history |= simplify_instance(*models)
24
+
25
+ self.save
21
26
  end
22
27
 
23
28
  def dislike(*models)
24
29
  self.dislikes |= simplify_instance(*models)
30
+ # self.dislike_history |= simplify_instance(*models)
31
+
32
+ self.save
25
33
  end
26
34
 
35
+ def like_counts
36
+ self.likes.length
37
+ end
38
+
39
+ def dislike_counts
40
+ self.dislikes.length
41
+ end
42
+
43
+ # def like_history
44
+ # rebuild_instance(*self.like_history)
45
+ # end
46
+ #
47
+ # def dislike_history
48
+ # rebuild_instance(*self.dislike_history)
49
+ # end
50
+
27
51
  def like?(model)
28
- self.likes.include? simplify_instance(model)
52
+ self.likes.include? simplify_instance(model)[0]
29
53
  end
30
54
 
31
55
  def dislike?(model)
32
- self.dislikes.include? simplify_instance(model)
56
+ self.dislikes.include? simplify_instance(model)[0]
33
57
  end
34
58
 
35
59
  def clear_likes(*models)
@@ -38,6 +62,8 @@ module Mongo
38
62
  else
39
63
  self.likes -= simplify_instance(*models)
40
64
  end
65
+
66
+ self.save
41
67
  end
42
68
 
43
69
  def clear_dislikes(*models)
@@ -46,6 +72,8 @@ module Mongo
46
72
  else
47
73
  self.dislikes -= simplify_instance(*models)
48
74
  end
75
+
76
+ self.save
49
77
  end
50
78
 
51
79
  private
@@ -1,3 +1,3 @@
1
1
  module MongoLikeable
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -29,16 +29,23 @@ describe Mongo::Likeable do
29
29
  u.dislike?(@s).should be_false
30
30
 
31
31
  u.like(@v, @s, @t)
32
+ u.like_counts.should == 3
32
33
  u.likes.should =~ [@v.class.name + '_' + @v.id.to_s, @s.class.name + '_' + @s.id.to_s, @t.class.name + '_' + @t.id.to_s]
34
+ # u.like_history.should =~ [@v.class.name + '_' + @v.id.to_s, @s.class.name + '_' + @s.id.to_s, @t.class.name + '_' + @t.id.to_s]
33
35
 
34
36
  u.dislike(@v, @s, @t)
35
37
  u.dislikes.should =~ [@v.class.name + '_' + @v.id.to_s, @s.class.name + '_' + @s.id.to_s, @t.class.name + '_' + @t.id.to_s]
38
+ # u.dislike_history.should =~ [@v.class.name + '_' + @v.id.to_s, @s.class.name + '_' + @s.id.to_s, @t.class.name + '_' + @t.id.to_s]
36
39
 
37
40
  u.clear_likes(@v, @s)
41
+ u.like_counts.should == 1
38
42
  u.likes.should =~ [@t.class.name + '_' + @t.id.to_s]
43
+ # u.like_history.should =~ [@v.class.name + '_' + @v.id.to_s, @s.class.name + '_' + @s.id.to_s, @t.class.name + '_' + @t.id.to_s]
39
44
 
40
45
  u.clear_dislikes()
46
+ u.dislike_counts.should == 0
41
47
  u.dislikes.should == []
48
+ # u.dislike_history.should =~ [@v.class.name + '_' + @v.id.to_s, @s.class.name + '_' + @s.id.to_s, @t.class.name + '_' + @t.id.to_s]
42
49
 
43
50
  end
44
51
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 1
9
- version: 0.0.1
8
+ - 2
9
+ version: 0.0.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Jie Fan
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2012-02-02 00:00:00 -05:00
17
+ date: 2012-02-07 00:00:00 -05:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -104,6 +104,7 @@ extra_rdoc_files: []
104
104
  files:
105
105
  - .gitignore
106
106
  - Gemfile
107
+ - README.rdoc
107
108
  - Rakefile
108
109
  - lib/mongo_likeable.rb
109
110
  - lib/mongo_likeable/mongo_likeable.rb