active_tools 0.0.1 → 0.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.
@@ -1,10 +1,10 @@
1
1
  module ActiveTools
2
- module ActionPack
3
- module ActionView
4
- module AltRendering
5
-
6
-
7
- end
8
- end
9
- end
2
+ module ActionPack
3
+ module ActionView
4
+ module AltRendering
5
+
6
+
7
+ end
8
+ end
9
+ end
10
10
  end
@@ -1,9 +1,9 @@
1
1
  require 'active_tools/actionpack/action_view/alt_rendering'
2
2
 
3
3
  module ActiveTools
4
- module ActionPack
5
- module ActionView
4
+ module ActionPack
5
+ module ActionView
6
6
 
7
- end
8
- end
7
+ end
8
+ end
9
9
  end
@@ -1,7 +1,7 @@
1
1
  require 'active_tools/actionpack/action_view'
2
2
 
3
3
  module ActiveTools
4
- module ActionPack
4
+ module ActionPack
5
5
 
6
- end
6
+ end
7
7
  end
@@ -0,0 +1,6 @@
1
+ module ActiveTools
2
+ module ActiveSupport
3
+
4
+
5
+ end
6
+ end
@@ -1,4 +1,6 @@
1
+ require 'active_tools/core_extension'
1
2
  require 'active_tools/actionpack'
3
+ require 'active_tools/activesupport'
2
4
 
3
5
  module ActiveTools
4
6
 
@@ -0,0 +1,51 @@
1
+ module ActiveTools
2
+ module CoreExtension
3
+
4
+ module DeepCopy
5
+ # Return the 'deep' brand new copy of Hash, Array or Set. All nested hashes/arrays/sets rebuilded at the same way.
6
+
7
+ module Hash
8
+ def deep_copy(&block)
9
+ self.class.new.tap do |new_hash|
10
+ each do |k, v|
11
+ new_hash[k] = case v
12
+ when Hash, Array, Set then v.deep_copy(&block)
13
+ else
14
+ block_given? ? yield(v) : v.dup rescue v
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+
21
+ module Array
22
+ def deep_copy(&block)
23
+ self.class.new.tap do |new_array|
24
+ each do |v|
25
+ new_array << case v
26
+ when Hash, Array, Set then v.deep_copy(&block)
27
+ else
28
+ block_given? ? yield(v) : v.dup rescue v
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+
35
+ module Set
36
+ def deep_copy(&block)
37
+ self.class.new.tap do |new_set|
38
+ each do |v|
39
+ new_set << case v
40
+ when Hash, Array, Set then v.deep_copy(&block)
41
+ else
42
+ block_given? ? yield(v) : v.dup rescue v
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,35 @@
1
+ module ActiveTools
2
+ module CoreExtension
3
+
4
+ module DeepMerge
5
+
6
+ module Hash
7
+ # Return the merged Hash with another +hash+, where the possible child hashes are also merged.
8
+ #
9
+ # === Example:
10
+ #
11
+ # h1 = {:breakfast => {:eggs => 2, :bread => 1}, :lunch => {:steak => 1, :salad => 1}}
12
+ # h2 = {:breakfast => {:coffee => :espresso, :juice => 1}, :lunch => {:tea => 2}, :dinner => :none}
13
+ # h1.deep_merge(h2)
14
+ # #=> {:breakfast=>{:eggs=>2, :bread=>1, :coffee=>:espresso, :juice=>1}, :lunch=>{:steak=>1, :salad=>1, :tea=>2}, :dinner=>:none}
15
+ def deep_merge(other_hash = {})
16
+ dup.tap do |hash|
17
+ other_hash.each do |key, value|
18
+ if !hash.has_key?(key) || !hash[key].is_a?(Hash)
19
+ hash[key] = value
20
+ elsif hash[key].is_a?(Hash) && value.is_a?(Hash)
21
+ hash[key].deep_merge!(value)
22
+ end
23
+ end
24
+ end
25
+ end
26
+
27
+ # .nested_merge replaces the source hash.
28
+ def deep_merge!(other_hash = {})
29
+ replace(deep_merge(other_hash))
30
+ end
31
+ end
32
+
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,28 @@
1
+ module ActiveTools
2
+ module CoreExtension
3
+
4
+ module Hashup
5
+ module Array
6
+ # Return a nested Hash object from Array's elements sequence, where elements used as names of +hash+ keys.
7
+ # The last element of array would be the last nested value.
8
+ #
9
+ # === Example:
10
+ #
11
+ # [:vehicle, :car, :ford, :mustang, "2 please"].hashup
12
+ #
13
+ # #=> {:vehicle=>{:car=>{:ford=>{:mustang=>"2 please"}}}}
14
+ def hashup
15
+ raise(Exception, "At least 2 elements needed!") if size < 2
16
+ value = delete_at(-1)
17
+ {}.tap do |hash|
18
+ index = 0
19
+ while index < size
20
+ hash = hash[at(index)] = (index + 1 == size) ? value : {}
21
+ index += 1
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,28 @@
1
+ # dependent on deep_merge and deep_copy
2
+
3
+ module ActiveTools
4
+ module CoreExtension
5
+
6
+ module MergeHashup
7
+ module Hash
8
+ # Merge hashup sequence.
9
+ #
10
+ # === Example:
11
+ #
12
+ # params = {"controller"=>"comments", "action"=>"show", "id"=>34, "article_id"=>3, "page"=>{"article"=>2}}
13
+ #
14
+ # params.merge_hashup(:page, :article, 34)
15
+ # # => {:controller => "comments", :action => "show", :id => 34, :article_id => 3, :page => {:article => 2, :comment => 34}}
16
+ #
17
+ def merge_hashup(*args)
18
+ deep_merge(args.hashup)
19
+ end
20
+
21
+ def merge_hashup!(*args)
22
+ deep_merge!(args.hashup)
23
+ end
24
+
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,30 @@
1
+ require 'active_tools/core_extension/deep_copy'
2
+ require 'active_tools/core_extension/deep_merge'
3
+ require 'active_tools/core_extension/hashup'
4
+ require 'active_tools/core_extension/merge_hashup'
5
+
6
+ module ActiveTools
7
+ module CoreExtension
8
+
9
+ module HashExtension
10
+ include DeepCopy::Hash
11
+ include DeepMerge::Hash
12
+ include MergeHashup::Hash
13
+ end
14
+
15
+ module ArrayExtension
16
+ include DeepCopy::Array
17
+ include Hashup::Array
18
+ end
19
+
20
+ module SetExtension
21
+ include DeepCopy::Set
22
+ end
23
+
24
+ ::Hash.send(:include, HashExtension)
25
+ ::Array.send(:include, ArrayExtension)
26
+ ::Set.send(:include, SetExtension)
27
+
28
+ end
29
+
30
+ end
@@ -4,11 +4,11 @@ require 'active_tools/bundle'
4
4
  module ActiveTools
5
5
  class Railtie < ::Rails::Railtie
6
6
  config.before_initialize do
7
- ActiveSupport.on_load :active_record do
7
+ ::ActiveSupport.on_load :active_record do
8
8
  end
9
- ActiveSupport.on_load :action_controller do
9
+ ::ActiveSupport.on_load :action_controller do
10
10
  end
11
- ActiveSupport.on_load :action_view do
11
+ ::ActiveSupport.on_load :action_view do
12
12
  end
13
13
  end
14
14
 
@@ -1,3 +1,3 @@
1
1
  module ActiveTools
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-15 00:00:00.000000000 Z
12
+ date: 2013-01-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -44,7 +44,13 @@ files:
44
44
  - lib/active_tools/actionpack.rb
45
45
  - lib/active_tools/actionpack/action_view.rb
46
46
  - lib/active_tools/actionpack/action_view/alt_rendering.rb
47
+ - lib/active_tools/activesupport.rb
47
48
  - lib/active_tools/bundle.rb
49
+ - lib/active_tools/core_extension.rb
50
+ - lib/active_tools/core_extension/deep_copy.rb
51
+ - lib/active_tools/core_extension/deep_merge.rb
52
+ - lib/active_tools/core_extension/hashup.rb
53
+ - lib/active_tools/core_extension/merge_hashup.rb
48
54
  - lib/active_tools/engine.rb
49
55
  - lib/active_tools/railtie.rb
50
56
  - lib/active_tools/version.rb