gorillib 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.
- data/.document +5 -0
- data/.rspec +1 -0
- data/LICENSE.textile +81 -0
- data/README.textile +153 -0
- data/Rakefile +26 -0
- data/VERSION +1 -0
- data/fiddle/hubahuba.rb +62 -0
- data/gorillib.gemspec +142 -0
- data/lib/gorillib/array/compact_blank.rb +17 -0
- data/lib/gorillib/array/extract_options.rb +29 -0
- data/lib/gorillib/base.rb +7 -0
- data/lib/gorillib/datetime/flat.rb +29 -0
- data/lib/gorillib/datetime/parse.rb +21 -0
- data/lib/gorillib/enumerable/sum.rb +38 -0
- data/lib/gorillib/hash/compact.rb +31 -0
- data/lib/gorillib/hash/deep_merge.rb +16 -0
- data/lib/gorillib/hash/keys.rb +42 -0
- data/lib/gorillib/hash/reverse_merge.rb +26 -0
- data/lib/gorillib/hash/slice.rb +53 -0
- data/lib/gorillib/hash/zip.rb +10 -0
- data/lib/gorillib/logger/log.rb +14 -0
- data/lib/gorillib/metaprogramming/aliasing.rb +43 -0
- data/lib/gorillib/metaprogramming/cattr_accessor.rb +79 -0
- data/lib/gorillib/metaprogramming/class_attribute.rb +90 -0
- data/lib/gorillib/metaprogramming/delegation.rb +146 -0
- data/lib/gorillib/metaprogramming/mattr_accessor.rb +61 -0
- data/lib/gorillib/metaprogramming/remove_method.rb +11 -0
- data/lib/gorillib/metaprogramming/singleton_class.rb +8 -0
- data/lib/gorillib/object/blank.rb +89 -0
- data/lib/gorillib/some.rb +12 -0
- data/lib/gorillib/string/constantize.rb +21 -0
- data/lib/gorillib/string/human.rb +52 -0
- data/lib/gorillib/string/inflections.rb +78 -0
- data/lib/gorillib/string/truncate.rb +33 -0
- data/lib/gorillib.rb +1 -0
- data/spec/blank_spec.rb +86 -0
- data/spec/gorillib_spec.rb +7 -0
- data/spec/rcov.opts +6 -0
- data/spec/spec.opts +4 -0
- data/spec/spec_helper.rb +12 -0
- data/spec/spec_tasks.rake +15 -0
- data/test/abstract_unit.rb +25 -0
- data/test/array/compact_blank_test.rb +33 -0
- data/test/array/extract_options_test.rb +39 -0
- data/test/datetime/flat_test.rb +0 -0
- data/test/datetime/parse_test.rb +0 -0
- data/test/enumerable/sum_test.rb +50 -0
- data/test/hash/compact_test.rb +38 -0
- data/test/hash/deep_merge_test.rb +30 -0
- data/test/hash/keys_test.rb +110 -0
- data/test/hash/reverse_merge_test.rb +20 -0
- data/test/hash/slice_test.rb +47 -0
- data/test/hash/zip_test.rb +0 -0
- data/test/logger/log_test.rb +0 -0
- data/test/metaprogramming/aliasing_test.rb +188 -0
- data/test/metaprogramming/cattr_accessor_test.rb +38 -0
- data/test/metaprogramming/class_attribute_test.rb +73 -0
- data/test/metaprogramming/delegation_test.rb +166 -0
- data/test/metaprogramming/mattr_accessor_test.rb +40 -0
- data/test/metaprogramming/singleton_class_test.rb +9 -0
- data/test/object/blank_test.rb +22 -0
- data/test/string/constantize_test.rb +30 -0
- data/test/string/human_test.rb +65 -0
- data/test/string/inflections_test.rb +57 -0
- data/test/string/inflector_test_cases.rb +50 -0
- data/test/string/truncate_test.rb +37 -0
- metadata +199 -0
@@ -0,0 +1,22 @@
|
|
1
|
+
require File.dirname(__FILE__)+'/../abstract_unit'
|
2
|
+
require 'gorillib/object/blank'
|
3
|
+
|
4
|
+
class BlankTest < Test::Unit::TestCase
|
5
|
+
BLANK = [ EmptyTrue.new, nil, false, '', ' ', " \n\t \r ", [], {} ]
|
6
|
+
NOT = [ EmptyFalse.new, Object.new, true, 0, 1, 'a', [nil], { nil => 0 } ]
|
7
|
+
|
8
|
+
def test_blank
|
9
|
+
BLANK.each { |v| assert v.blank?, "#{v.inspect} should be blank" }
|
10
|
+
NOT.each { |v| assert !v.blank?, "#{v.inspect} should not be blank" }
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_present
|
14
|
+
BLANK.each { |v| assert !v.present?, "#{v.inspect} should not be present" }
|
15
|
+
NOT.each { |v| assert v.present?, "#{v.inspect} should be present" }
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_presence
|
19
|
+
BLANK.each { |v| assert_equal nil, v.presence, "#{v.inspect}.presence should return nil" }
|
20
|
+
NOT.each { |v| assert_equal v, v.presence, "#{v.inspect}.presence should return self" }
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require File.dirname(__FILE__)+'/../abstract_unit'
|
2
|
+
require File.dirname(__FILE__)+'/inflector_test_cases'
|
3
|
+
require 'gorillib/string/constantize'
|
4
|
+
|
5
|
+
module Ace
|
6
|
+
module Base
|
7
|
+
class Case
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
|
13
|
+
class InflectorTest < Test::Unit::TestCase
|
14
|
+
include InflectorTestCases
|
15
|
+
|
16
|
+
def test_constantize
|
17
|
+
assert_nothing_raised{ assert_equal Ace::Base::Case, "Ace::Base::Case".constantize }
|
18
|
+
assert_nothing_raised{ assert_equal Ace::Base::Case, "::Ace::Base::Case".constantize }
|
19
|
+
assert_nothing_raised{ assert_equal InflectorTest, "InflectorTest".constantize }
|
20
|
+
assert_nothing_raised{ assert_equal InflectorTest, "::InflectorTest".constantize }
|
21
|
+
assert_raise(NameError){ "UnknownClass" .constantize }
|
22
|
+
assert_raise(NameError){ "An invalid string".constantize }
|
23
|
+
assert_raise(NameError){ "InvalidClass\n" .constantize }
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_constantize_does_lexical_lookup
|
27
|
+
assert_raise(NameError) { "Ace::Base::InflectorTest".constantize }
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require File.dirname(__FILE__)+'/../abstract_unit'
|
2
|
+
require File.dirname(__FILE__)+'/inflector_test_cases'
|
3
|
+
require 'gorillib/string/human'
|
4
|
+
|
5
|
+
class InflectorTest < Test::Unit::TestCase
|
6
|
+
include InflectorTestCases
|
7
|
+
|
8
|
+
def test_titleize
|
9
|
+
MixtureToTitleCase.each do |before, titleized|
|
10
|
+
assert_equal(titleized, before.titleize)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
MixtureToTitleCase.each do |before, titleized|
|
15
|
+
define_method "test_titleize_#{before}" do
|
16
|
+
assert_equal(titleized, before.titleize )
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_humanize
|
21
|
+
UnderscoreToHuman.each do |underscored, human|
|
22
|
+
assert_equal(human, underscored.humanize )
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
class ArrayExtToSentenceTests < Test::Unit::TestCase
|
28
|
+
def test_plain_array_to_sentence
|
29
|
+
assert_equal "", [].to_sentence
|
30
|
+
assert_equal "one", ['one'].to_sentence
|
31
|
+
assert_equal "one and two", ['one', 'two'].to_sentence
|
32
|
+
assert_equal "one, two, and three", ['one', 'two', 'three'].to_sentence
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_to_sentence_with_words_connector
|
36
|
+
assert_equal "one two, and three", ['one', 'two', 'three'].to_sentence(:words_connector => ' ')
|
37
|
+
assert_equal "one & two, and three", ['one', 'two', 'three'].to_sentence(:words_connector => ' & ')
|
38
|
+
assert_equal "onetwo, and three", ['one', 'two', 'three'].to_sentence(:words_connector => nil)
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_to_sentence_with_last_word_connector
|
42
|
+
assert_equal "one, two, and also three", ['one', 'two', 'three'].to_sentence(:last_word_connector => ', and also ')
|
43
|
+
assert_equal "one, twothree", ['one', 'two', 'three'].to_sentence(:last_word_connector => nil)
|
44
|
+
assert_equal "one, two three", ['one', 'two', 'three'].to_sentence(:last_word_connector => ' ')
|
45
|
+
assert_equal "one, two and three", ['one', 'two', 'three'].to_sentence(:last_word_connector => ' and ')
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_two_elements
|
49
|
+
assert_equal "one and two", ['one', 'two'].to_sentence
|
50
|
+
assert_equal "one two", ['one', 'two'].to_sentence(:two_words_connector => ' ')
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_one_element
|
54
|
+
assert_equal "one", ['one'].to_sentence
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_one_element_not_same_object
|
58
|
+
elements = ["one"]
|
59
|
+
assert_not_equal elements[0].object_id, elements.to_sentence.object_id
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_one_non_string_element
|
63
|
+
assert_equal '1', [1].to_sentence
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require File.dirname(__FILE__)+'/../abstract_unit'
|
2
|
+
require 'gorillib/string/inflections'
|
3
|
+
require File.dirname(__FILE__)+'/inflector_test_cases'
|
4
|
+
|
5
|
+
class InflectorTest < Test::Unit::TestCase
|
6
|
+
include InflectorTestCases
|
7
|
+
|
8
|
+
def test_camelize
|
9
|
+
CamelToUnderscore.each do |cameled, underscored|
|
10
|
+
assert_equal(cameled, underscored.camelize)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_camelize_with_lower_downcases_the_first_letter
|
15
|
+
assert_equal('capital', 'Capital'.camelize(:lower))
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_snakeize
|
19
|
+
UnderscoreToLowerCamel.each do |underscored, snaked|
|
20
|
+
assert_equal(snaked, underscored.snakeize)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_underscore_to_lower_camel
|
25
|
+
UnderscoreToLowerCamel.each do |underscored, lower_cameled|
|
26
|
+
assert_equal(lower_cameled, underscored.camelize(:lower))
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_underscore
|
31
|
+
CamelToUnderscore.each do |cameled, underscored|
|
32
|
+
assert_equal(underscored, cameled.underscore)
|
33
|
+
end
|
34
|
+
CamelToUnderscoreWithoutReverse.each do |cameled, underscored|
|
35
|
+
assert_equal(underscored, cameled.underscore)
|
36
|
+
end
|
37
|
+
assert_equal "html_tidy", "HTMLTidy".underscore
|
38
|
+
assert_equal "html_tidy_generator", "HTMLTidyGenerator".underscore
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_camelize_with_module
|
42
|
+
CamelWithModuleToUnderscoreWithSlash.each do |cameled, underscored|
|
43
|
+
assert_equal(cameled, underscored.camelize)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_underscore_with_slashes
|
48
|
+
CamelWithModuleToUnderscoreWithSlash.each do |cameled, underscored|
|
49
|
+
assert_equal(underscored, cameled.underscore)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_demodulize
|
54
|
+
assert_equal "Account", "MyApplication::Billing::Account".demodulize
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module InflectorTestCases
|
4
|
+
|
5
|
+
CamelToUnderscore = {
|
6
|
+
"Product" => "product",
|
7
|
+
"SpecialGuest" => "special_guest",
|
8
|
+
"ApplicationController" => "application_controller",
|
9
|
+
"Area51Controller" => "area51_controller"
|
10
|
+
}
|
11
|
+
|
12
|
+
UnderscoreToLowerCamel = {
|
13
|
+
"product" => "product",
|
14
|
+
"special_guest" => "specialGuest",
|
15
|
+
"application_controller" => "applicationController",
|
16
|
+
"area51_controller" => "area51Controller"
|
17
|
+
}
|
18
|
+
|
19
|
+
CamelToUnderscoreWithoutReverse = {
|
20
|
+
"HTMLTidy" => "html_tidy",
|
21
|
+
"HTMLTidyGenerator" => "html_tidy_generator",
|
22
|
+
"FreeBSD" => "free_bsd",
|
23
|
+
"HTML" => "html",
|
24
|
+
}
|
25
|
+
|
26
|
+
CamelWithModuleToUnderscoreWithSlash = {
|
27
|
+
"Admin::Product" => "admin/product",
|
28
|
+
"Users::Commission::Department" => "users/commission/department",
|
29
|
+
"UsersSection::CommissionDepartment" => "users_section/commission_department",
|
30
|
+
}
|
31
|
+
|
32
|
+
UnderscoreToHuman = {
|
33
|
+
"employee_salary" => "Employee salary",
|
34
|
+
"employee_id" => "Employee",
|
35
|
+
"underground" => "Underground"
|
36
|
+
}
|
37
|
+
|
38
|
+
MixtureToTitleCase = {
|
39
|
+
'active_record' => 'Active Record',
|
40
|
+
'ActiveRecord' => 'Active Record',
|
41
|
+
'action web service' => 'Action Web Service',
|
42
|
+
'Action Web Service' => 'Action Web Service',
|
43
|
+
'Action web service' => 'Action Web Service',
|
44
|
+
'actionwebservice' => 'Actionwebservice',
|
45
|
+
'Actionwebservice' => 'Actionwebservice',
|
46
|
+
"david's code" => "David's Code",
|
47
|
+
"David's code" => "David's Code",
|
48
|
+
"david's Code" => "David's Code"
|
49
|
+
}
|
50
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.dirname(__FILE__)+'/../abstract_unit'
|
3
|
+
require File.dirname(__FILE__)+'/inflector_test_cases'
|
4
|
+
require 'gorillib/string/truncate'
|
5
|
+
|
6
|
+
class StringInflectionsTest < Test::Unit::TestCase
|
7
|
+
include InflectorTestCases
|
8
|
+
|
9
|
+
def test_truncate
|
10
|
+
assert_equal "Hello World!", "Hello World!".truncate(12)
|
11
|
+
assert_equal "Hello Wor...", "Hello World!!".truncate(12)
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_truncate_with_omission_and_seperator
|
15
|
+
assert_equal "Hello[...]", "Hello World!".truncate(10, :omission => "[...]")
|
16
|
+
assert_equal "Hello[...]", "Hello Big World!".truncate(13, :omission => "[...]", :separator => ' ')
|
17
|
+
assert_equal "Hello Big[...]", "Hello Big World!".truncate(14, :omission => "[...]", :separator => ' ')
|
18
|
+
assert_equal "Hello Big[...]", "Hello Big World!".truncate(15, :omission => "[...]", :separator => ' ')
|
19
|
+
end
|
20
|
+
|
21
|
+
if RUBY_VERSION < '1.9.0'
|
22
|
+
def test_truncate_multibyte
|
23
|
+
with_kcode 'none' do
|
24
|
+
assert_equal "\354\225\210\353\205\225\355...", "\354\225\210\353\205\225\355\225\230\354\204\270\354\232\224".truncate(10)
|
25
|
+
end
|
26
|
+
with_kcode 'u' do
|
27
|
+
assert_equal "\354\225\204\353\246\254\353\236\221 \354\225\204\353\246\254 ...",
|
28
|
+
"\354\225\204\353\246\254\353\236\221 \354\225\204\353\246\254 \354\225\204\353\235\274\353\246\254\354\230\244".truncate(10)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
else
|
32
|
+
def test_truncate_multibyte
|
33
|
+
assert_equal "\354\225\204\353\246\254\353\236\221 \354\225\204\353\246\254 ...".force_encoding('UTF-8'),
|
34
|
+
"\354\225\204\353\246\254\353\236\221 \354\225\204\353\246\254 \354\225\204\353\235\274\353\246\254\354\230\244".force_encoding('UTF-8').truncate(10)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
metadata
ADDED
@@ -0,0 +1,199 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: gorillib
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 2
|
9
|
+
version: 0.0.2
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Infochimps
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2011-04-02 00:00:00 -05:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: yard
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ~>
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
segments:
|
29
|
+
- 0
|
30
|
+
- 6
|
31
|
+
- 0
|
32
|
+
version: 0.6.0
|
33
|
+
type: :development
|
34
|
+
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: jeweler
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
segments:
|
44
|
+
- 1
|
45
|
+
- 5
|
46
|
+
- 2
|
47
|
+
version: 1.5.2
|
48
|
+
type: :development
|
49
|
+
version_requirements: *id002
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
name: rcov
|
52
|
+
prerelease: false
|
53
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
segments:
|
59
|
+
- 0
|
60
|
+
version: "0"
|
61
|
+
type: :development
|
62
|
+
version_requirements: *id003
|
63
|
+
description: "Gorillib: infochimps lightweight subset of ruby convenience methods"
|
64
|
+
email: coders@infochimps.org
|
65
|
+
executables: []
|
66
|
+
|
67
|
+
extensions: []
|
68
|
+
|
69
|
+
extra_rdoc_files:
|
70
|
+
- LICENSE.textile
|
71
|
+
- README.textile
|
72
|
+
files:
|
73
|
+
- .document
|
74
|
+
- .rspec
|
75
|
+
- LICENSE.textile
|
76
|
+
- README.textile
|
77
|
+
- Rakefile
|
78
|
+
- VERSION
|
79
|
+
- fiddle/hubahuba.rb
|
80
|
+
- gorillib.gemspec
|
81
|
+
- lib/gorillib.rb
|
82
|
+
- lib/gorillib/array/compact_blank.rb
|
83
|
+
- lib/gorillib/array/extract_options.rb
|
84
|
+
- lib/gorillib/base.rb
|
85
|
+
- lib/gorillib/datetime/flat.rb
|
86
|
+
- lib/gorillib/datetime/parse.rb
|
87
|
+
- lib/gorillib/enumerable/sum.rb
|
88
|
+
- lib/gorillib/hash/compact.rb
|
89
|
+
- lib/gorillib/hash/deep_merge.rb
|
90
|
+
- lib/gorillib/hash/keys.rb
|
91
|
+
- lib/gorillib/hash/reverse_merge.rb
|
92
|
+
- lib/gorillib/hash/slice.rb
|
93
|
+
- lib/gorillib/hash/zip.rb
|
94
|
+
- lib/gorillib/logger/log.rb
|
95
|
+
- lib/gorillib/metaprogramming/aliasing.rb
|
96
|
+
- lib/gorillib/metaprogramming/cattr_accessor.rb
|
97
|
+
- lib/gorillib/metaprogramming/class_attribute.rb
|
98
|
+
- lib/gorillib/metaprogramming/delegation.rb
|
99
|
+
- lib/gorillib/metaprogramming/mattr_accessor.rb
|
100
|
+
- lib/gorillib/metaprogramming/remove_method.rb
|
101
|
+
- lib/gorillib/metaprogramming/singleton_class.rb
|
102
|
+
- lib/gorillib/object/blank.rb
|
103
|
+
- lib/gorillib/some.rb
|
104
|
+
- lib/gorillib/string/constantize.rb
|
105
|
+
- lib/gorillib/string/human.rb
|
106
|
+
- lib/gorillib/string/inflections.rb
|
107
|
+
- lib/gorillib/string/truncate.rb
|
108
|
+
- spec/blank_spec.rb
|
109
|
+
- spec/gorillib_spec.rb
|
110
|
+
- spec/rcov.opts
|
111
|
+
- spec/spec.opts
|
112
|
+
- spec/spec_helper.rb
|
113
|
+
- spec/spec_tasks.rake
|
114
|
+
- test/abstract_unit.rb
|
115
|
+
- test/array/compact_blank_test.rb
|
116
|
+
- test/array/extract_options_test.rb
|
117
|
+
- test/datetime/flat_test.rb
|
118
|
+
- test/datetime/parse_test.rb
|
119
|
+
- test/enumerable/sum_test.rb
|
120
|
+
- test/hash/compact_test.rb
|
121
|
+
- test/hash/deep_merge_test.rb
|
122
|
+
- test/hash/keys_test.rb
|
123
|
+
- test/hash/reverse_merge_test.rb
|
124
|
+
- test/hash/slice_test.rb
|
125
|
+
- test/hash/zip_test.rb
|
126
|
+
- test/logger/log_test.rb
|
127
|
+
- test/metaprogramming/aliasing_test.rb
|
128
|
+
- test/metaprogramming/cattr_accessor_test.rb
|
129
|
+
- test/metaprogramming/class_attribute_test.rb
|
130
|
+
- test/metaprogramming/delegation_test.rb
|
131
|
+
- test/metaprogramming/mattr_accessor_test.rb
|
132
|
+
- test/metaprogramming/singleton_class_test.rb
|
133
|
+
- test/object/blank_test.rb
|
134
|
+
- test/string/constantize_test.rb
|
135
|
+
- test/string/human_test.rb
|
136
|
+
- test/string/inflections_test.rb
|
137
|
+
- test/string/inflector_test_cases.rb
|
138
|
+
- test/string/truncate_test.rb
|
139
|
+
has_rdoc: true
|
140
|
+
homepage: http://infochimps.com/labs
|
141
|
+
licenses:
|
142
|
+
- MIT
|
143
|
+
post_install_message:
|
144
|
+
rdoc_options: []
|
145
|
+
|
146
|
+
require_paths:
|
147
|
+
- lib
|
148
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
149
|
+
none: false
|
150
|
+
requirements:
|
151
|
+
- - ">="
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
segments:
|
154
|
+
- 0
|
155
|
+
version: "0"
|
156
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
157
|
+
none: false
|
158
|
+
requirements:
|
159
|
+
- - ">="
|
160
|
+
- !ruby/object:Gem::Version
|
161
|
+
segments:
|
162
|
+
- 0
|
163
|
+
version: "0"
|
164
|
+
requirements: []
|
165
|
+
|
166
|
+
rubyforge_project:
|
167
|
+
rubygems_version: 1.3.7
|
168
|
+
signing_key:
|
169
|
+
specification_version: 3
|
170
|
+
summary: include only what you need. No dependencies, no creep
|
171
|
+
test_files:
|
172
|
+
- spec/blank_spec.rb
|
173
|
+
- spec/gorillib_spec.rb
|
174
|
+
- spec/spec_helper.rb
|
175
|
+
- test/abstract_unit.rb
|
176
|
+
- test/array/compact_blank_test.rb
|
177
|
+
- test/array/extract_options_test.rb
|
178
|
+
- test/datetime/flat_test.rb
|
179
|
+
- test/datetime/parse_test.rb
|
180
|
+
- test/enumerable/sum_test.rb
|
181
|
+
- test/hash/compact_test.rb
|
182
|
+
- test/hash/deep_merge_test.rb
|
183
|
+
- test/hash/keys_test.rb
|
184
|
+
- test/hash/reverse_merge_test.rb
|
185
|
+
- test/hash/slice_test.rb
|
186
|
+
- test/hash/zip_test.rb
|
187
|
+
- test/logger/log_test.rb
|
188
|
+
- test/metaprogramming/aliasing_test.rb
|
189
|
+
- test/metaprogramming/cattr_accessor_test.rb
|
190
|
+
- test/metaprogramming/class_attribute_test.rb
|
191
|
+
- test/metaprogramming/delegation_test.rb
|
192
|
+
- test/metaprogramming/mattr_accessor_test.rb
|
193
|
+
- test/metaprogramming/singleton_class_test.rb
|
194
|
+
- test/object/blank_test.rb
|
195
|
+
- test/string/constantize_test.rb
|
196
|
+
- test/string/human_test.rb
|
197
|
+
- test/string/inflections_test.rb
|
198
|
+
- test/string/inflector_test_cases.rb
|
199
|
+
- test/string/truncate_test.rb
|