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 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#together_with_index |loop all arrays by block with index |
26
- |AttributesInitializable::ClassMethods.attr_accessor_init|generate attr_accessor + initializer |
27
- |AttributesInitializable::ClassMethods.attr_reader_init |generate attr_reader + initializer |
28
- |AttributesInitializable::ClassMethods.attr_writer init |generate attr_writer + initializer |
29
- |Ghostable module |help to create ghost method(dynamic method define by ussing method_missing + pattern-method-name) |
30
- |TbpgrUtils Kernel#bulk_define_methods |define methods to classes. methods have simple return value. |
31
- |TestToolbox Kernel#capture_stdout |capture STDOUT |
32
- |TestToolbox Kernel#dp_line |debug print line for print-debugging |
33
- |TbpgrUtils Kernel#print_eval |Print code + eval result |
34
- |TbpgrUtils Kernel#puts_eval |Puts code + eval result |
35
- |TbpgrUtils Kernel#bulk_puts_eval |Puts each-line-code + eval result |
36
- |TbpgrUtils Module.alias_methods |create alias methods |
37
- |TbpgrUtils Object#any_of? |if self match any one of items, return true |
38
- |TbpgrUtils Object#boolean? |data type check for boolean |
39
- |TbpgrUtils Object#my_methods |return public/protected/private self define methods |
40
- |TbpgrUtils Object#to_bool |syntax sugar of !!. convert [false, nil] => fasel, other => true. |
41
- |TbpgrUtils String#justify_table |justify pipe format table string |
42
- |Templatable module |get result from template + placeholder |
43
- |TemplateMethodable module |for Template Method Pattern |
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. it raises NotImplementedError.
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
@@ -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 = set_together_each_return(ret, each_ret, i)
60
+ ret = set_together_each_return_map(ret, each_ret, i)
60
61
  end
61
62
  ret
62
63
  end
63
64
 
64
- alias_method :together_collect, :together_map
65
- alias_method :tmap, :together_map
66
- alias_method :tcollect, :together_map
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 set_together_each_return(ret, each_ret, index)
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
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Tbpgr Utilities
4
4
  module TbpgrUtils
5
- VERSION = '0.0.15'
5
+ VERSION = '0.0.16'
6
6
  end
@@ -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.15
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-22 00:00:00.000000000 Z
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: &21078144 !ruby/object:Gem::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: *21078144
24
+ version_requirements: *21415440
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bundler
27
- requirement: &21077832 !ruby/object:Gem::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: *21077832
35
+ version_requirements: *20573484
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &21077604 !ruby/object:Gem::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: *21077604
46
+ version_requirements: *21917292
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec
49
- requirement: &21077256 !ruby/object:Gem::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: *21077256
57
+ version_requirements: *20384916
58
58
  description: Utilities
59
59
  email:
60
60
  - tbpgr@tbpgr.jp