padrino-support 0.13.2 → 0.13.3
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.
- checksums.yaml +4 -4
- data/lib/padrino-support/core_ext/string/inflections.rb +8 -2
- data/lib/padrino-support/utils.rb +22 -0
- data/lib/padrino-support.rb +8 -2
- data/test/test_utils.rb +55 -0
- metadata +4 -10
- data/test/test_support_lite.rb +0 -50
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0c88111ca420a5a95a8bf0c0c7ebd212e89859c3
|
4
|
+
data.tar.gz: 7a2a53a88f1b373f81d25a3d63593d49eb8a6a42
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4f220b1467a288e99dc3cc80885888fe835d62e5890848b846685b1e328dfae63033f001308493baf1007cd1ca55cdbdd818d20cd75a25131b3b31ea9d2d42d0
|
7
|
+
data.tar.gz: bb7284c6acdd5cfea0148fe0bde3bd67a2b445eef9e8159f661001b7ac9e194c8541adf3b8d4ed512956dc5092c1a126c4393ff084f28d65ebd03f7c46dd3b69
|
@@ -99,8 +99,14 @@ class String
|
|
99
99
|
##
|
100
100
|
# Capitalizes the first word, turns underscores into spaces, and strips a trailing '_id' if present.
|
101
101
|
#
|
102
|
-
|
103
|
-
|
102
|
+
if ActiveSupport::Inflector.method(:humanize).arity == 1
|
103
|
+
def humanize
|
104
|
+
ActiveSupport::Inflector.humanize(self)
|
105
|
+
end
|
106
|
+
else
|
107
|
+
def humanize(options = {})
|
108
|
+
ActiveSupport::Inflector.humanize(self, options)
|
109
|
+
end
|
104
110
|
end
|
105
111
|
|
106
112
|
##
|
@@ -31,5 +31,27 @@ module Padrino
|
|
31
31
|
"#{CGI.escape(namespace.to_s)}=#{CGI.escape(object.to_s)}"
|
32
32
|
end
|
33
33
|
end
|
34
|
+
|
35
|
+
##
|
36
|
+
# Recursively duplicates the passed object.
|
37
|
+
#
|
38
|
+
def deep_dup(object)
|
39
|
+
case object
|
40
|
+
when Array
|
41
|
+
object.map{ |value| deep_dup(value) }
|
42
|
+
when Hash
|
43
|
+
object.each_with_object(object.dup.clear) do |(key, value), new_hash|
|
44
|
+
new_hash[deep_dup(key)] = deep_dup(value)
|
45
|
+
end
|
46
|
+
when NilClass, FalseClass, TrueClass, Symbol, Numeric, Method
|
47
|
+
object
|
48
|
+
else
|
49
|
+
begin
|
50
|
+
object.dup
|
51
|
+
rescue TypeError
|
52
|
+
object
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
34
56
|
end
|
35
57
|
end
|
data/lib/padrino-support.rb
CHANGED
@@ -3,14 +3,20 @@
|
|
3
3
|
#
|
4
4
|
require 'active_support/core_ext/hash/keys' # symbolize_keys
|
5
5
|
require 'active_support/core_ext/hash/indifferent_access' # params[:foo]
|
6
|
-
require 'active_support/core_ext/hash/slice' # slice
|
7
|
-
require 'active_support/core_ext/array/extract_options' # Array#extract_options!
|
8
6
|
require 'active_support/core_ext/object/blank' # present?
|
9
7
|
require 'active_support/core_ext/string/output_safety' # SafeBuffer and html_safe
|
10
8
|
|
11
9
|
# Remove these on 0.14:
|
12
10
|
require 'active_support/core_ext/hash/reverse_merge' # reverse_merge
|
13
11
|
require 'active_support/core_ext/module/aliasing' # alias_method_chain
|
12
|
+
require 'active_support/core_ext/array/extract_options' # Array#extract_options!
|
13
|
+
require 'active_support/core_ext/hash/slice' # slice
|
14
|
+
begin
|
15
|
+
require 'active_support/core_ext/object/deep_dup' # AS 4.1
|
16
|
+
rescue LoadError
|
17
|
+
require 'active_support/core_ext/hash/deep_dup' # AS >= 3.1
|
18
|
+
end
|
19
|
+
|
14
20
|
|
15
21
|
require 'padrino-support/core_ext/string/inflections'
|
16
22
|
require 'padrino-support/core_ext/string/colorize'
|
data/test/test_utils.rb
CHANGED
@@ -57,3 +57,58 @@ describe 'Padrino::Utils.build_uri_query' do
|
|
57
57
|
'user'
|
58
58
|
end
|
59
59
|
end
|
60
|
+
|
61
|
+
describe 'Padrino::Utils.deep_dup' do
|
62
|
+
it 'should recursively dup array' do
|
63
|
+
array = [1, [2, 3]]
|
64
|
+
dup = Padrino::Utils.deep_dup(array)
|
65
|
+
dup[1][2] = 4
|
66
|
+
assert_equal nil, array[1][2]
|
67
|
+
assert_equal 4, dup[1][2]
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'should recursively dup hash' do
|
71
|
+
hash = { :a => { :b => 'b' } }
|
72
|
+
dup = Padrino::Utils.deep_dup(hash)
|
73
|
+
dup[:a][:c] = 'c'
|
74
|
+
assert_equal nil, hash[:a][:c]
|
75
|
+
assert_equal 'c', dup[:a][:c]
|
76
|
+
end
|
77
|
+
|
78
|
+
it 'should recursively dup array with hash' do
|
79
|
+
array = [1, { :a => 2, :b => 3 } ]
|
80
|
+
dup = Padrino::Utils.deep_dup(array)
|
81
|
+
dup[1][:c] = 4
|
82
|
+
assert_equal nil, array[1][:c]
|
83
|
+
assert_equal 4, dup[1][:c]
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'should recursively dup hash with array' do
|
87
|
+
hash = { :a => [1, 2] }
|
88
|
+
dup = Padrino::Utils.deep_dup(hash)
|
89
|
+
dup[:a][2] = 'c'
|
90
|
+
assert_equal nil, hash[:a][2]
|
91
|
+
assert_equal 'c', dup[:a][2]
|
92
|
+
end
|
93
|
+
|
94
|
+
it 'should dup initial hash values' do
|
95
|
+
zero_hash = Hash.new 0
|
96
|
+
hash = { :a => zero_hash }
|
97
|
+
dup = Padrino::Utils.deep_dup(hash)
|
98
|
+
assert_equal 0, dup[:a][44]
|
99
|
+
end
|
100
|
+
|
101
|
+
it 'should properly dup objects' do
|
102
|
+
object = Object.new
|
103
|
+
dup = Padrino::Utils.deep_dup(object)
|
104
|
+
dup.instance_variable_set(:@a, 1)
|
105
|
+
assert !object.instance_variable_defined?(:@a)
|
106
|
+
assert dup.instance_variable_defined?(:@a)
|
107
|
+
end
|
108
|
+
|
109
|
+
it 'should not double the frozen keys' do
|
110
|
+
hash = { Fixnum => 1 }
|
111
|
+
dup = Padrino::Utils.deep_dup(hash)
|
112
|
+
assert_equal 1, dup.keys.length
|
113
|
+
end
|
114
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: padrino-support
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.13.
|
4
|
+
version: 0.13.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Padrino Team
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2016-
|
15
|
+
date: 2016-08-17 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: activesupport
|
@@ -69,7 +69,6 @@ files:
|
|
69
69
|
- padrino-support.gemspec
|
70
70
|
- test/helper.rb
|
71
71
|
- test/test_colorize.rb
|
72
|
-
- test/test_support_lite.rb
|
73
72
|
- test/test_utils.rb
|
74
73
|
homepage: http://www.padrinorb.com
|
75
74
|
licenses:
|
@@ -92,13 +91,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
92
91
|
version: 1.3.6
|
93
92
|
requirements: []
|
94
93
|
rubyforge_project: padrino-support
|
95
|
-
rubygems_version: 2.4
|
94
|
+
rubygems_version: 2.6.4
|
96
95
|
signing_key:
|
97
96
|
specification_version: 4
|
98
97
|
summary: Support for padrino
|
99
|
-
test_files:
|
100
|
-
- test/helper.rb
|
101
|
-
- test/test_colorize.rb
|
102
|
-
- test/test_support_lite.rb
|
103
|
-
- test/test_utils.rb
|
104
|
-
has_rdoc:
|
98
|
+
test_files: []
|
data/test/test_support_lite.rb
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/helper')
|
2
|
-
|
3
|
-
describe "ObjectSpace" do
|
4
|
-
describe "#classes" do
|
5
|
-
it 'should take an snapshot of the current loaded classes' do
|
6
|
-
snapshot = ObjectSpace.classes
|
7
|
-
assert_equal snapshot.include?(Padrino::Logger), true
|
8
|
-
end
|
9
|
-
|
10
|
-
it 'should return a Set object' do
|
11
|
-
snapshot = ObjectSpace.classes
|
12
|
-
assert_equal snapshot.kind_of?(Set), true
|
13
|
-
end
|
14
|
-
|
15
|
-
it 'should be able to process a the class name given a block' do
|
16
|
-
klasses = ObjectSpace.classes do |klass|
|
17
|
-
if klass.name =~ /^Padrino::/
|
18
|
-
klass
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
assert_equal (klasses.size > 1), true
|
23
|
-
klasses.each do |klass|
|
24
|
-
assert_match /^Padrino::/, klass.to_s
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
describe "#new_classes" do
|
30
|
-
before do
|
31
|
-
@snapshot = ObjectSpace.classes
|
32
|
-
end
|
33
|
-
|
34
|
-
it 'should return list of new classes' do
|
35
|
-
class OSTest; end
|
36
|
-
module OSTestModule; class B; end; end
|
37
|
-
|
38
|
-
new_classes = ObjectSpace.new_classes(@snapshot)
|
39
|
-
|
40
|
-
assert_equal new_classes.size, 2
|
41
|
-
assert_equal new_classes.include?(OSTest), true
|
42
|
-
assert_equal new_classes.include?(OSTestModule::B), true
|
43
|
-
end
|
44
|
-
|
45
|
-
it 'should return a Set object' do
|
46
|
-
new_classes = ObjectSpace.new_classes(@snapshot)
|
47
|
-
assert_equal new_classes.kind_of?(Set), true
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|