ds_hash 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +15 -0
  2. data/Gemfile +15 -0
  3. data/Gemfile.lock +71 -0
  4. data/LICENSE.txt +20 -0
  5. data/README.rdoc +43 -0
  6. data/Rakefile +50 -0
  7. data/VERSION +1 -0
  8. data/doc/DsHash.html +169 -0
  9. data/doc/Gemfile.html +111 -0
  10. data/doc/Gemfile_lock.html +170 -0
  11. data/doc/Hash.html +266 -0
  12. data/doc/LICENSE_txt.html +115 -0
  13. data/doc/README_rdoc.html +138 -0
  14. data/doc/Rakefile.html +151 -0
  15. data/doc/created.rid +15 -0
  16. data/doc/doc/created_rid.html +95 -0
  17. data/doc/images/add.png +0 -0
  18. data/doc/images/arrow_up.png +0 -0
  19. data/doc/images/brick.png +0 -0
  20. data/doc/images/brick_link.png +0 -0
  21. data/doc/images/bug.png +0 -0
  22. data/doc/images/bullet_black.png +0 -0
  23. data/doc/images/bullet_toggle_minus.png +0 -0
  24. data/doc/images/bullet_toggle_plus.png +0 -0
  25. data/doc/images/date.png +0 -0
  26. data/doc/images/delete.png +0 -0
  27. data/doc/images/find.png +0 -0
  28. data/doc/images/loadingAnimation.gif +0 -0
  29. data/doc/images/macFFBgHack.png +0 -0
  30. data/doc/images/package.png +0 -0
  31. data/doc/images/page_green.png +0 -0
  32. data/doc/images/page_white_text.png +0 -0
  33. data/doc/images/page_white_width.png +0 -0
  34. data/doc/images/plugin.png +0 -0
  35. data/doc/images/ruby.png +0 -0
  36. data/doc/images/tag_blue.png +0 -0
  37. data/doc/images/tag_green.png +0 -0
  38. data/doc/images/transparent.png +0 -0
  39. data/doc/images/wrench.png +0 -0
  40. data/doc/images/wrench_orange.png +0 -0
  41. data/doc/images/zoom.png +0 -0
  42. data/doc/index.html +92 -0
  43. data/doc/js/darkfish.js +155 -0
  44. data/doc/js/jquery.js +18 -0
  45. data/doc/js/navigation.js +142 -0
  46. data/doc/js/search.js +94 -0
  47. data/doc/js/search_index.js +1 -0
  48. data/doc/js/searcher.js +228 -0
  49. data/doc/rdoc.css +595 -0
  50. data/doc/table_of_contents.html +84 -0
  51. data/ds_hash.gemspec +106 -0
  52. data/ds_hash.rb +6 -0
  53. data/lib/ds_hash/hash_core_ext.rb +31 -0
  54. data/lib/ds_hash.rb +6 -0
  55. data/spec/ds_hash_spec.rb +28 -0
  56. data/spec/spec_helper.rb +14 -0
  57. metadata +170 -0
data/ds_hash.gemspec ADDED
@@ -0,0 +1,106 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "ds_hash"
8
+ s.version = "0.0.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["nardele salomon"]
12
+ s.date = "2013-12-02"
13
+ s.description = "Hash class extensions"
14
+ s.email = "noliveira@telelistas.net"
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ "Gemfile",
21
+ "Gemfile.lock",
22
+ "LICENSE.txt",
23
+ "README.rdoc",
24
+ "Rakefile",
25
+ "VERSION",
26
+ "doc/DsHash.html",
27
+ "doc/Gemfile.html",
28
+ "doc/Gemfile_lock.html",
29
+ "doc/Hash.html",
30
+ "doc/LICENSE_txt.html",
31
+ "doc/README_rdoc.html",
32
+ "doc/Rakefile.html",
33
+ "doc/created.rid",
34
+ "doc/doc/created_rid.html",
35
+ "doc/images/add.png",
36
+ "doc/images/arrow_up.png",
37
+ "doc/images/brick.png",
38
+ "doc/images/brick_link.png",
39
+ "doc/images/bug.png",
40
+ "doc/images/bullet_black.png",
41
+ "doc/images/bullet_toggle_minus.png",
42
+ "doc/images/bullet_toggle_plus.png",
43
+ "doc/images/date.png",
44
+ "doc/images/delete.png",
45
+ "doc/images/find.png",
46
+ "doc/images/loadingAnimation.gif",
47
+ "doc/images/macFFBgHack.png",
48
+ "doc/images/package.png",
49
+ "doc/images/page_green.png",
50
+ "doc/images/page_white_text.png",
51
+ "doc/images/page_white_width.png",
52
+ "doc/images/plugin.png",
53
+ "doc/images/ruby.png",
54
+ "doc/images/tag_blue.png",
55
+ "doc/images/tag_green.png",
56
+ "doc/images/transparent.png",
57
+ "doc/images/wrench.png",
58
+ "doc/images/wrench_orange.png",
59
+ "doc/images/zoom.png",
60
+ "doc/index.html",
61
+ "doc/js/darkfish.js",
62
+ "doc/js/jquery.js",
63
+ "doc/js/navigation.js",
64
+ "doc/js/search.js",
65
+ "doc/js/search_index.js",
66
+ "doc/js/searcher.js",
67
+ "doc/rdoc.css",
68
+ "doc/table_of_contents.html",
69
+ "ds_hash.gemspec",
70
+ "ds_hash.rb",
71
+ "lib/ds_hash.rb",
72
+ "lib/ds_hash/hash_core_ext.rb",
73
+ "spec/ds_hash_spec.rb",
74
+ "spec/spec_helper.rb"
75
+ ]
76
+ s.homepage = "http://github.com/del.soft.99@gmail.com/ds_hash"
77
+ s.licenses = ["MIT"]
78
+ s.require_paths = ["lib"]
79
+ s.rubygems_version = "2.0.3"
80
+ s.summary = "Hash class extensions"
81
+
82
+ if s.respond_to? :specification_version then
83
+ s.specification_version = 4
84
+
85
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
86
+ s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
87
+ s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
88
+ s.add_development_dependency(%q<bundler>, ["~> 1.0"])
89
+ s.add_development_dependency(%q<jeweler>, ["~> 1.8.7"])
90
+ s.add_development_dependency(%q<debugger>, [">= 0"])
91
+ else
92
+ s.add_dependency(%q<rspec>, ["~> 2.8.0"])
93
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
94
+ s.add_dependency(%q<bundler>, ["~> 1.0"])
95
+ s.add_dependency(%q<jeweler>, ["~> 1.8.7"])
96
+ s.add_dependency(%q<debugger>, [">= 0"])
97
+ end
98
+ else
99
+ s.add_dependency(%q<rspec>, ["~> 2.8.0"])
100
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
101
+ s.add_dependency(%q<bundler>, ["~> 1.0"])
102
+ s.add_dependency(%q<jeweler>, ["~> 1.8.7"])
103
+ s.add_dependency(%q<debugger>, [">= 0"])
104
+ end
105
+ end
106
+
data/ds_hash.rb ADDED
@@ -0,0 +1,6 @@
1
+ require 'ds_hash/version'
2
+ require 'ds_hash/hash_core_ext'
3
+
4
+ module DsHash
5
+
6
+ end
@@ -0,0 +1,31 @@
1
+
2
+ class Hash
3
+
4
+ ##
5
+ # :method: deep_dup
6
+ # Returns a deep copy of hash. like rails active support
7
+
8
+ define_method 'deep_dup' do
9
+ duplicate = self.dup
10
+ duplicate.each_pair do |k,v|
11
+ tv = duplicate[k]
12
+ duplicate[k] = tv.is_a?(Hash) && v.is_a?(Hash) ? tv.deep_dup : v
13
+ end
14
+ duplicate
15
+ end unless self.method_defined? 'deep_dup'
16
+
17
+ ##
18
+ # self remove all empty values and/or keys
19
+ def compact! compact_key=true
20
+ deep_swap_proc = Proc.new { |k, v| v.delete_if(&deep_swap_proc) if v.kind_of?(Hash); v.to_s.empty? || (compact_key && k.to_s.empty? ) }
21
+ delete_if &deep_swap_proc
22
+ end
23
+
24
+ ##
25
+ # remove all empty values and/or keys of hash
26
+ def compact compact_key=true
27
+ hsh = self.deep_dup
28
+ hsh.compact! compact_key
29
+ end
30
+
31
+ end
data/lib/ds_hash.rb ADDED
@@ -0,0 +1,6 @@
1
+ require 'ds_hash/version'
2
+ require 'ds_hash/hash_core_ext'
3
+
4
+ module DsHash
5
+
6
+ end
@@ -0,0 +1,28 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "DsHash" do
4
+
5
+ let(:hash_clean_values){
6
+ { a: { b: 1, c: { d: 2 } }, g: 3 }
7
+ }
8
+
9
+ let(:hash_with_empty_values) {
10
+ { a: { b: 1, c: { d: 2, e: nil}, f: nil }, g: 3, h: nil }
11
+ }
12
+
13
+ let(:hash_deep_dup) { hash_clean_values.deep_dup }
14
+
15
+ it "#compact" do
16
+ hash_with_empty_values.compact.should eq hash_clean_values
17
+ end
18
+
19
+ it "#compact!" do
20
+ hash_with_empty_values.compact!.should eq hash_clean_values
21
+ end
22
+
23
+ context "#deep_dup" do
24
+ it { hash_deep_dup.should eq hash_clean_values }
25
+ it { hash_deep_dup.object_id.should_not eq hash_clean_values.object_id }
26
+ end
27
+
28
+ end
@@ -0,0 +1,14 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+ require 'debugger'
4
+ # debugger
5
+ require 'rspec'
6
+ require 'ds_hash'
7
+
8
+ # Requires supporting files with custom matchers and macros, etc,
9
+ # in ./support/ and its subdirectories.
10
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
11
+
12
+ RSpec.configure do |config|
13
+
14
+ end
metadata ADDED
@@ -0,0 +1,170 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ds_hash
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - nardele salomon
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-12-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rspec
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 2.8.0
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 2.8.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: rdoc
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '3.12'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '3.12'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '1.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '1.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: jeweler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 1.8.7
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: 1.8.7
69
+ - !ruby/object:Gem::Dependency
70
+ name: debugger
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ! '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: Hash class extensions
84
+ email: noliveira@telelistas.net
85
+ executables: []
86
+ extensions: []
87
+ extra_rdoc_files:
88
+ - LICENSE.txt
89
+ - README.rdoc
90
+ files:
91
+ - Gemfile
92
+ - Gemfile.lock
93
+ - LICENSE.txt
94
+ - README.rdoc
95
+ - Rakefile
96
+ - VERSION
97
+ - doc/DsHash.html
98
+ - doc/Gemfile.html
99
+ - doc/Gemfile_lock.html
100
+ - doc/Hash.html
101
+ - doc/LICENSE_txt.html
102
+ - doc/README_rdoc.html
103
+ - doc/Rakefile.html
104
+ - doc/created.rid
105
+ - doc/doc/created_rid.html
106
+ - doc/images/add.png
107
+ - doc/images/arrow_up.png
108
+ - doc/images/brick.png
109
+ - doc/images/brick_link.png
110
+ - doc/images/bug.png
111
+ - doc/images/bullet_black.png
112
+ - doc/images/bullet_toggle_minus.png
113
+ - doc/images/bullet_toggle_plus.png
114
+ - doc/images/date.png
115
+ - doc/images/delete.png
116
+ - doc/images/find.png
117
+ - doc/images/loadingAnimation.gif
118
+ - doc/images/macFFBgHack.png
119
+ - doc/images/package.png
120
+ - doc/images/page_green.png
121
+ - doc/images/page_white_text.png
122
+ - doc/images/page_white_width.png
123
+ - doc/images/plugin.png
124
+ - doc/images/ruby.png
125
+ - doc/images/tag_blue.png
126
+ - doc/images/tag_green.png
127
+ - doc/images/transparent.png
128
+ - doc/images/wrench.png
129
+ - doc/images/wrench_orange.png
130
+ - doc/images/zoom.png
131
+ - doc/index.html
132
+ - doc/js/darkfish.js
133
+ - doc/js/jquery.js
134
+ - doc/js/navigation.js
135
+ - doc/js/search.js
136
+ - doc/js/search_index.js
137
+ - doc/js/searcher.js
138
+ - doc/rdoc.css
139
+ - doc/table_of_contents.html
140
+ - ds_hash.gemspec
141
+ - ds_hash.rb
142
+ - lib/ds_hash.rb
143
+ - lib/ds_hash/hash_core_ext.rb
144
+ - spec/ds_hash_spec.rb
145
+ - spec/spec_helper.rb
146
+ homepage: http://github.com/del.soft.99@gmail.com/ds_hash
147
+ licenses:
148
+ - MIT
149
+ metadata: {}
150
+ post_install_message:
151
+ rdoc_options: []
152
+ require_paths:
153
+ - lib
154
+ required_ruby_version: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ! '>='
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ required_rubygems_version: !ruby/object:Gem::Requirement
160
+ requirements:
161
+ - - ! '>='
162
+ - !ruby/object:Gem::Version
163
+ version: '0'
164
+ requirements: []
165
+ rubyforge_project:
166
+ rubygems_version: 2.0.3
167
+ signing_key:
168
+ specification_version: 4
169
+ summary: Hash class extensions
170
+ test_files: []