tbpgr_utils 0.0.134 → 0.0.135

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: adc75672841e4e6947c4bd2b8098bc42e098ff00
4
- data.tar.gz: 2843ff2a1231c7ba79d6f28ed44a28bb412e9a89
3
+ metadata.gz: b98d24e3c4feef51fa216b88cb76d69910a0c86a
4
+ data.tar.gz: d7c95e332b3f975abf0dc358922655f7c07ae46f
5
5
  SHA512:
6
- metadata.gz: f78dad0412e431370316661370874e5a24ed8a5eab127345b9748c3f5927565f62d9c44b19d0f1b511a53d2ebd38bf269ac425d1363c7189779dfdc42b294844
7
- data.tar.gz: adc2fa6355b9d297c60b90afef824dc7c70a650ea3c43f6f05469b0c5c67836e0ff21090a296e55526c7a8883f3dbbef651fb4fe7dcb609d9e13c84058ede9e3
6
+ metadata.gz: cbc83ca317bcaa82610c48d0313deb245851a34ae1b181520d86e9fc9274d4d287060df589bedf87272355881db7b7cd971e1c1bc351628877ba80ed86e46cb8
7
+ data.tar.gz: 154ccd41ff57237b88ab9f7dbe00b7214afc2d147525180e243de7d20c44f2299f1fbc22404f3402c3564d7cb49788a6ffbb690f6c477e0f96f5ce16c8599121
data/README.md CHANGED
@@ -60,6 +60,7 @@ Or install it yourself as:
60
60
  |[TbpgrUtils Array#together_slice](#arraytogether_sliceor-tslice) |together version of Array#slice. together_slice has alias :tslice |
61
61
  |[TbpgrUtils Array#together_with_index](#arraytogether_with_index) |loop all arrays by block with index |
62
62
  |[TbpgrUtils Array#uniq_size](#arrayuniq_size) |return uniq size |
63
+ |[AttrEnumerable#each_attr](#attrenumerable_each_attr) |define each_xxx. it call Class attributes(collection)'s attribute iterator |
63
64
  |[AttributesHashable.to_hash](#attributeshashableto_hash) |define to_hash method for get instance_values |
64
65
  |[AttributesInitializable::ClassMethods.attr_accessor_init](#attributesinitializableclassmethodsattr_accessor_init) |generate attr_accessor + initializer |
65
66
  |[AttributesInitializable::ClassMethods.attr_reader_init](#attributesinitializableclassmethodsattr_reader_init) |generate attr_reader + initializer |
@@ -1100,6 +1101,40 @@ require 'tbpgr_utils'
1100
1101
 
1101
1102
  [back to list](#list)
1102
1103
 
1104
+ ### AttrEnumerable.each_attr
1105
+ ~~~ruby
1106
+ require 'attr_enumerable'
1107
+ class Person
1108
+ attr_reader :name, :age
1109
+ def initialize(name, age)
1110
+ @name, @age = name, age
1111
+ end
1112
+ end
1113
+
1114
+ class Persons
1115
+ attr_reader :persons
1116
+ include AttrEnumerable
1117
+ def initialize(persons = [])
1118
+ @persons = persons
1119
+ end
1120
+
1121
+ def <<(person)
1122
+ @persons << person
1123
+ end
1124
+ end
1125
+
1126
+ persons = Persons.new([Person.new("tanaka", 84), Person.new("suzuki", 103)])
1127
+ persons.each_name do |name|
1128
+ puts name # => "tanaka", "suzuki"
1129
+ end
1130
+
1131
+ persons.each_age do |age|
1132
+ puts age # => 84, 103
1133
+ end
1134
+ ~~~
1135
+
1136
+ [back to list](#list)
1137
+
1103
1138
  ### AttributesHashable.to_hash
1104
1139
  ~~~ruby
1105
1140
  require 'attributes_initializable'
@@ -3802,6 +3837,7 @@ if you are Sublime Text2 user, you can use snippet for TbpgrUtils.
3802
3837
  https://github.com/tbpgr/tbpgr_utils_snippets
3803
3838
 
3804
3839
  ## History
3840
+ * version 0.0.135 : add AttrEnumerable.each_attr
3805
3841
  * version 0.0.134 : add Integer#reverse_each_digit
3806
3842
  * version 0.0.133 : add Integer#each_digit_with_index
3807
3843
  * version 0.0.132 : add Integer#each_digit
@@ -0,0 +1,29 @@
1
+ # encoding: utf-8
2
+ require 'active_support/inflector'
3
+
4
+ # AttrEnumerable
5
+ module AttrEnumerable
6
+ # define each_xxx.
7
+ #
8
+ # xxx is attribute name.
9
+ # Class XxxxYyyys must have attributes xxxx_yyyys.
10
+ # xxxx_yyyys is collection of Class XxxxYyyy.
11
+ # XxxxYyyy has attributes.
12
+ def method_missing(method_name, *args, &block)
13
+ if method_name =~ /each_/
14
+ attribute = method_name.to_s.scan(/each_(.*)/).first.first
15
+ each_attr(attribute, &block)
16
+ else
17
+ super(method_name, *args, &block)
18
+ end
19
+ end
20
+
21
+ private
22
+ def each_attr(attribute, &block)
23
+ collection = self.instance_variable_get("@#{self.class.name.underscore}")
24
+ collection.each do |element|
25
+ super(method_name, *args) unless element.instance_variables.include? :"@#{attribute}"
26
+ yield element.send(attribute)
27
+ end
28
+ end
29
+ end
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Tbpgr Utilities
4
4
  module TbpgrUtils
5
- VERSION = '0.0.134'
5
+ VERSION = '0.0.135'
6
6
  end
@@ -0,0 +1,81 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+ require 'attr_enumerable'
4
+
5
+ describe AttrEnumerable do
6
+ context :each_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("suzuki", 103)
34
+ ]
35
+ ),
36
+ method: :each_name,
37
+ expected: ['tanaka', 'suzuki']
38
+ },
39
+ {
40
+ case_no: 2,
41
+ case_title: 'age case',
42
+ klass: AttrEnumerablePersons.new(
43
+ [
44
+ AttrEnumerablePerson.new("tanaka", 84),
45
+ AttrEnumerablePerson.new("suzuki", 103)
46
+ ]
47
+ ),
48
+ method: :each_age,
49
+ expected: [84, 103]
50
+ },
51
+ ]
52
+
53
+ cases.each do |c|
54
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
55
+ begin
56
+ case_before c
57
+
58
+ # -- given --
59
+ # nothing
60
+
61
+ # -- when --
62
+ ret = []
63
+ c[:klass].send c[:method] { |attribute| ret << attribute }
64
+
65
+ # -- then --
66
+ expect(ret).to eq(c[:expected])
67
+ ensure
68
+ case_after c
69
+ end
70
+ end
71
+
72
+ def case_before(c)
73
+ # implement each case before
74
+ end
75
+
76
+ def case_after(c)
77
+ # implement each case after
78
+ end
79
+ end
80
+ end
81
+ 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.134
4
+ version: 0.0.135
5
5
  platform: ruby
6
6
  authors:
7
7
  - tbpgr
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-21 00:00:00.000000000 Z
11
+ date: 2014-05-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -96,6 +96,7 @@ files:
96
96
  - LICENSE.txt
97
97
  - README.md
98
98
  - Rakefile
99
+ - lib/attr_enumerable.rb
99
100
  - lib/attributes_hashable.rb
100
101
  - lib/attributes_initializable.rb
101
102
  - lib/end_erb.rb
@@ -252,6 +253,7 @@ files:
252
253
  - lib/test_toolbox.rb
253
254
  - lib/test_toolbox/kernel.rb
254
255
  - rubocop-todo.yml
256
+ - spec/attr_enumerable_spec.rb
255
257
  - spec/attributes_hashable_spec.rb
256
258
  - spec/attributes_initializable_spec.rb
257
259
  - spec/eval_helper/attr_accessor_init_code_spec.rb
@@ -415,6 +417,7 @@ signing_key:
415
417
  specification_version: 4
416
418
  summary: Utilities
417
419
  test_files:
420
+ - spec/attr_enumerable_spec.rb
418
421
  - spec/attributes_hashable_spec.rb
419
422
  - spec/attributes_initializable_spec.rb
420
423
  - spec/eval_helper/attr_accessor_init_code_spec.rb