possessify 1.0.1 → 1.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 +8 -1
- data/Rakefile +1 -1
- data/lib/possessify/possessify.rb +38 -5
- data/lib/possessify/version.rb +1 -1
- data/test/possessify_test.rb +29 -15
- metadata +4 -4
data/README.rdoc
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
= Possessify
|
2
2
|
|
3
|
-
Possessify extends the Ruby String class adding functionality to make strings possessive and non-possessive. It also provides
|
3
|
+
Possessify extends the Ruby String class adding functionality to make strings possessive and non-possessive. It also provides possessive? and non_possessive? checker methods.
|
4
|
+
|
5
|
+
== Installation
|
6
|
+
|
7
|
+
gem install possessify
|
4
8
|
|
5
9
|
== Examples
|
6
10
|
|
@@ -12,6 +16,9 @@ Possessify extends the Ruby String class adding functionality to make strings po
|
|
12
16
|
|
13
17
|
"Dave's".possessive? #=> true
|
14
18
|
"Dave".possessive? #=> false
|
19
|
+
|
20
|
+
"Dave's".non_possessive? #=> false
|
21
|
+
"Dave".non_possessive? #=> true
|
15
22
|
|
16
23
|
|
17
24
|
Copyright (c) 2011 David Busse, released under the MIT license
|
data/Rakefile
CHANGED
@@ -21,6 +21,6 @@ Rake::RDocTask.new(:rdoc) do |rdoc|
|
|
21
21
|
rdoc.rdoc_dir = 'rdoc'
|
22
22
|
rdoc.title = 'Possessify'
|
23
23
|
rdoc.options << '--line-numbers' << '--inline-source'
|
24
|
-
rdoc.rdoc_files.include('README')
|
24
|
+
rdoc.rdoc_files.include('README.rdoc')
|
25
25
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
26
26
|
end
|
@@ -1,14 +1,28 @@
|
|
1
1
|
module Possessify
|
2
2
|
|
3
3
|
String.class_eval do
|
4
|
+
|
5
|
+
##
|
6
|
+
# :call-seq:
|
7
|
+
# str.possessive => new_str
|
8
|
+
#
|
9
|
+
# Returns a new string that is the possessive form of <i>str</i>.
|
10
|
+
# "Dave".possessive #=> "Dave's"
|
11
|
+
# "Xerxes".possessive #=> "Xerxes'"
|
4
12
|
def possessive
|
5
|
-
|
6
|
-
|
7
|
-
str = str + (str[-1,1] && str[-1,1].downcase == "s" ? "'" : "'s")
|
13
|
+
unless self.possessive? || self.blank?
|
14
|
+
str = self + (self[-1,1] && self[-1,1].downcase == "s" ? "'" : "'s")
|
8
15
|
end
|
9
|
-
str
|
16
|
+
str || self
|
10
17
|
end
|
11
|
-
|
18
|
+
|
19
|
+
##
|
20
|
+
# :call-seq:
|
21
|
+
# str.non_possessive => new_str
|
22
|
+
#
|
23
|
+
# Returns a new string that is the non-possessive form of <i>str</i>.
|
24
|
+
# "Dave's".non_possessive #=> "Dave"
|
25
|
+
# "Xerxes'".non_possessive #=> "Xerxes"
|
12
26
|
def non_possessive
|
13
27
|
if self.possessive?
|
14
28
|
unless self.chomp!("'s")
|
@@ -18,9 +32,28 @@ module Possessify
|
|
18
32
|
self
|
19
33
|
end
|
20
34
|
|
35
|
+
##
|
36
|
+
# :call-seq:
|
37
|
+
# str.possessive? => true or false
|
38
|
+
#
|
39
|
+
# Returns <code>true</code> if <i>str</i> is possessive.
|
40
|
+
# "Dave's".possessive? #=> true
|
41
|
+
# "Dave".possessive? #=> false
|
21
42
|
def possessive?
|
22
43
|
self[-2,2] && (self[-2,2].downcase == "'s" || self[-2,2].downcase == "s'")
|
23
44
|
end
|
45
|
+
|
46
|
+
##
|
47
|
+
# :call-seq:
|
48
|
+
# str.non_possessive? => true or false
|
49
|
+
#
|
50
|
+
# Returns <code>true</code> if <i>str</i> is not in possessive form.
|
51
|
+
# "Dave's".non_possessive? #=> false
|
52
|
+
# "Dave".non_possessive? #=> true
|
53
|
+
def non_possessive?
|
54
|
+
!self.possessive?
|
55
|
+
end
|
56
|
+
|
24
57
|
end
|
25
58
|
|
26
59
|
end
|
data/lib/possessify/version.rb
CHANGED
data/test/possessify_test.rb
CHANGED
@@ -1,36 +1,50 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class PossessifyTest < ActiveSupport::TestCase
|
4
|
-
|
4
|
+
|
5
|
+
# tests for possessive method
|
6
|
+
test "should make singular string possessive" do
|
5
7
|
assert_equal "Dave's", "Dave".possessive
|
6
8
|
end
|
7
9
|
|
8
|
-
test "string ending in s possessive" do
|
9
|
-
assert_equal "
|
10
|
-
assert_equal "
|
11
|
-
end
|
12
|
-
|
13
|
-
test "string already possessive" do
|
14
|
-
assert_equal "Dave's", "Dave's".possessive
|
15
|
-
assert_equal "James'", "James'".possessive
|
10
|
+
test "should make string ending in s possessive" do
|
11
|
+
assert_equal "Xerxes'", "Xerxes".possessive
|
12
|
+
assert_equal "XerxeS'", "XerxeS".possessive
|
16
13
|
end
|
17
14
|
|
18
|
-
test "
|
15
|
+
test "should make single character string possesive" do
|
19
16
|
assert_equal "D's", "D".possessive
|
20
17
|
assert_equal "S'", "S".possessive
|
21
18
|
end
|
22
19
|
|
23
|
-
test "
|
20
|
+
test "should do nothing if string already possessive" do
|
21
|
+
assert_equal "Dave's", "Dave's".possessive
|
22
|
+
assert_equal "Xerxes'", "Xerxes'".possessive
|
23
|
+
end
|
24
|
+
|
25
|
+
test "should do nothing if string is empty" do
|
24
26
|
assert_equal "", "".possessive
|
25
27
|
end
|
26
28
|
|
27
|
-
|
29
|
+
# tests for non_possessive method
|
30
|
+
test "should make singular possessive string non-possesive" do
|
28
31
|
assert_equal "Dave", "Dave's".non_possessive
|
29
32
|
end
|
30
33
|
|
31
|
-
test "
|
32
|
-
assert_equal "
|
33
|
-
assert_equal "
|
34
|
+
test "should make possesive string ending in s non_possesive" do
|
35
|
+
assert_equal "Xerxes", "Xerxes'".non_possessive
|
36
|
+
assert_equal "XerxeS", "XerxeS'".non_possessive
|
37
|
+
end
|
38
|
+
|
39
|
+
# tests for possessive? method
|
40
|
+
test "should return true for possessive string" do
|
41
|
+
assert_equal true, "Dave's".possessive?
|
42
|
+
assert_equal true, "Xerxes'".possessive?
|
43
|
+
end
|
44
|
+
|
45
|
+
test "should return false for non-possessive string" do
|
46
|
+
assert_equal false, "Dave".possessive?
|
47
|
+
assert_equal false, "Xerxes".possessive?
|
34
48
|
end
|
35
49
|
|
36
50
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: possessify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 1.0.
|
9
|
+
- 2
|
10
|
+
version: 1.0.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- David Busse
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-01
|
18
|
+
date: 2011-02-01 00:00:00 -06:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|