tbpgr_utils 0.0.147 → 0.0.148

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 31237b7bc9c295d4734a79d9bee3081d0a96bc3d
4
- data.tar.gz: a441751320658a5aaa092ef6abf3602a14aaf33b
3
+ metadata.gz: 775c44d3b88c5e2de18b5e4df26145c929a199f8
4
+ data.tar.gz: b466cd6b263de3bb235dec124247002d020f31a0
5
5
  SHA512:
6
- metadata.gz: 0007b325faad1121c9fd0911c6b1d788b4aa9bfb08ab90786481fa4ddf442ea6c64ad5e09b895310e0275fa4363ca26039aa7f14d4649f182180503eda4039de
7
- data.tar.gz: f9c9a7f3d746aa007f65a6f56bbe674f9d278d26fc5f5227c8df4730cd408e62f02b032994f0f748b56d861e184b006efdcf3ba567fb732014e266eb4ecb32d7
6
+ metadata.gz: e112e33ff471fc67b9c504e515095386fbe152b2f06dc000360d23debed1dced0d418bc519e0eaa1ffe3362792ec8f9a36aa4c214503bde00286a989f1f79ba4
7
+ data.tar.gz: ece124fdc9760a006623e7680f69ffad65f6f6b9f8202011ac7557e03e52b1d7e31942a0becfa2166a40eb3d52bfd947094886497b247a72509ea79b970aec2f
data/README.md CHANGED
@@ -73,6 +73,7 @@ Or install it yourself as:
73
73
  |[AttrEnumerable.map_attr](#attrenumerablemap_attr) |define map_xxx. it returns Class attributes(collection)'s Array map each value |
74
74
  |[AttrEnumerable.reduce_attr](#attrenumerablereduce_attr) |define reduce_xxx. it returns Class attributes(collection)'s Array reduce each value |
75
75
  |[AttrEnumerable.sample_attr](#attrenumerablesample_attr) |define sample_xxx. it returns Class attributes(collection)'s Array sample value |
76
+ |[AttrEnumerable.select_attr](#attrenumerableselect_attr) |define select_xxx. it returns Class attributes(collection)'s Array select value |
76
77
  |[AttributesHashable.to_hash](#attributeshashableto_hash) |define to_hash method for get instance_values |
77
78
  |[AttributesInitializable::ClassMethods.attr_accessor_init](#attributesinitializableclassmethodsattr_accessor_init) |generate attr_accessor + initializer |
78
79
  |[AttributesInitializable::ClassMethods.attr_reader_init](#attributesinitializableclassmethodsattr_reader_init) |generate attr_reader + initializer |
@@ -1532,6 +1533,36 @@ print persons.sample_age(2) # => [84, 103] or [103, 84]
1532
1533
 
1533
1534
  [back to list](#list)
1534
1535
 
1536
+ ### AttrEnumerable.select_attr
1537
+ ~~~ruby
1538
+ require 'attr_enumerable'
1539
+
1540
+ class Person
1541
+ attr_reader :name, :age
1542
+ def initialize(name, age)
1543
+ @name, @age = name, age
1544
+ end
1545
+ end
1546
+
1547
+ class Persons
1548
+ attr_reader :persons
1549
+ include AttrEnumerable
1550
+ def initialize(persons = [])
1551
+ @persons = persons
1552
+ end
1553
+
1554
+ def <<(person)
1555
+ @persons << person
1556
+ end
1557
+ end
1558
+
1559
+ persons = Persons.new([Person.new("tanaka", 84), Person.new("tanaka", 20), Person.new("suzuki", 20)])
1560
+ print persons.select_name { |v|v == 'tanaka' } # => ['tanaka' ,'tanaka']
1561
+ print persons.select_age { |v|v == 20 } # => [20 ,20]
1562
+ ~~~
1563
+
1564
+ [back to list](#list)
1565
+
1535
1566
  ### AttributesHashable.to_hash
1536
1567
  ~~~ruby
1537
1568
  require 'attributes_initializable'
@@ -4234,6 +4265,7 @@ if you are Sublime Text2 user, you can use snippet for TbpgrUtils.
4234
4265
  https://github.com/tbpgr/tbpgr_utils_snippets
4235
4266
 
4236
4267
  ## History
4268
+ * version 0.0.148 : add AttrEnumerable.select_attr
4237
4269
  * version 0.0.147 : add AttrEnumerable.sample_attr
4238
4270
  * version 0.0.146 : add AttrEnumerable.reduce_attr
4239
4271
  * version 0.0.145 : add AttrEnumerable.map_attr
@@ -16,7 +16,8 @@ module AttrEnumerable
16
16
  { regexp: /^last_(.*)$/, call_method: :last_attr },
17
17
  { regexp: /^map_(.*)$/, call_method: :map_attr },
18
18
  { regexp: /^reduce_(.*)$/, call_method: :reduce_attr },
19
- { regexp: /^sample_(.*)$/, call_method: :sample_attr }
19
+ { regexp: /^sample_(.*)$/, call_method: :sample_attr },
20
+ { regexp: /^select_(.*)$/, call_method: :select_attr }
20
21
  ]
21
22
 
22
23
  # call attr enumerable method.
@@ -0,0 +1,14 @@
1
+ # encoding: utf-8
2
+ require 'attr_enumerable/attr_enumerable_helper'
3
+
4
+ # AttrEnumerable
5
+ module AttrEnumerable
6
+ private
7
+ def select_attr(attribute, method_name, *args, &block)
8
+ col = collection
9
+ # count = args.size == 0 ? 1 : Integer(args.first)
10
+ fail ArgumentError, "invalid attribute #{attribute}" unless include_attr?(col.first, attribute)
11
+ attrs = col.map { |e|e.send(attribute) }
12
+ attrs.select { |e| yield(e) }
13
+ end
14
+ end
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Tbpgr Utilities
4
4
  module TbpgrUtils
5
- VERSION = '0.0.147'
5
+ VERSION = '0.0.148'
6
6
  end
@@ -0,0 +1,85 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+ require 'attr_enumerable'
4
+
5
+ describe AttrEnumerable do
6
+ context :select_attr do
7
+ class AttrEnumerablePerson
8
+ attr_reader :name, :age
9
+ def initialize(name, age)
10
+ @name, @age = name, age
11
+ end
12
+ end
13
+
14
+ class AttrEnumerablePersons
15
+ attr_reader :attr_enumerable_persons
16
+ include AttrEnumerable
17
+ def initialize(attr_enumerable_persons = [])
18
+ @attr_enumerable_persons = attr_enumerable_persons
19
+ end
20
+
21
+ def <<(person)
22
+ @attr_enumerable_persons << attr_enumerable_persons
23
+ end
24
+ end
25
+
26
+ cases = [
27
+ {
28
+ case_no: 1,
29
+ case_title: 'name case',
30
+ klass: AttrEnumerablePersons.new(
31
+ [
32
+ AttrEnumerablePerson.new('tanaka', 84),
33
+ AttrEnumerablePerson.new('tanaka', 20),
34
+ AttrEnumerablePerson.new('suzuki', 20)
35
+ ]
36
+ ),
37
+ method: :select_name,
38
+ block: proc { |v|v == 'tanaka' },
39
+ expected: ['tanaka', 'tanaka'],
40
+ },
41
+ {
42
+ case_no: 2,
43
+ case_title: 'age case',
44
+ klass: AttrEnumerablePersons.new(
45
+ [
46
+ AttrEnumerablePerson.new('tanaka', 84),
47
+ AttrEnumerablePerson.new('tanaka', 20),
48
+ AttrEnumerablePerson.new('suzuki', 20)
49
+ ]
50
+ ),
51
+ method: :select_age,
52
+ block: proc { |v|v == 20 },
53
+ expected: [20, 20],
54
+ }
55
+ ]
56
+
57
+ cases.each do |c|
58
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
59
+ begin
60
+ case_before c
61
+
62
+ # -- given --
63
+ # nothing
64
+ ary = c[:klass]
65
+
66
+ # -- when --
67
+ actual = ary.send(c[:method], &c[:block])
68
+
69
+ # -- then --
70
+ expect(actual).to match_array(c[:expected])
71
+ ensure
72
+ case_after c
73
+ end
74
+ end
75
+
76
+ def case_before(c)
77
+ # implement each case before
78
+ end
79
+
80
+ def case_after(c)
81
+ # implement each case after
82
+ end
83
+ end
84
+ end
85
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tbpgr_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.147
4
+ version: 0.0.148
5
5
  platform: ruby
6
6
  authors:
7
7
  - tbpgr
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-04 00:00:00.000000000 Z
11
+ date: 2014-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -111,6 +111,7 @@ files:
111
111
  - lib/attr_enumerable/reduce_attr.rb
112
112
  - lib/attr_enumerable/reverse_attr.rb
113
113
  - lib/attr_enumerable/sample_attr.rb
114
+ - lib/attr_enumerable/select_attr.rb
114
115
  - lib/attributes_hashable.rb
115
116
  - lib/attributes_initializable.rb
116
117
  - lib/end_erb.rb
@@ -280,6 +281,7 @@ files:
280
281
  - spec/attr_enumerable/reduce_attr_spec.rb
281
282
  - spec/attr_enumerable/reverse_attr_spec.rb
282
283
  - spec/attr_enumerable/sample_attr_spec.rb
284
+ - spec/attr_enumerable/select_attr_spec.rb
283
285
  - spec/attributes_hashable_spec.rb
284
286
  - spec/attributes_initializable_spec.rb
285
287
  - spec/eval_helper/attr_accessor_init_code_spec.rb
@@ -456,6 +458,7 @@ test_files:
456
458
  - spec/attr_enumerable/reduce_attr_spec.rb
457
459
  - spec/attr_enumerable/reverse_attr_spec.rb
458
460
  - spec/attr_enumerable/sample_attr_spec.rb
461
+ - spec/attr_enumerable/select_attr_spec.rb
459
462
  - spec/attributes_hashable_spec.rb
460
463
  - spec/attributes_initializable_spec.rb
461
464
  - spec/eval_helper/attr_accessor_init_code_spec.rb