tbpgr_utils 0.0.15 → 0.0.16
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/README.md +46 -24
- data/lib/open_classes/array.rb +40 -5
- data/lib/tbpgr_utils/version.rb +1 -1
- data/spec/open_classes/array_spec.rb +71 -0
- metadata +10 -10
data/README.md
CHANGED
@@ -18,29 +18,30 @@ Or install it yourself as:
|
|
18
18
|
|
19
19
|
## Usage
|
20
20
|
### List
|
21
|
-
| class/module/method | mean
|
22
|
-
|:----------- |:------------
|
23
|
-
|TbpgrUtils Array#together |loop all arrays by block
|
24
|
-
|TbpgrUtils Array#together_map |together version of Enumerable#map. together_map has aliases [:tmap, :together_collect, :tcollect]|
|
25
|
-
|TbpgrUtils Array#
|
26
|
-
|
|
27
|
-
|AttributesInitializable::ClassMethods.
|
28
|
-
|AttributesInitializable::ClassMethods.
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|TestToolbox Kernel#
|
33
|
-
|
|
34
|
-
|TbpgrUtils Kernel#
|
35
|
-
|TbpgrUtils Kernel#
|
36
|
-
|TbpgrUtils
|
37
|
-
|TbpgrUtils
|
38
|
-
|TbpgrUtils Object#
|
39
|
-
|TbpgrUtils Object#
|
40
|
-
|TbpgrUtils Object#
|
41
|
-
|TbpgrUtils
|
42
|
-
|
|
43
|
-
|
|
21
|
+
| class/module/method | mean |
|
22
|
+
|:----------- |:------------ |
|
23
|
+
|TbpgrUtils Array#together |loop all arrays by block |
|
24
|
+
|TbpgrUtils Array#together_map |together version of Enumerable#map. together_map has aliases [:tmap, :together_collect, :tcollect] |
|
25
|
+
|TbpgrUtils Array#together_select |together version of Enumerable#select. together_select has aliases [:tselect, :together_find_all, :tfindall]|
|
26
|
+
|TbpgrUtils Array#together_with_index |loop all arrays by block with index |
|
27
|
+
|AttributesInitializable::ClassMethods.attr_accessor_init|generate attr_accessor + initializer |
|
28
|
+
|AttributesInitializable::ClassMethods.attr_reader_init |generate attr_reader + initializer |
|
29
|
+
|AttributesInitializable::ClassMethods.attr_writer init |generate attr_writer + initializer |
|
30
|
+
|Ghostable module |help to create ghost method(dynamic method define by ussing method_missing + pattern-method-name) |
|
31
|
+
|TbpgrUtils Kernel#bulk_define_methods |define methods to classes. methods have simple return value. |
|
32
|
+
|TestToolbox Kernel#capture_stdout |capture STDOUT |
|
33
|
+
|TestToolbox Kernel#dp_line |debug print line for print-debugging |
|
34
|
+
|TbpgrUtils Kernel#print_eval |Print code + eval result |
|
35
|
+
|TbpgrUtils Kernel#puts_eval |Puts code + eval result |
|
36
|
+
|TbpgrUtils Kernel#bulk_puts_eval |Puts each-line-code + eval result |
|
37
|
+
|TbpgrUtils Module.alias_methods |create alias methods |
|
38
|
+
|TbpgrUtils Object#any_of? |if self match any one of items, return true |
|
39
|
+
|TbpgrUtils Object#boolean? |data type check for boolean |
|
40
|
+
|TbpgrUtils Object#my_methods |return public/protected/private self define methods |
|
41
|
+
|TbpgrUtils Object#to_bool |syntax sugar of !!. convert [false, nil] => fasel, other => true. |
|
42
|
+
|TbpgrUtils String#justify_table |justify pipe format table string |
|
43
|
+
|Templatable module |get result from template + placeholder |
|
44
|
+
|TemplateMethodable module |for Template Method Pattern |
|
44
45
|
|
45
46
|
### Array#together
|
46
47
|
~~~ruby
|
@@ -73,6 +74,26 @@ ret = [alpha, numbers].together_map {|first, second|[["#{first}:ret"], ["#{secon
|
|
73
74
|
print ret # => output [["one:ret", "two:ret", "three:ret"],["1:ret", "2:ret", "3:ret"]]
|
74
75
|
~~~
|
75
76
|
|
77
|
+
### Array#together_select(or tselect, together_find_all, tfindall)
|
78
|
+
~~~ruby
|
79
|
+
require 'tbpgr_utils'
|
80
|
+
|
81
|
+
firsts = [1, 2, 3, 4]
|
82
|
+
seconds = [4, 2, 3, 1]
|
83
|
+
ret = [firsts, seconds].together_select{|first, second|first == second}
|
84
|
+
print ret # => output [[2, 3], [2, 3]]
|
85
|
+
~~~
|
86
|
+
|
87
|
+
if you want to return multi array, following.
|
88
|
+
~~~ruby
|
89
|
+
require 'tbpgr_utils'
|
90
|
+
|
91
|
+
firsts = [1, 2, 3, 4]
|
92
|
+
seconds = [4, 2, 3, 1]
|
93
|
+
ret = [firsts, seconds].together_select{|first, second|[first.odd?, second.even?]}
|
94
|
+
print ret # => output [[1, 3], [4, 2]]
|
95
|
+
~~~
|
96
|
+
|
76
97
|
### Array#together_with_index
|
77
98
|
~~~ruby
|
78
99
|
require 'tbpgr_utils'
|
@@ -584,7 +605,7 @@ class BaseDeveloper
|
|
584
605
|
end
|
585
606
|
end
|
586
607
|
|
587
|
-
# sample valid Concrete Class.
|
608
|
+
# sample valid Concrete Class.
|
588
609
|
class StarDeveloper < BaseDeveloper
|
589
610
|
def easy_coding
|
590
611
|
"complete 1 minutes"
|
@@ -614,6 +635,7 @@ if you are Sublime Text2 user, you can use snippet for TbpgrUtils.
|
|
614
635
|
https://github.com/tbpgr/tbpgr_utils_snippets
|
615
636
|
|
616
637
|
## History
|
638
|
+
* version 0.0.16 : add Array#together_select(or tselect, together_find_all, tfindall)
|
617
639
|
* version 0.0.15 : add Module.alias_methods
|
618
640
|
* version 0.0.14 : add Array#together_map(aliases => [tmap, together_collect, tcollect])
|
619
641
|
* version 0.0.13 : add Array#together_with_index, Kernel#bulk_puts_eval
|
data/lib/open_classes/array.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
require 'open_classes/object'
|
3
|
+
require 'open_classes/module'
|
3
4
|
|
4
5
|
# Array
|
5
6
|
class Array
|
@@ -56,14 +57,37 @@ class Array
|
|
56
57
|
first.each_with_index do |i_v, i|
|
57
58
|
eval_each_str = get_args_str_for_together i
|
58
59
|
each_ret = instance_eval "yield(#{eval_each_str})"
|
59
|
-
ret =
|
60
|
+
ret = set_together_each_return_map(ret, each_ret, i)
|
60
61
|
end
|
61
62
|
ret
|
62
63
|
end
|
63
64
|
|
64
|
-
|
65
|
-
|
66
|
-
|
65
|
+
# Arrays loop together select.
|
66
|
+
#
|
67
|
+
# if you want to single Array return
|
68
|
+
# firsts = [1, 2, 3, 4]
|
69
|
+
# seconds = [4, 2, 3, 1]
|
70
|
+
# ret = [firsts, seconds].together_select{|first, second|first == second}
|
71
|
+
# print ret # => output [[2, 3], [2, 3]]
|
72
|
+
#
|
73
|
+
# if you want to multi Array return
|
74
|
+
# firsts = [1, 2, 3, 4]
|
75
|
+
# seconds = [4, 2, 3, 1]
|
76
|
+
# ret = [firsts, seconds].together_select{|first, second|[first.odd?, second.even?}
|
77
|
+
# print ret # => output [[1, 3], [4, 2]]
|
78
|
+
def together_select
|
79
|
+
if_not_contain_array_rails_type_error
|
80
|
+
ret = []
|
81
|
+
first.each_with_index do |i_v, i|
|
82
|
+
eval_each_str = get_args_str_for_together i
|
83
|
+
each_ret = instance_eval "yield(#{eval_each_str})"
|
84
|
+
ret = set_together_each_return_select(ret, each_ret, i)
|
85
|
+
end
|
86
|
+
ret
|
87
|
+
end
|
88
|
+
|
89
|
+
alias_methods [:together_collect, :tmap, :tcollect], :together_map
|
90
|
+
alias_methods [:together_find_all, :tselect, :tfindall], :together_select
|
67
91
|
|
68
92
|
private
|
69
93
|
|
@@ -82,7 +106,7 @@ class Array
|
|
82
106
|
each_eval.join(',')
|
83
107
|
end
|
84
108
|
|
85
|
-
def
|
109
|
+
def set_together_each_return_map(ret, each_ret, index)
|
86
110
|
if together_return_multi?(each_ret)
|
87
111
|
size.times { |i|ret << [] } if index == 0
|
88
112
|
(0..(size - 1)).each { |i|ret[i] << each_ret[i] }
|
@@ -92,6 +116,17 @@ class Array
|
|
92
116
|
ret
|
93
117
|
end
|
94
118
|
|
119
|
+
def set_together_each_return_select(ret, each_ret, index)
|
120
|
+
unless together_return_multi?(each_ret)
|
121
|
+
tmp_each_ret = []
|
122
|
+
size.times { tmp_each_ret << each_ret }
|
123
|
+
each_ret = tmp_each_ret
|
124
|
+
end
|
125
|
+
size.times { |i|ret << [] } if index == 0
|
126
|
+
(0..(size - 1)).each { |i|ret[i] << self[i][index] if each_ret[i] }
|
127
|
+
ret
|
128
|
+
end
|
129
|
+
|
95
130
|
def together_return_multi?(list)
|
96
131
|
(list.class == Array && list.size == size).to_bool
|
97
132
|
end
|
data/lib/tbpgr_utils/version.rb
CHANGED
@@ -172,4 +172,75 @@ describe Array do
|
|
172
172
|
end
|
173
173
|
end
|
174
174
|
end
|
175
|
+
|
176
|
+
context :together_select do
|
177
|
+
cases = [
|
178
|
+
{
|
179
|
+
case_no: 1,
|
180
|
+
case_title: 'single valid case',
|
181
|
+
inputs: [[1, 2, 3, 4], [4, 2, 3, 1]],
|
182
|
+
condition: 'first == second',
|
183
|
+
method_name: :together_select,
|
184
|
+
expected: [[2, 3], [2, 3]],
|
185
|
+
},
|
186
|
+
{
|
187
|
+
case_no: 2,
|
188
|
+
case_title: 'multi valid case',
|
189
|
+
inputs: [[1, 2, 3, 4], [4, 2, 3, 1]],
|
190
|
+
condition: '[first.odd?, second.even?]',
|
191
|
+
expected: [[1, 3], [4, 2]],
|
192
|
+
method_name: :together_select,
|
193
|
+
},
|
194
|
+
{
|
195
|
+
case_no: 3,
|
196
|
+
case_title: 'multi valid case',
|
197
|
+
inputs: [[1, 2, 3, 4], [4, 2, 3, 1]],
|
198
|
+
condition: '[first.odd?, second.even?]',
|
199
|
+
expected: [[1, 3], [4, 2]],
|
200
|
+
method_name: :tselect,
|
201
|
+
},
|
202
|
+
{
|
203
|
+
case_no: 4,
|
204
|
+
case_title: 'multi valid case',
|
205
|
+
inputs: [[1, 2, 3, 4], [4, 2, 3, 1]],
|
206
|
+
condition: '[first.odd?, second.even?]',
|
207
|
+
expected: [[1, 3], [4, 2]],
|
208
|
+
method_name: :together_find_all,
|
209
|
+
},
|
210
|
+
{
|
211
|
+
case_no: 5,
|
212
|
+
case_title: 'multi valid case',
|
213
|
+
inputs: [[1, 2, 3, 4], [4, 2, 3, 1]],
|
214
|
+
condition: '[first.odd?, second.even?]',
|
215
|
+
expected: [[1, 3], [4, 2]],
|
216
|
+
method_name: :tfindall,
|
217
|
+
},
|
218
|
+
]
|
219
|
+
|
220
|
+
cases.each do |c|
|
221
|
+
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
222
|
+
begin
|
223
|
+
case_before c
|
224
|
+
|
225
|
+
# -- given --
|
226
|
+
# nothing
|
227
|
+
|
228
|
+
# -- when/then --
|
229
|
+
actual = c[:inputs].method(c[:method_name]).call { |first, second| eval c[:condition], binding }
|
230
|
+
|
231
|
+
expect(actual).to eq(c[:expected])
|
232
|
+
ensure
|
233
|
+
case_after c
|
234
|
+
end
|
235
|
+
end
|
236
|
+
|
237
|
+
def case_before(c)
|
238
|
+
# implement each case before
|
239
|
+
end
|
240
|
+
|
241
|
+
def case_after(c)
|
242
|
+
# implement each case after
|
243
|
+
end
|
244
|
+
end
|
245
|
+
end
|
175
246
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tbpgr_utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.16
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-01-
|
12
|
+
date: 2014-01-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
16
|
-
requirement: &
|
16
|
+
requirement: &21415440 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 4.0.1
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *21415440
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: bundler
|
27
|
-
requirement: &
|
27
|
+
requirement: &20573484 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '1.3'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *20573484
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rake
|
38
|
-
requirement: &
|
38
|
+
requirement: &21917292 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *21917292
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rspec
|
49
|
-
requirement: &
|
49
|
+
requirement: &20384916 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: 2.14.1
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *20384916
|
58
58
|
description: Utilities
|
59
59
|
email:
|
60
60
|
- tbpgr@tbpgr.jp
|