ping 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d9e776c8818e83557e8e288e05b9028201103602
4
- data.tar.gz: db20df9a0ce148d9f1fa3a8331bb02e15d351032
3
+ metadata.gz: 2cc7737e01bee08f3abaee44f739b61293b21696
4
+ data.tar.gz: 91eb21315170088ccc7c87c6d3b060cac1b508df
5
5
  SHA512:
6
- metadata.gz: 7be9de0484ead652cf43a5cb86eac935fef1607049869e10bc43f9fb86ef1cc52f27b85db1dd9a981e356708838b2c5b4e23361a50d8a1d8b909c5c22746f788
7
- data.tar.gz: 101221edaf7484d6f87cc7c0d1feec99dd9dd83c39b0949fce6dfa45c430834aaad355cc60ef715c7edb3d3ae249393925b258ceff8441ca58cf63c82760af31
6
+ metadata.gz: 21b1b06d39a3de9425cb465b4885ac70ec5125b272a5051f380b086ebe4359e6f4ed12d66162168950f78cf19e84662da9b7eaabdedbec9ce6632c6c1111a4f5
7
+ data.tar.gz: 7db2f21c90ec9af0cdc0c82a1f4d2ac1166cc2220c7cabdf20ded4f071b93d814b8005db9b06b93768998c66a780f46ab51fd8af1e7d575628ead97787950da3
data/lib/ping.rb CHANGED
@@ -1,5 +1,2 @@
1
1
  require "ping/version"
2
-
3
- module Ping
4
- # Your code goes here...
5
- end
2
+ require "ping/parser"
@@ -0,0 +1,36 @@
1
+ module Ping
2
+ class Mention
3
+ attr_reader :username
4
+
5
+ PATTERN = /
6
+ (?:^|\W) # beginning of string or non-word char
7
+ @((?>[a-z0-9][a-z0-9-]*)) # @username
8
+ (?!\/) # without a trailing slash
9
+ (?=
10
+ \.+[ \t\W]| # dots followed by space or non-word character
11
+ \.+$| # dots at end of line
12
+ [^0-9a-zA-Z_.]| # non-word character except dot
13
+ $ # end of line
14
+ )
15
+ /ix
16
+
17
+ def initialize(username)
18
+ @username = username
19
+ end
20
+
21
+ def self.extract(text)
22
+ text.scan(PATTERN).flatten.
23
+ map(&:downcase).uniq.map do |username|
24
+ self.new(username)
25
+ end
26
+ end
27
+
28
+ def ==(username)
29
+ username == self.username
30
+ end
31
+
32
+ def to_s
33
+ username
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,15 @@
1
+ require "ping/mention"
2
+
3
+ module Ping
4
+ class Parser
5
+ attr_reader :text
6
+
7
+ def initialize(text = nil)
8
+ @text = text.to_s
9
+ end
10
+
11
+ def mentions
12
+ Ping::Mention.extract(text)
13
+ end
14
+ end
15
+ end
data/lib/ping/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Ping
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/ping.gemspec CHANGED
@@ -19,8 +19,8 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.6"
22
- spec.add_development_dependency "rake"
22
+ spec.add_development_dependency "rake", "~> 10.0"
23
23
  spec.add_development_dependency "minitest", "~> 5.0"
24
24
  spec.add_development_dependency "shoulda-context", "~> 1.2"
25
- spec.add_development_dependency "mocha"
25
+ spec.add_development_dependency "mocha", "~> 1.0"
26
26
  end
@@ -0,0 +1,22 @@
1
+ require File.dirname(__FILE__) + '/../test_helper.rb'
2
+
3
+ class Ping::MentionTest < MiniTest::Test
4
+ context "#==" do
5
+ should "compare with strings" do
6
+ mention = Ping::Mention.new("djreimer")
7
+ assert mention == "djreimer"
8
+ end
9
+
10
+ should "compare with mentions" do
11
+ mention = Ping::Mention.new("djreimer")
12
+ assert mention == Ping::Mention.new("djreimer")
13
+ end
14
+ end
15
+
16
+ context "#to_s" do
17
+ should "return the username" do
18
+ mention = Ping::Mention.new("djreimer")
19
+ assert_equal "djreimer", mention.to_s
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,18 @@
1
+ require File.dirname(__FILE__) + '/../test_helper.rb'
2
+
3
+ class Ping::ParserTest < MiniTest::Test
4
+ context "#mentions" do
5
+ should "extract @mentions" do
6
+ text = "Hey there, @djreimer. How's @defunkt?"
7
+ parser = Ping::Parser.new(text)
8
+ assert parser.mentions.include?("djreimer")
9
+ assert parser.mentions.include?("defunkt")
10
+ end
11
+
12
+ should "de-dup mentions" do
13
+ text = "Hey there, @djreimer. How's @djreimer?"
14
+ parser = Ping::Parser.new(text)
15
+ assert_equal 1, parser.mentions.length
16
+ end
17
+ end
18
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ping
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Derrick Reimer
@@ -28,16 +28,16 @@ dependencies:
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '10.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '10.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -70,16 +70,16 @@ dependencies:
70
70
  name: mocha
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ~>
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: '1.0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ~>
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: '1.0'
83
83
  description: A little library for parsing GitHub @mentions and issue references
84
84
  email:
85
85
  - derrickreimer@gmail.com
@@ -93,8 +93,12 @@ files:
93
93
  - README.md
94
94
  - Rakefile
95
95
  - lib/ping.rb
96
+ - lib/ping/mention.rb
97
+ - lib/ping/parser.rb
96
98
  - lib/ping/version.rb
97
99
  - ping.gemspec
100
+ - test/ping/mention_test.rb
101
+ - test/ping/parser_test.rb
98
102
  - test/test_helper.rb
99
103
  homepage: https://github.com/codetree/ping
100
104
  licenses:
@@ -121,5 +125,7 @@ signing_key:
121
125
  specification_version: 4
122
126
  summary: Parse @mentions and issue references
123
127
  test_files:
128
+ - test/ping/mention_test.rb
129
+ - test/ping/parser_test.rb
124
130
  - test/test_helper.rb
125
131
  has_rdoc: