ds_hash 0.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.
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: []