tbpgr_utils 0.0.146 → 0.0.147

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: 685cf30cf78c7d89c085051844c66933962c9337
4
- data.tar.gz: 74615983b07af1fbf62181e22524ffec5d4eeb40
3
+ metadata.gz: 31237b7bc9c295d4734a79d9bee3081d0a96bc3d
4
+ data.tar.gz: a441751320658a5aaa092ef6abf3602a14aaf33b
5
5
  SHA512:
6
- metadata.gz: 01c345c0389c294a237dcdbaaf5ea787c88eb60fc921b3076929936a8b7dcfd9335e434cf1b31ae43423aca27b1de6db5e72702e160d175c816fe86fb576cdcf
7
- data.tar.gz: c6ee4cf4d0dfd2b46a24bcb2a8702dd582267c63d1fec82b39c521f674dc846bcd6c68f3a4fd37d8df25c8076e22d59f5df863a6f9bfa9365f3b2f04b8b3ae58
6
+ metadata.gz: 0007b325faad1121c9fd0911c6b1d788b4aa9bfb08ab90786481fa4ddf442ea6c64ad5e09b895310e0275fa4363ca26039aa7f14d4649f182180503eda4039de
7
+ data.tar.gz: f9c9a7f3d746aa007f65a6f56bbe674f9d278d26fc5f5227c8df4730cd408e62f02b032994f0f748b56d861e184b006efdcf3ba567fb732014e266eb4ecb32d7
data/README.md CHANGED
@@ -72,6 +72,7 @@ Or install it yourself as:
72
72
  |[AttrEnumerable.reverse_attr](#attrenumerablereverse_attr) |define reverse_xxx. it returns Class attributes(collection)'s reverse Array |
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
+ |[AttrEnumerable.sample_attr](#attrenumerablesample_attr) |define sample_xxx. it returns Class attributes(collection)'s Array sample value |
75
76
  |[AttributesHashable.to_hash](#attributeshashableto_hash) |define to_hash method for get instance_values |
76
77
  |[AttributesInitializable::ClassMethods.attr_accessor_init](#attributesinitializableclassmethodsattr_accessor_init) |generate attr_accessor + initializer |
77
78
  |[AttributesInitializable::ClassMethods.attr_reader_init](#attributesinitializableclassmethodsattr_reader_init) |generate attr_reader + initializer |
@@ -1500,6 +1501,37 @@ print persons.reduce_age { |a, e|a += e + 1; a } # => 189
1500
1501
 
1501
1502
  [back to list](#list)
1502
1503
 
1504
+ ### AttrEnumerable.sample_attr
1505
+ ~~~ruby
1506
+ require 'attr_enumerable'
1507
+
1508
+ class Person
1509
+ attr_reader :name, :age
1510
+ def initialize(name, age)
1511
+ @name, @age = name, age
1512
+ end
1513
+ end
1514
+
1515
+ class Persons
1516
+ attr_reader :persons
1517
+ include AttrEnumerable
1518
+ def initialize(persons = [])
1519
+ @persons = persons
1520
+ end
1521
+
1522
+ def <<(person)
1523
+ @persons << person
1524
+ end
1525
+ end
1526
+
1527
+ persons = Persons.new([Person.new("tanaka", 84), Person.new("suzuki", 103)])
1528
+ print persons.sample_name # => 'tanaka' or 'suzuki'
1529
+ print persons.sample_name(2) # => ['tanaka', 'suzuki'] or ['suzuki', 'tanaka']
1530
+ print persons.sample_age(2) # => [84, 103] or [103, 84]
1531
+ ~~~
1532
+
1533
+ [back to list](#list)
1534
+
1503
1535
  ### AttributesHashable.to_hash
1504
1536
  ~~~ruby
1505
1537
  require 'attributes_initializable'
@@ -4202,6 +4234,7 @@ if you are Sublime Text2 user, you can use snippet for TbpgrUtils.
4202
4234
  https://github.com/tbpgr/tbpgr_utils_snippets
4203
4235
 
4204
4236
  ## History
4237
+ * version 0.0.147 : add AttrEnumerable.sample_attr
4205
4238
  * version 0.0.146 : add AttrEnumerable.reduce_attr
4206
4239
  * version 0.0.145 : add AttrEnumerable.map_attr
4207
4240
  * version 0.0.144 : add AttrEnumerable.last_attr
@@ -15,7 +15,8 @@ module AttrEnumerable
15
15
  { regexp: /^include_(.*)\?$/, call_method: :include_attribute? },
16
16
  { regexp: /^last_(.*)$/, call_method: :last_attr },
17
17
  { regexp: /^map_(.*)$/, call_method: :map_attr },
18
- { regexp: /^reduce_(.*)$/, call_method: :reduce_attr }
18
+ { regexp: /^reduce_(.*)$/, call_method: :reduce_attr },
19
+ { regexp: /^sample_(.*)$/, call_method: :sample_attr }
19
20
  ]
20
21
 
21
22
  # 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 sample_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.sample(count)
13
+ end
14
+ end
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Tbpgr Utilities
4
4
  module TbpgrUtils
5
- VERSION = '0.0.146'
5
+ VERSION = '0.0.147'
6
6
  end
@@ -0,0 +1,94 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+ require 'attr_enumerable'
4
+
5
+ describe AttrEnumerable do
6
+ context :sample_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: :sample_name,
38
+ count: 2,
39
+ expected_array: ['tanaka', 'suzuki'],
40
+ expected_size: 2,
41
+ },
42
+ {
43
+ case_no: 2,
44
+ case_title: 'age case',
45
+ klass: AttrEnumerablePersons.new(
46
+ [
47
+ AttrEnumerablePerson.new('tanaka', 84),
48
+ AttrEnumerablePerson.new('tanaka', 20),
49
+ AttrEnumerablePerson.new('suzuki', 20)
50
+ ]
51
+ ),
52
+ method: :sample_age,
53
+ count: nil,
54
+ expected_array: [84, 20],
55
+ expected_size: 1,
56
+ },
57
+ ]
58
+
59
+ cases.each do |c|
60
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
61
+ begin
62
+ case_before c
63
+
64
+ # -- given --
65
+ # nothing
66
+ ary = c[:klass]
67
+
68
+ # -- when --
69
+ actual =
70
+ if c[:count]
71
+ ary.send(c[:method], c[:count])
72
+ else
73
+ ary.send(c[:method])
74
+ end
75
+ actual = Array(actual)
76
+
77
+ # -- then --
78
+ expect(actual.size).to eq(c[:expected_size])
79
+ actual.each { |e| expect(c[:expected_array]).to include(e) }
80
+ ensure
81
+ case_after c
82
+ end
83
+ end
84
+
85
+ def case_before(c)
86
+ # implement each case before
87
+ end
88
+
89
+ def case_after(c)
90
+ # implement each case after
91
+ end
92
+ end
93
+ end
94
+ 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.146
4
+ version: 0.0.147
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-03 00:00:00.000000000 Z
11
+ date: 2014-06-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -110,6 +110,7 @@ files:
110
110
  - lib/attr_enumerable/map_attr.rb
111
111
  - lib/attr_enumerable/reduce_attr.rb
112
112
  - lib/attr_enumerable/reverse_attr.rb
113
+ - lib/attr_enumerable/sample_attr.rb
113
114
  - lib/attributes_hashable.rb
114
115
  - lib/attributes_initializable.rb
115
116
  - lib/end_erb.rb
@@ -278,6 +279,7 @@ files:
278
279
  - spec/attr_enumerable/map_attr_spec.rb
279
280
  - spec/attr_enumerable/reduce_attr_spec.rb
280
281
  - spec/attr_enumerable/reverse_attr_spec.rb
282
+ - spec/attr_enumerable/sample_attr_spec.rb
281
283
  - spec/attributes_hashable_spec.rb
282
284
  - spec/attributes_initializable_spec.rb
283
285
  - spec/eval_helper/attr_accessor_init_code_spec.rb
@@ -453,6 +455,7 @@ test_files:
453
455
  - spec/attr_enumerable/map_attr_spec.rb
454
456
  - spec/attr_enumerable/reduce_attr_spec.rb
455
457
  - spec/attr_enumerable/reverse_attr_spec.rb
458
+ - spec/attr_enumerable/sample_attr_spec.rb
456
459
  - spec/attributes_hashable_spec.rb
457
460
  - spec/attributes_initializable_spec.rb
458
461
  - spec/eval_helper/attr_accessor_init_code_spec.rb