simple_hashtag 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/simple_hashtag/hashtag.rb +6 -0
- data/lib/simple_hashtag/hashtaggable.rb +1 -1
- data/lib/simple_hashtag/version.rb +1 -1
- data/spec/simple_hashtag_spec.rb +11 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cc85a0f8c27f897cd9ec7b4a8c6d723538b86783
|
4
|
+
data.tar.gz: 0f3566639a3ab1056ff7bf400d78ed20c83d77c8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d808068477f4ec677356bf7c6dcefe73f8a6d5cd3115444e3b0e0608686af7b6a2a8cd3459d887275ddc3c15f65fa90842bdffc7b85489f1acf7abba0ba5aa5e
|
7
|
+
data.tar.gz: ee55a55cd807ec34ad8e9c16477cf46c8b860dfc3d502f0566f8c4d4126a57615b1388a7a62b2928d6da74388b80625a58dadfcefe9862c900d516ede932617e
|
@@ -4,6 +4,8 @@ module SimpleHashtag
|
|
4
4
|
|
5
5
|
has_many :hashtaggings
|
6
6
|
|
7
|
+
validates :name, uniqueness: true
|
8
|
+
|
7
9
|
# TODO Beef up the regex (ie.:what if content is HTML)
|
8
10
|
# this is how Twitter does it:
|
9
11
|
# https://github.com/twitter/twitter-text-rb/blob/master/lib/twitter-text/regex.rb
|
@@ -12,6 +14,10 @@ module SimpleHashtag
|
|
12
14
|
def self.find_by_name(name)
|
13
15
|
Hashtag.where("lower(name) =?", name.downcase).first
|
14
16
|
end
|
17
|
+
def self.find_or_create_by_name(name, &block)
|
18
|
+
find_by_name(name) || create(name: name, &block)
|
19
|
+
end
|
20
|
+
|
15
21
|
|
16
22
|
def name=(val)
|
17
23
|
write_attribute(:name, val.downcase)
|
@@ -22,7 +22,7 @@ module SimpleHashtag
|
|
22
22
|
parsed_hashtags = []
|
23
23
|
array_of_hashtags_as_string = scan_for_hashtags(hashtaggable_content)
|
24
24
|
array_of_hashtags_as_string.each do |s|
|
25
|
-
parsed_hashtags << Hashtag.
|
25
|
+
parsed_hashtags << Hashtag.find_or_create_by_name(s[1])
|
26
26
|
end
|
27
27
|
parsed_hashtags
|
28
28
|
end
|
data/spec/simple_hashtag_spec.rb
CHANGED
@@ -99,5 +99,16 @@ describe SimpleHashtag do
|
|
99
99
|
p.hashtags.count.should eq 3
|
100
100
|
p.hashtags.map(&:to_s).should eq ["rain-curtain", "silver", "see"]
|
101
101
|
end
|
102
|
+
|
103
|
+
it "doesn't duplicate on mixed case" do
|
104
|
+
ActiveRecord::Base.subclasses.each(&:delete_all)
|
105
|
+
Post.create(body: "Certainty of death, small #chance of success.")
|
106
|
+
Post.create(body: "Certainty of death, small #Chance of success.")
|
107
|
+
|
108
|
+
SimpleHashtag::Hashtag.count.should eq 1
|
109
|
+
h = SimpleHashtag::Hashtag.last
|
110
|
+
h.name.should eq "chance"
|
111
|
+
h.hashtaggables.count.should eq 2
|
112
|
+
end
|
102
113
|
end
|
103
114
|
end
|