hash-utils 1.0.0 → 2.0.0
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/CHANGES.txt +8 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +2 -5
- data/LICENSE.txt +1 -1
- data/README.md +3 -3
- data/Rakefile +3 -4
- data/VERSION +1 -1
- data/hash-utils.gemspec +8 -8
- data/lib/hash-utils/array.rb +120 -92
- data/lib/hash-utils/boolean.rb +43 -21
- data/lib/hash-utils/file.rb +61 -43
- data/lib/hash-utils/gem.rb +16 -12
- data/lib/hash-utils/hash.rb +306 -264
- data/lib/hash-utils/io.rb +7 -3
- data/lib/hash-utils/module.rb +14 -10
- data/lib/hash-utils/nil.rb +7 -3
- data/lib/hash-utils/numeric.rb +26 -12
- data/lib/hash-utils/object.rb +165 -52
- data/lib/hash-utils/proc.rb +7 -3
- data/lib/hash-utils/string.rb +289 -173
- data/lib/hash-utils/stringio.rb +7 -3
- data/lib/hash-utils/symbol.rb +47 -24
- data/test +7 -1
- metadata +20 -22
data/lib/hash-utils/stringio.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
# (c) 2011 Martin Kozák (martinkozak@martinkozak.net)
|
2
|
+
# (c) 2011-2012 Martin Kozák (martinkozak@martinkozak.net)
|
3
|
+
|
4
|
+
require "hash-utils/object"
|
3
5
|
|
4
6
|
##
|
5
7
|
# StringIO extension.
|
@@ -14,8 +16,10 @@ class StringIO < Data
|
|
14
16
|
# @since 0.14.0
|
15
17
|
#
|
16
18
|
|
17
|
-
|
18
|
-
|
19
|
+
if not self.__hash_utils_instance_respond_to? :io?
|
20
|
+
def io?
|
21
|
+
true
|
22
|
+
end
|
19
23
|
end
|
20
24
|
|
21
25
|
end
|
data/lib/hash-utils/symbol.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
# (c) 2011 Martin Kozák (martinkozak@martinkozak.net)
|
2
|
+
# (c) 2011-2012 Martin Kozák (martinkozak@martinkozak.net)
|
3
3
|
|
4
4
|
require "hash-utils/object"
|
5
5
|
|
@@ -17,8 +17,10 @@ class Symbol
|
|
17
17
|
# @since 0.12.0
|
18
18
|
#
|
19
19
|
|
20
|
-
|
21
|
-
|
20
|
+
if not self.__hash_utils_instance_respond_to? :*
|
21
|
+
def *(multi)
|
22
|
+
(self.to_s * multi).to_sym
|
23
|
+
end
|
22
24
|
end
|
23
25
|
|
24
26
|
##
|
@@ -30,11 +32,15 @@ class Symbol
|
|
30
32
|
# @since 0.12.0
|
31
33
|
#
|
32
34
|
|
33
|
-
|
34
|
-
|
35
|
+
if not self.__hash_utils_instance_respond_to? :+
|
36
|
+
def +(other_str)
|
37
|
+
(self.to_s + other_str.to_s).to_sym
|
38
|
+
end
|
35
39
|
end
|
36
40
|
|
37
|
-
|
41
|
+
if not self.__hash_utils_instance_respond_to? :concat
|
42
|
+
alias :concat :+
|
43
|
+
end
|
38
44
|
|
39
45
|
##
|
40
46
|
# Works by the same way as +String#slice on +Symbol+.
|
@@ -44,11 +50,16 @@ class Symbol
|
|
44
50
|
# @since 0.12.0
|
45
51
|
#
|
46
52
|
|
47
|
-
|
48
|
-
|
53
|
+
if not self.__hash_utils_instance_respond_to? :[]
|
54
|
+
def [](*args)
|
55
|
+
self.to_s[*args]
|
56
|
+
end
|
49
57
|
end
|
50
58
|
|
51
|
-
|
59
|
+
|
60
|
+
if not self.__hash_utils_instance_respond_to? :slice
|
61
|
+
alias :slice :[]
|
62
|
+
end
|
52
63
|
|
53
64
|
##
|
54
65
|
# Returns true if +Symbol+ starts with a prefix given.
|
@@ -58,8 +69,10 @@ class Symbol
|
|
58
69
|
# @since 0.12.0
|
59
70
|
#
|
60
71
|
|
61
|
-
|
62
|
-
|
72
|
+
if not self.__hash_utils_instance_respond_to? :start_with?
|
73
|
+
def start_with?(*prefix)
|
74
|
+
self.to_s.start_with?(*prefix)
|
75
|
+
end
|
63
76
|
end
|
64
77
|
|
65
78
|
##
|
@@ -70,8 +83,10 @@ class Symbol
|
|
70
83
|
# @since 0.12.0
|
71
84
|
#
|
72
85
|
|
73
|
-
|
74
|
-
|
86
|
+
if not self.__hash_utils_instance_respond_to? :end_with?
|
87
|
+
def end_with?(*suffix)
|
88
|
+
self.to_s.end_with?(*suffix)
|
89
|
+
end
|
75
90
|
end
|
76
91
|
|
77
92
|
##
|
@@ -82,9 +97,11 @@ class Symbol
|
|
82
97
|
# @since 0.13.0
|
83
98
|
#
|
84
99
|
|
85
|
-
|
86
|
-
(
|
87
|
-
|
100
|
+
if not self.__hash_utils_instance_respond_to? :append
|
101
|
+
def append(string)
|
102
|
+
(self.to_s << string.to_s).to_sym
|
103
|
+
end
|
104
|
+
end
|
88
105
|
|
89
106
|
##
|
90
107
|
# Puts content to begin of symbol and returns new symbol.
|
@@ -94,9 +111,11 @@ class Symbol
|
|
94
111
|
# @since 0.13.0
|
95
112
|
#
|
96
113
|
|
97
|
-
|
98
|
-
(string
|
99
|
-
|
114
|
+
if not self.__hash_utils_instance_respond_to? :prepend
|
115
|
+
def prepend(string)
|
116
|
+
(string.to_s + self.to_s).to_sym
|
117
|
+
end
|
118
|
+
end
|
100
119
|
|
101
120
|
##
|
102
121
|
# Splits symbol to more.
|
@@ -106,9 +125,11 @@ class Symbol
|
|
106
125
|
# @since 0.15.0
|
107
126
|
#
|
108
127
|
|
109
|
-
|
110
|
-
|
111
|
-
i
|
128
|
+
if not self.__hash_utils_instance_respond_to? :split
|
129
|
+
def split(separator = " ", count = 0)
|
130
|
+
self.to_s.split(separator, count).map! do |i|
|
131
|
+
i.to_sym
|
132
|
+
end
|
112
133
|
end
|
113
134
|
end
|
114
135
|
|
@@ -121,8 +142,10 @@ class Symbol
|
|
121
142
|
# @since 0.17.0
|
122
143
|
#
|
123
144
|
|
124
|
-
|
125
|
-
|
145
|
+
if not self.__hash_utils_instance_respond_to? :strip
|
146
|
+
def strip
|
147
|
+
self.to_s.strip!.to_sym
|
148
|
+
end
|
126
149
|
end
|
127
150
|
|
128
151
|
end
|
data/test
CHANGED
@@ -52,12 +52,15 @@ context "Array" do
|
|
52
52
|
end
|
53
53
|
asserts("#clean!") do
|
54
54
|
t = [1, nil]
|
55
|
-
t.clean(1)
|
55
|
+
t.clean!(1)
|
56
56
|
t == [nil]
|
57
57
|
end
|
58
58
|
asserts("#sum") do
|
59
59
|
[1, 2, 3].sum == 6
|
60
60
|
end
|
61
|
+
asserts("#to_set") do
|
62
|
+
[1, 2, 3].to_set == Set::new([1, 2, 3])
|
63
|
+
end
|
61
64
|
end
|
62
65
|
|
63
66
|
## FALSECLASS
|
@@ -316,6 +319,9 @@ context "Object" do
|
|
316
319
|
asserts("#to_b") do
|
317
320
|
(nil.to_b === false) and ("ab".to_b === true)
|
318
321
|
end
|
322
|
+
asserts("#to_sym") do
|
323
|
+
(nil.to_sym === :"") and ("ab".to_sym === :ab) and (12.to_sym == :"12")
|
324
|
+
end
|
319
325
|
asserts("#true?") do
|
320
326
|
(true.true? == true) and ("string".true? == false)
|
321
327
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hash-utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-03-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ruby-version
|
16
|
-
requirement: &
|
16
|
+
requirement: &22439060 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *22439060
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: bundler
|
27
|
-
requirement: &
|
27
|
+
requirement: &22434460 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,21 +32,21 @@ dependencies:
|
|
32
32
|
version: 1.0.0
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *22434460
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
|
-
name:
|
38
|
-
requirement: &
|
37
|
+
name: jeweler2
|
38
|
+
requirement: &22431720 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version:
|
43
|
+
version: 2.0.0
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *22431720
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: riot
|
49
|
-
requirement: &
|
49
|
+
requirement: &22448700 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: 0.12.3
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *22448700
|
58
58
|
description:
|
59
59
|
email: martinkozak@martinkozak.net
|
60
60
|
executables: []
|
@@ -92,13 +92,10 @@ files:
|
|
92
92
|
homepage: http://github.com/martinkozak/hash-utils
|
93
93
|
licenses:
|
94
94
|
- MIT
|
95
|
-
post_install_message: !
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
'
|
95
|
+
post_install_message: ! "\nHASH UTILS: The 2.0 version avoids the method overwriting
|
96
|
+
conflicts by not performing overwriting of already implemented methods. By this
|
97
|
+
way, it can damage your existing applications based on older versions although it's
|
98
|
+
very improbable. \n\n"
|
102
99
|
rdoc_options: []
|
103
100
|
require_paths:
|
104
101
|
- lib
|
@@ -110,7 +107,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
110
107
|
version: '0'
|
111
108
|
segments:
|
112
109
|
- 0
|
113
|
-
hash:
|
110
|
+
hash: -641600196593062307
|
114
111
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
115
112
|
none: false
|
116
113
|
requirements:
|
@@ -119,11 +116,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
119
116
|
version: '0'
|
120
117
|
requirements: []
|
121
118
|
rubyforge_project:
|
122
|
-
rubygems_version: 1.8.
|
119
|
+
rubygems_version: 1.8.17
|
123
120
|
signing_key:
|
124
121
|
specification_version: 3
|
125
122
|
summary: Adds more than 125 useful and frequently rather fundamental methods which
|
126
123
|
are missing in Ruby programming language, to Array, File, Hash, Module, Object,
|
127
124
|
String and Symbol classes. It tries to be similar project to Ruby Facets on principle,
|
128
|
-
but less complex, more practical, non-atomic and organized by better way.
|
125
|
+
but less complex, more practical, non-atomic and organized by better way. Thanks
|
126
|
+
to defensive and careful patching it should be compatible with all other libraries.
|
129
127
|
test_files: []
|