hash-utils 0.10.0 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -8,4 +8,5 @@ source "http://rubygems.org"
8
8
  group :development do
9
9
  gem "bundler", "~> 1.0.0"
10
10
  gem "jeweler", "~> 1.5.2"
11
+ gem "riot", ">= 0.12.1"
11
12
  end
data/Gemfile.lock CHANGED
@@ -7,6 +7,11 @@ GEM
7
7
  git (>= 1.2.5)
8
8
  rake
9
9
  rake (0.8.7)
10
+ riot (0.12.1)
11
+ rr
12
+ term-ansicolor
13
+ rr (1.0.2)
14
+ term-ansicolor (1.0.5)
10
15
 
11
16
  PLATFORMS
12
17
  ruby
@@ -14,3 +19,4 @@ PLATFORMS
14
19
  DEPENDENCIES
15
20
  bundler (~> 1.0.0)
16
21
  jeweler (~> 1.5.2)
22
+ riot (>= 0.12.1)
data/TODO.txt CHANGED
@@ -1,3 +1,4 @@
1
1
  * add examples to each call
2
2
  * puts list of methods directly to readme for each class
3
3
  * changes list
4
+ * write riot tests
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.10.0
1
+ 0.11.0
data/hash-utils.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{hash-utils}
8
- s.version = "0.10.0"
8
+ s.version = "0.11.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Martin Kozák"]
12
- s.date = %q{2011-02-23}
12
+ s.date = %q{2011-03-01}
13
13
  s.email = %q{martinkozak@martinkozak.net}
14
14
  s.extra_rdoc_files = [
15
15
  "LICENSE.txt",
@@ -27,6 +27,7 @@ Gem::Specification.new do |s|
27
27
  "hash-utils.gemspec",
28
28
  "lib/hash-utils.rb",
29
29
  "lib/hash-utils/array.rb",
30
+ "lib/hash-utils/file.rb",
30
31
  "lib/hash-utils/hash.rb",
31
32
  "lib/hash-utils/numeric.rb",
32
33
  "lib/hash-utils/object.rb",
@@ -44,7 +45,7 @@ to Ruby's one.
44
45
 
45
46
  }
46
47
  s.require_paths = ["lib"]
47
- s.rubygems_version = %q{1.5.2}
48
+ s.rubygems_version = %q{1.5.3}
48
49
  s.summary = %q{Adds a lot of useful fundamental utility methods which are missing in Ruby, both to Array and Hash classes and introduces some useful methods and syntactic sugar to Object and String classes too.}
49
50
 
50
51
  if s.respond_to? :specification_version then
@@ -53,13 +54,16 @@ to Ruby's one.
53
54
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
54
55
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
55
56
  s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
57
+ s.add_development_dependency(%q<riot>, [">= 0.12.1"])
56
58
  else
57
59
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
58
60
  s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
61
+ s.add_dependency(%q<riot>, [">= 0.12.1"])
59
62
  end
60
63
  else
61
64
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
62
65
  s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
66
+ s.add_dependency(%q<riot>, [">= 0.12.1"])
63
67
  end
64
68
  end
65
69
 
data/lib/hash-utils.rb CHANGED
@@ -5,3 +5,4 @@ require "hash-utils/array"
5
5
  require "hash-utils/hash"
6
6
  require "hash-utils/string"
7
7
  require "hash-utils/object"
8
+ require "hash-utils/file"
@@ -0,0 +1,41 @@
1
+ # encoding: utf-8
2
+ # (c) 2011 Martin Kozák (martinkozak@martinkozak.net)
3
+
4
+ ##
5
+ # File extension.
6
+ # @since 0.11.0
7
+ #
8
+
9
+ class File
10
+
11
+ ##
12
+ # Writes data to file and closes it in single call.
13
+ #
14
+ # @param [String] filepath path to file
15
+ # @param [String] data data for write
16
+ # @return [Integer] length of really written data
17
+ # @since 0.11.0
18
+ #
19
+
20
+ def self.write(filepath, data = "")
21
+ len = nil
22
+ File.open(filepath, "w") do |io|
23
+ len = io.write(data)
24
+ end
25
+ return len
26
+ end
27
+
28
+ ##
29
+ # Creates file with zero size and closes it. (In fact, +touch+ is
30
+ # usually used for it.)
31
+ #
32
+ # @param [String] file filepath path for create
33
+ # @since 0.11.0
34
+ #
35
+
36
+ def self.touch(filepath)
37
+ File.open(filepath, "w").close()
38
+ end
39
+
40
+ end
41
+
@@ -186,6 +186,38 @@ class Hash
186
186
 
187
187
  alias :collect_keys! :map_keys!
188
188
 
189
+ ##
190
+ # Returns a new hash with the results of running block once for
191
+ # every value in +self+.
192
+ #
193
+ # @param [Proc] block evaluating block
194
+ # @return [Hash] new hash
195
+ # @since 0.11.0
196
+ #
197
+
198
+ def map_values(&block)
199
+ self.map_pairs do |k, v|
200
+ [k, block.call(v)]
201
+ end
202
+ end
203
+
204
+ alias :collect_values :map_values
205
+
206
+ ##
207
+ # Emulates {#map_values} on place. In fact, replaces old hash by
208
+ # new one.
209
+ #
210
+ # @param [Proc] block evaluating block
211
+ # @return [Hash] new hash
212
+ # @since 0.11.0
213
+ #
214
+
215
+ def map_values!(&block)
216
+ self.replace(self.map_values(&block))
217
+ end
218
+
219
+ alias :collect_values! :map_values!
220
+
189
221
  ##
190
222
  # Converts all keys to symbols.
191
223
  #
@@ -190,6 +190,34 @@ class String
190
190
  self
191
191
  end
192
192
 
193
+ ##
194
+ # Returns first character of the string.
195
+ #
196
+ # @example
197
+ # "abc".first # will return 'a'
198
+ #
199
+ # @return [String] first character
200
+ # @since 0.11.0
201
+ #
202
+
203
+ def first
204
+ self[0].chr
205
+ end
206
+
207
+ ##
208
+ # Returns last character of the string.
209
+ #
210
+ # @example
211
+ # "abc".last # will return 'c'
212
+ #
213
+ # @return [String] last character
214
+ # @since 0.11.0
215
+ #
216
+
217
+ def last
218
+ self[-1].chr
219
+ end
220
+
193
221
 
194
222
 
195
223
  private
data/test CHANGED
@@ -1,6 +1,46 @@
1
1
  #!/usr/bin/ruby
2
+ # encoding: utf-8
3
+ # (c) 2011 Martin Kozák (martinkozak@martinkozak.net)
2
4
 
3
5
  $:.push("./lib")
4
- require "hash-utils/hash"
6
+ require "hash-utils"
7
+ require "riot"
5
8
 
6
- puts Hash::combine([:a, :b, :c], [1, 2, 3]).inspect
9
+
10
+ ## FILE
11
+
12
+ context "File#touch" do
13
+ setup { File.touch("./~test") }
14
+ asserts("correctness") { File.exists? "./~test" }
15
+ teardown { File.unlink("./~test") }
16
+ end
17
+
18
+ context "File#write" do
19
+ setup { File.write("./~test", "some string") }
20
+ asserts("correctness") { File.read("./~test") == "some string" }
21
+ teardown { File.unlink("./~test") }
22
+ end
23
+
24
+ ## HASH
25
+
26
+ context "Hash#map_values" do
27
+ setup { {:a => 1, :b => 2 }.map_values { |i| i + 1 } }
28
+ asserts("correctness") { topic == { :a => 2, :b => 3 } }
29
+ end
30
+
31
+ context "Hash#map_values!" do
32
+ setup { {:a => 1, :b => 2 }.map_values! { |i| i + 1 } }
33
+ asserts("correctness") { topic == { :a => 2, :b => 3 } }
34
+ end
35
+
36
+ ## STRING
37
+
38
+ context "String#first" do
39
+ setup { "abc".first }
40
+ asserts("correctness") { topic == ?a }
41
+ end
42
+
43
+ context "String#last" do
44
+ setup { "abc".last }
45
+ asserts("correctness") { topic == ?c }
46
+ end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: hash-utils
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.10.0
5
+ version: 0.11.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - "Martin Koz\xC3\xA1k"
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-02-23 00:00:00 +01:00
13
+ date: 2011-03-01 00:00:00 +01:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -35,6 +35,17 @@ dependencies:
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: *id002
38
+ - !ruby/object:Gem::Dependency
39
+ name: riot
40
+ requirement: &id003 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: 0.12.1
46
+ type: :development
47
+ prerelease: false
48
+ version_requirements: *id003
38
49
  description:
39
50
  email: martinkozak@martinkozak.net
40
51
  executables: []
@@ -56,6 +67,7 @@ files:
56
67
  - hash-utils.gemspec
57
68
  - lib/hash-utils.rb
58
69
  - lib/hash-utils/array.rb
70
+ - lib/hash-utils/file.rb
59
71
  - lib/hash-utils/hash.rb
60
72
  - lib/hash-utils/numeric.rb
61
73
  - lib/hash-utils/object.rb
@@ -80,7 +92,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
80
92
  requirements:
81
93
  - - ">="
82
94
  - !ruby/object:Gem::Version
83
- hash: 1122397568412292267
95
+ hash: -2170088685788835511
84
96
  segments:
85
97
  - 0
86
98
  version: "0"
@@ -93,7 +105,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
93
105
  requirements: []
94
106
 
95
107
  rubyforge_project:
96
- rubygems_version: 1.5.2
108
+ rubygems_version: 1.5.3
97
109
  signing_key:
98
110
  specification_version: 3
99
111
  summary: Adds a lot of useful fundamental utility methods which are missing in Ruby, both to Array and Hash classes and introduces some useful methods and syntactic sugar to Object and String classes too.