mongo_likeable 0.0.1 → 0.0.2

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/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