tbpgr_utils 0.0.139 → 0.0.140
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.
- checksums.yaml +4 -4
- data/README.md +34 -0
- data/lib/attr_enumerable/attr_enumerable_helper.rb +2 -1
- data/lib/attr_enumerable/concat_attr.rb +13 -0
- data/lib/attr_enumerable.rb +1 -0
- data/lib/tbpgr_utils/version.rb +1 -1
- data/spec/attr_enumerable/concat_attr_spec.rb +92 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 765fd5d72948e2ebe183d540b42c51911053357a
|
4
|
+
data.tar.gz: 74e3bfc5178ef209e400eb946577ee77816bf616
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 29c057f97725d17414dc89f8400e8962725bc056a3ff97b4c28bcbc659a3a1e544068e12109bad81b35ad3dd8b9d928e2553ff24fc7be838de40c4e2900288c7
|
7
|
+
data.tar.gz: 76d706c10d9e887373c3561214065681f99163a14ec8f8ed72fa7854edcd03060b525ff9a3dcba07ce0e6fdba5daea49456034703e0793c2af784cb621da549e
|
data/README.md
CHANGED
@@ -62,6 +62,7 @@ Or install it yourself as:
|
|
62
62
|
|[TbpgrUtils Array#uniq_size](#arrayuniq_size) |return uniq size |
|
63
63
|
|[AttrEnumerable.at_attr](#attrenumerableat_attr) |define at_xxx. it returns Class attributes(collection)'s at result. |
|
64
64
|
|[AttrEnumerable.compact_attr](#attrenumerablecompact_attr) |define compact_xxx. it returns Class attributes(collection)'s that exclude nil elements. |
|
65
|
+
|[AttrEnumerable.concat_attr](#attrenumerableconcat_attr) |define concat_xxx. it returns Class attributes(collection) and argument array |
|
65
66
|
|[AttrEnumerable.each_attr](#attrenumerableeach_attr) |define each_xxx. it call Class attributes(collection)'s attribute iterator |
|
66
67
|
|[AttrEnumerable.each_attr_with_index](#attrenumerableeach_attr_with_index) |define each_xxx_with_index. it call Class attributes(collection)'s attribute iterator with index |
|
67
68
|
|[AttrEnumerable.reverse_attr](#attrenumerablereverse_attr) |define reverse_xxx. it returns Class attributes(collection)'s reverse Array |
|
@@ -1172,6 +1173,38 @@ persons.compact_name 0 # => []
|
|
1172
1173
|
|
1173
1174
|
[back to list](#list)
|
1174
1175
|
|
1176
|
+
### AttrEnumerable.concat_attr
|
1177
|
+
~~~ruby
|
1178
|
+
require 'attr_enumerable'
|
1179
|
+
class Person
|
1180
|
+
attr_reader :name, :age
|
1181
|
+
def initialize(name, age)
|
1182
|
+
@name, @age = name, age
|
1183
|
+
end
|
1184
|
+
end
|
1185
|
+
|
1186
|
+
class Persons
|
1187
|
+
attr_reader :persons
|
1188
|
+
include AttrEnumerable
|
1189
|
+
def initialize(persons = [])
|
1190
|
+
@persons = persons
|
1191
|
+
end
|
1192
|
+
|
1193
|
+
def <<(person)
|
1194
|
+
@persons << person
|
1195
|
+
end
|
1196
|
+
end
|
1197
|
+
|
1198
|
+
persons = Persons.new([Person.new("tanaka", 84), Person.new(nil, 99), Person.new("suzuki", nil)])
|
1199
|
+
persons.concat_name(["sato", "matsumoto"]) # => ['tanaka', nil, 'suzuki', "sato", "matsumoto"]
|
1200
|
+
persons.concat_age([20, 1]) # => [84, 99, nil, 20, 1]
|
1201
|
+
|
1202
|
+
persons = Persons.new([])
|
1203
|
+
persons.concat_name(["sato", "matsumoto"]) # => ["sato", "matsumoto"]
|
1204
|
+
~~~
|
1205
|
+
|
1206
|
+
[back to list](#list)
|
1207
|
+
|
1175
1208
|
### AttrEnumerable.each_attr
|
1176
1209
|
~~~ruby
|
1177
1210
|
require 'attr_enumerable'
|
@@ -3973,6 +4006,7 @@ if you are Sublime Text2 user, you can use snippet for TbpgrUtils.
|
|
3973
4006
|
https://github.com/tbpgr/tbpgr_utils_snippets
|
3974
4007
|
|
3975
4008
|
## History
|
4009
|
+
* version 0.0.140 : add AttrEnumerable.concat_attr
|
3976
4010
|
* version 0.0.139 : add AttrEnumerable.compact_attr
|
3977
4011
|
* version 0.0.138 : add AttrEnumerable.at_attr
|
3978
4012
|
* version 0.0.137 : add AttrEnumerable.reverse_attr
|
@@ -8,7 +8,8 @@ module AttrEnumerable
|
|
8
8
|
{ regexp: /^each_(.*)$/, call_method: :each_attr },
|
9
9
|
{ regexp: /^reverse_(.*)$/, call_method: :reverse_attr },
|
10
10
|
{ regexp: /^at_(.*)$/, call_method: :at_attr },
|
11
|
-
{ regexp: /^compact_(.*)$/, call_method: :compact_attr }
|
11
|
+
{ regexp: /^compact_(.*)$/, call_method: :compact_attr },
|
12
|
+
{ regexp: /^concat_(.*)$/, call_method: :concat_attr }
|
12
13
|
]
|
13
14
|
|
14
15
|
# call attr enumerable method.
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'attr_enumerable/attr_enumerable_helper'
|
3
|
+
|
4
|
+
# AttrEnumerable
|
5
|
+
module AttrEnumerable
|
6
|
+
private
|
7
|
+
def concat_attr(attribute, method_name, *args, &block)
|
8
|
+
add_array = Array(*args)
|
9
|
+
return add_array if collection.empty?
|
10
|
+
super(method_name, *args) unless include_attr?(collection.first, attribute)
|
11
|
+
collection.map(&attribute.to_sym).concat(add_array)
|
12
|
+
end
|
13
|
+
end
|
data/lib/attr_enumerable.rb
CHANGED
data/lib/tbpgr_utils/version.rb
CHANGED
@@ -0,0 +1,92 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'attr_enumerable'
|
4
|
+
|
5
|
+
describe AttrEnumerable do
|
6
|
+
context :concat_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(nil, 99),
|
34
|
+
AttrEnumerablePerson.new('suzuki', nil)
|
35
|
+
]
|
36
|
+
),
|
37
|
+
method: :concat_name,
|
38
|
+
add_array: ['sato', 'matsumoto'],
|
39
|
+
expected: ['tanaka', nil, 'suzuki', 'sato', 'matsumoto']
|
40
|
+
},
|
41
|
+
{
|
42
|
+
case_no: 2,
|
43
|
+
case_title: 'age case',
|
44
|
+
klass: AttrEnumerablePersons.new(
|
45
|
+
[
|
46
|
+
AttrEnumerablePerson.new('tanaka', 84),
|
47
|
+
AttrEnumerablePerson.new(nil, 99),
|
48
|
+
AttrEnumerablePerson.new('suzuki', nil)
|
49
|
+
]
|
50
|
+
),
|
51
|
+
method: :concat_age,
|
52
|
+
add_array: [20, 1],
|
53
|
+
expected: [84, 99, nil, 20, 1]
|
54
|
+
},
|
55
|
+
{
|
56
|
+
case_no: 3,
|
57
|
+
case_title: 'empty case',
|
58
|
+
klass: AttrEnumerablePersons.new([]),
|
59
|
+
method: :concat_name,
|
60
|
+
add_array: ['sato', 'matsumoto'],
|
61
|
+
expected: ['sato', 'matsumoto']
|
62
|
+
}
|
63
|
+
]
|
64
|
+
|
65
|
+
cases.each do |c|
|
66
|
+
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
67
|
+
begin
|
68
|
+
case_before c
|
69
|
+
|
70
|
+
# -- given --
|
71
|
+
# nothing
|
72
|
+
|
73
|
+
# -- when --
|
74
|
+
actual = c[:klass].send c[:method], c[:add_array]
|
75
|
+
|
76
|
+
# -- then --
|
77
|
+
expect(actual).to eq(c[:expected])
|
78
|
+
ensure
|
79
|
+
case_after c
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def case_before(c)
|
84
|
+
# implement each case before
|
85
|
+
end
|
86
|
+
|
87
|
+
def case_after(c)
|
88
|
+
# implement each case after
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
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.
|
4
|
+
version: 0.0.140
|
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-
|
11
|
+
date: 2014-05-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -100,6 +100,7 @@ files:
|
|
100
100
|
- lib/attr_enumerable/at_attr.rb
|
101
101
|
- lib/attr_enumerable/attr_enumerable_helper.rb
|
102
102
|
- lib/attr_enumerable/compact_attr.rb
|
103
|
+
- lib/attr_enumerable/concat_attr.rb
|
103
104
|
- lib/attr_enumerable/each_attr.rb
|
104
105
|
- lib/attr_enumerable/each_attr_with_index.rb
|
105
106
|
- lib/attr_enumerable/reverse_attr.rb
|
@@ -261,6 +262,7 @@ files:
|
|
261
262
|
- rubocop-todo.yml
|
262
263
|
- spec/attr_enumerable/at_attr_spec.rb
|
263
264
|
- spec/attr_enumerable/compact_attr_spec.rb
|
265
|
+
- spec/attr_enumerable/concat_attr_spec.rb
|
264
266
|
- spec/attr_enumerable/each_attr_spec.rb
|
265
267
|
- spec/attr_enumerable/each_attr_with_index_spec.rb
|
266
268
|
- spec/attr_enumerable/reverse_attr_spec.rb
|
@@ -429,6 +431,7 @@ summary: Utilities
|
|
429
431
|
test_files:
|
430
432
|
- spec/attr_enumerable/at_attr_spec.rb
|
431
433
|
- spec/attr_enumerable/compact_attr_spec.rb
|
434
|
+
- spec/attr_enumerable/concat_attr_spec.rb
|
432
435
|
- spec/attr_enumerable/each_attr_spec.rb
|
433
436
|
- spec/attr_enumerable/each_attr_with_index_spec.rb
|
434
437
|
- spec/attr_enumerable/reverse_attr_spec.rb
|